Skip plugin loading after application exit request
authorJongHeon Choi <j-h.choi@samsung.com>
Wed, 6 Jul 2016 02:49:24 +0000 (11:49 +0900)
committerJongHeon Choi <j-h.choi@samsung.com>
Wed, 6 Jul 2016 02:49:33 +0000 (11:49 +0900)
extensions/renderer/runtime_ipc_client.cc
extensions/renderer/xwalk_extension_renderer_controller.cc
extensions/renderer/xwalk_extension_renderer_controller.h

index 9353b5f..6b96828 100644 (file)
@@ -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<v8::Context> 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.";
index 7a83325..7a50cbf 100755 (executable)
@@ -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<v8::Context> 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<XWalkModuleSystem>(module_system), context);
index 03370a7..62db3cd 100755 (executable)
@@ -28,6 +28,8 @@ class XWalkExtensionRendererController {
   void InitializeExtensionClient();
   void LoadUserExtensions(const std::string app_path);
 
+  bool exit_requested;
+
  private:
   XWalkExtensionRendererController();
   virtual ~XWalkExtensionRendererController();