From: JongHeon Choi Date: Wed, 6 Jul 2016 02:49:24 +0000 (+0900) Subject: Skip plugin loading after application exit request X-Git-Tag: accepted/tizen/ivi/20160706.083148~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4f138c7a6ab86359c35cb8e2f230b94b05b99d83;p=platform%2Fframework%2Fweb%2Fcrosswalk-tizen.git Skip plugin loading after application exit request --- diff --git a/extensions/renderer/runtime_ipc_client.cc b/extensions/renderer/runtime_ipc_client.cc index 9353b5f..6b96828 100644 --- a/extensions/renderer/runtime_ipc_client.cc +++ b/extensions/renderer/runtime_ipc_client.cc @@ -15,6 +15,7 @@ */ #include "extensions/renderer/runtime_ipc_client.h" +#include "extensions/renderer/xwalk_extension_renderer_controller.h" #include "common/logger.h" #include "common/profiler.h" @@ -99,6 +100,12 @@ void RuntimeIPCClient::SendMessage(v8::Handle context, const std::string& id, const std::string& ref_id, const std::string& value) { + if (!strcmp(type.c_str(), "tizen://exit")) { + extensions::XWalkExtensionRendererController& controller = + extensions::XWalkExtensionRendererController::GetInstance(); + controller.exit_requested = true; + } + int routing_id = GetRoutingId(context); if (routing_id < 1) { LOGGER(ERROR) << "Invalid routing handle for IPC."; diff --git a/extensions/renderer/xwalk_extension_renderer_controller.cc b/extensions/renderer/xwalk_extension_renderer_controller.cc index 7a83325..7a50cbf 100755 --- a/extensions/renderer/xwalk_extension_renderer_controller.cc +++ b/extensions/renderer/xwalk_extension_renderer_controller.cc @@ -48,7 +48,8 @@ XWalkExtensionRendererController::GetInstance() { } XWalkExtensionRendererController::XWalkExtensionRendererController() - : extensions_client_(new XWalkExtensionClient()) { + : exit_requested(false), + extensions_client_(new XWalkExtensionClient()) { } XWalkExtensionRendererController::~XWalkExtensionRendererController() { @@ -57,6 +58,12 @@ XWalkExtensionRendererController::~XWalkExtensionRendererController() { void XWalkExtensionRendererController::DidCreateScriptContext( v8::Handle context) { SCOPE_PROFILE(); + + // Skip plugin loading after application exit request. + if (exit_requested) { + return; + } + XWalkModuleSystem* module_system = new XWalkModuleSystem(context); XWalkModuleSystem::SetModuleSystemInContext( std::unique_ptr(module_system), context); diff --git a/extensions/renderer/xwalk_extension_renderer_controller.h b/extensions/renderer/xwalk_extension_renderer_controller.h index 03370a7..62db3cd 100755 --- a/extensions/renderer/xwalk_extension_renderer_controller.h +++ b/extensions/renderer/xwalk_extension_renderer_controller.h @@ -28,6 +28,8 @@ class XWalkExtensionRendererController { void InitializeExtensionClient(); void LoadUserExtensions(const std::string app_path); + bool exit_requested; + private: XWalkExtensionRendererController(); virtual ~XWalkExtensionRendererController();