From: Pawel Niemirski Date: Wed, 28 Jun 2017 10:11:50 +0000 (+0200) Subject: Register service worker on PWA launch X-Git-Tag: submit/tizen/20170630.022418^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=10cdfc656c2adc296461a5ab703286b8bb2b0a14;p=platform%2Fframework%2Fweb%2Fcrosswalk-tizen.git Register service worker on PWA launch Start the registration if config.xml has following metadata: Bug: http://suprem.sec.samsung.net/jira/browse/RWASP-1583 Change-Id: I9ada897e7b654b4a72596935b3d6dc4a53ce13c8 Signed-off-by: Pawel Niemirski --- diff --git a/runtime/browser/web_application.cc b/runtime/browser/web_application.cc index b8a95bc3d..4caa49504 100755 --- a/runtime/browser/web_application.cc +++ b/runtime/browser/web_application.cc @@ -151,6 +151,8 @@ const char *kEdjeHideProgressSignal = "hide,progress,signal"; const std::string kViewmodeTypeFullscreen = "fullscreen"; const std::string kViewmodeTypeWindowed = "windowed"; +const char* const kServiceWorkerConfigKey = "service-worker-url"; + // Looking for added privilege by Application developer in config.xml. bool FindPrivilegeFromConfig(common::ApplicationData* app_data, const std::string& privilege) { @@ -282,6 +284,16 @@ static bool ProcessWellKnownScheme(const std::string& url) { return true; } +void OnDidRegisterServiceWorkerCb(Ewk_Context*, const char*, const char*, + Eina_Bool result, void*) { + if (result) { + LOGGER(DEBUG) << "Service-worker has been registered successfully"; + } else { + LOGGER(DEBUG) << + "An unexpected error has occurred during service-worker registeration"; + } +} + } // namespace std::vector ParseTizenVersion(const std::string& tizen_string) { @@ -530,6 +542,15 @@ void WebApplication::Launch(std::unique_ptr appcontrol) { resource_manager_->GetStartResource(appcontrol.get()); view->SetDefaultEncoding(res->encoding()); + if (app_data_->meta_data_info().get() && + app_data_->meta_data_info()->HasKey(kServiceWorkerConfigKey)) { + std::string service_worker_url = + app_data_->meta_data_info()->GetValue(kServiceWorkerConfigKey); + ewk_context_service_worker_register(ewk_context_, res->uri().c_str(), + service_worker_url.c_str(), + OnDidRegisterServiceWorkerCb, this); + } + STEP_PROFILE_END("OnCreate -> URL Set"); STEP_PROFILE_START("URL Set -> Rendered");