Fixed extensions initialize in single process mode
authorJongHeon Choi <j-h.choi@samsung.com>
Tue, 19 Apr 2016 06:05:19 +0000 (15:05 +0900)
committerJongHeon Choi <j-h.choi@samsung.com>
Tue, 26 Apr 2016 02:02:03 +0000 (11:02 +0900)
extensions/renderer/xwalk_extension_renderer_controller.cc
extensions/renderer/xwalk_extension_renderer_controller.h
runtime/renderer/injected_bundle.cc

index 71230a4..6e570aa 100644 (file)
@@ -44,7 +44,8 @@ XWalkExtensionRendererController::GetInstance() {
 }
 
 XWalkExtensionRendererController::XWalkExtensionRendererController()
-    : extensions_client_(new XWalkExtensionClient()) {
+    : initialized_(false),
+      extensions_client_(new XWalkExtensionClient()) {
 }
 
 XWalkExtensionRendererController::~XWalkExtensionRendererController() {
@@ -78,7 +79,12 @@ void XWalkExtensionRendererController::WillReleaseScriptContext(
 }
 
 void XWalkExtensionRendererController::InitializeExtensions() {
+  if (initialized_) {
+    LOGGER(DEBUG) << "already initialized";
+    return;
+  }
   extensions_client_->Initialize();
+  initialized_ = true;
 }
 
 }  // namespace extensions
index 37f2863..ac7d295 100644 (file)
@@ -28,6 +28,7 @@ class XWalkExtensionRendererController {
   virtual ~XWalkExtensionRendererController();
 
  private:
+  bool initialized_;
   std::unique_ptr<XWalkExtensionClient> extensions_client_;
 };
 
index c8177d5..0abd02d 100755 (executable)
@@ -106,6 +106,12 @@ extern "C" void DynamicSetWidgetInfo(const char* tizen_id) {
   SCOPE_PROFILE();
   LOGGER(DEBUG) << "InjectedBundle::DynamicSetWidgetInfo !!" << tizen_id;
   ecore_init();
+
+  STEP_PROFILE_START("Initialize XWalkExtensionRendererController");
+  auto& controller = extensions::XWalkExtensionRendererController::GetInstance();
+  controller.InitializeExtensions();
+  STEP_PROFILE_END("Initialize XWalkExtensionRendererController");
+
   runtime::BundleGlobalData::GetInstance()->Initialize(tizen_id);
 }
 
@@ -151,6 +157,8 @@ extern "C" void DynamicPluginStopSession(
 
 extern "C" void DynamicUrlParsing(
     std::string* old_url, std::string* new_url, const char* /*tizen_id*/) {
+  SCOPE_PROFILE();
+
   auto res_manager =
       runtime::BundleGlobalData::GetInstance()->resource_manager();
   if (res_manager == NULL) {