evas_object_smart_callback_add(m_ewkView, "notification,permission,reply", __notification_reply_cb, this);
ewk_view_did_change_theme_color_callback_set(m_ewkView, __theme_color_changed, this);
+#if PWE_SHUB
+ ewk_view_app_installation_request_callback_set(m_ewkView, __install_pwa_request_cb, this);
+#endif
}
void WebView::unregisterCallbacks()
m_manifestVector.clear();
}
-void WebView::setPWAData()
+void WebView::setPWAData(const std::string& serviceWorkerURL)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
s_name = m_manifestData.name;
+ "&pwa_icon_count=" + std::to_string(m_manifestData.icons_count)
+ "&pwa_icon_src=" + std::string(text = curl_easy_escape(curl,
m_manifestData.icons.begin()->src.c_str(), m_manifestData.icons.begin()->src.length()));
+#if PWE_SHUB
+ if (!serviceWorkerURL.empty())
+ retVal += "&pwa_serviceWorkerUri=" + serviceWorkerURL;
+#endif
curl_free(text);
curl_easy_cleanup(curl);
ewk_policy_decision_use(policy_decision);
}
+#if PWE_SHUB
+void WebView::__install_pwa_request_cb(Evas_Object* ewk_view, Ewk_App_Installation_Request* request, void* user_data)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ auto webView = static_cast<WebView*>(user_data);
+ Ewk_View_Request_Manifest* manifest = ewk_app_installation_request_manifest_get(request);
+ webView->__setManifestData(ewk_view, manifest, user_data);
+ const char* tmp = ewk_app_installation_request_service_worker_url_get(request);
+ std::string serviceWorkerURL = (tmp) ? tmp : "";
+ // Trigger installation
+ webView->setPWAData(serviceWorkerURL);
+}
+#endif
+
} /* namespace webengine_service */
} /* end of basic_webengine */
} /* end of tizen_browser */
void handleManifest();
void addManifestTypeToHandle(const ManifestType &type) { m_manifestVector.push_back(type); }
- void setPWAData();
+ void setPWAData(const std::string& serviceWorkerURL = "");
+
void request_file_download(const std::string& uri, const std::string& file_path, download_finish_callback cb, void *data);
struct download_request
// Screenshot capture
static void __screenshotCaptured(Evas_Object* image, void* user_data);
+#if PWE_SHUB
+ static void __install_pwa_request_cb(Evas_Object* /*ewk_view*/, Ewk_App_Installation_Request* request, void* user_data);
+#endif
+
Evas_Object * m_parent;
TabId m_tabId;
Evas_Object * m_ewkView;