[PWE] Register service worker on PWA launch 52/128552/4
authorPawel Niemirski <p.niemirski@samsung.com>
Wed, 10 May 2017 09:35:42 +0000 (11:35 +0200)
committerPawel Niemirski <p.niemirski@samsung.com>
Wed, 10 May 2017 11:51:06 +0000 (11:51 +0000)
Register service worker upon pwa startup. Pass service worker
param as shortcut param during pwa installation.

Bug: http://suprem.sec.samsung.net/jira/browse/RWASP-901

Original author: Marcin Niesluchowski

Change-Id: I476a61169d8e08a9449b8c94619091265b0aed67
Signed-off-by: Pawel Niemirski <p.niemirski@samsung.com>
services/SimpleUI/ProgressiveWebApp.cpp
services/SimpleUI/ProgressiveWebApp.h
services/SimpleUI/SimpleUI.cpp
services/WebEngineMin/WebEngineMin.cpp
services/WebEngineMin/WebEngineMin.h

index 8ad3e54acca5ca537f06dd7a2b67d6ff9b248546..870f0daf503f61155b35201178b9beea95b8d979 100755 (executable)
@@ -86,6 +86,11 @@ void ProgressiveWebApp::fillPWAstruct(const std::map<std::string, std::string> &
     it = pwaParametersMap.find("pwa_icon_src");
     if (it != pwaParametersMap.end())
         m_pwaInfoStruct.icon = it->second;
+#if PWE_SHUB
+    it = pwaParametersMap.find("pwa_serviceWorkerUri");
+    if (it != pwaParametersMap.end())
+        m_pwaInfoStruct.serviceWorkerUri = it->second;
+#endif
     it = pwaParametersMap.find("pwa_orientation");
     if (it != pwaParametersMap.end())
         m_pwaInfoStruct.orientation = std::stoi(it->second);
index bd7969e77b464b985fd1564b2837cc19ff0a2b88..eef6768ee47ebbd3ef92f39262d9fd0dc0fc4dbc 100755 (executable)
@@ -31,6 +31,9 @@ struct pwaInfo {
     std::string     name;
     std::string     shortName;
     std::string     icon;
+#if PWE_SHUB
+    std::string     serviceWorkerUri;
+#endif
     int             orientation; // needs to portrait-primary, portrait-secondary, landscape-primary, landscape-secondary.
     int             displayMode; // needs to fullscreen, standalone, minimal-ui, browser, and so on.
     int             themeColor;
index bfc167df01547770b6346e35ef599198c1b830eb..01e6a866410f78ccc1fb047a15af40cb67b9a1b2 100755 (executable)
@@ -1018,6 +1018,12 @@ void SimpleUI::connectPWASignals()
 
     m_webEngine->loadFinished.connect([this]{ this->m_splash_screen.hide(); });
     m_webEngine->rotatePrepared.connect([this]{ this->rotatePrepared(); });
+#if PWE_SHUB
+    m_webEngine->getPWAServiceWorkerURI.connect(
+        [this] { return m_pwa.getPWAinfo().serviceWorkerUri; });
+    m_webEngine->getPWAURI.connect(
+        [this] { return m_pwa.getPWAinfo().uri; });
+#endif
     m_webEngine->getPWAInstanceIDSignal.connect(
         [this] { return m_pushPwaData.getInstanceId(); });
     m_webEngine->getPWADataSignal.connect(
index a42ccc69b54bede599ddb6a822d84962c3a32de2..658ed13b87548e0dc9c2a160fdbdf7e8f7b33064 100755 (executable)
@@ -60,6 +60,15 @@ void WebEngineMin::_push_cb(const char *sender_id, const char* push_data, void*
     }
 }
 
+#if PWE_SHUB
+void WebEngineMin::_register_service_worker_result_cb(
+    Ewk_Context*, const char* scope_url, const char* script_url, Eina_Bool result, void*)
+{
+    BROWSER_LOGD("[PWE-SHUB][%s:%d] scope_url: %s, script_url: %s, result: %s",
+                 __PRETTY_FUNCTION__, __LINE__, scope_url, script_url, result ? "true" : "false");
+}
+#endif
+
 void WebEngineMin::init(Evas_Object* guiParent)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
@@ -75,6 +84,15 @@ void WebEngineMin::init(Evas_Object* guiParent)
     if (!pwaInstanceId.empty() && !pwaData.empty())
         ewk_context_send_push_message(m_ewkContext, (char*)pwaData.c_str());
 
+#if PWE_SHUB
+    auto pwaServiceWorkerURI = *getPWAServiceWorkerURI();
+    if (!pwaServiceWorkerURI.empty()) {
+        ewk_context_service_worker_register(
+            m_ewkContext, getPWAURI()->c_str(), pwaServiceWorkerURI.c_str(),
+            _register_service_worker_result_cb, this);
+    }
+#endif
+
     ewk_context_push_message_callback_set(m_ewkContext, _push_cb, this);
     evas_object_data_set(m_ewkView, "_container", this);
     evas_object_color_set(m_ewkView, 255, 255, 255, 255);
index d137dca06442692e47acf4a656a3dbeabfa48537..af81d106ca67ff0b71b62452694eddcb3731c17c 100755 (executable)
@@ -113,6 +113,10 @@ private:
     static void _load_finished(void * data, Evas_Object * obj, void * event_info);
     static void _rotate_prepared(void * data, Evas_Object * obj, void * event_info);
     static void _push_cb(const char *sender_id, const char *, void *data);
+#if PWE_SHUB
+    static void _register_service_worker_result_cb(Ewk_Context *context,
+        const char* scope_url, const char* script_url, Eina_Bool result, void* data);
+#endif
     static void __notification_reply_cb(void *data, Evas_Object *obj, void *event_info);
     static void __newWindowRequest(void *data, Evas_Object *, void*);
     static void __newWindowRequestUrl(void* data, Evas_Object*, void* out);