Patch for PluginLogic pre-initializing.
authorTaejeong Lee <taejeong.lee@samsung.com>
Wed, 9 Jan 2013 04:53:55 +0000 (13:53 +0900)
committerTaejeong Lee <taejeong.lee@samsung.com>
Wed, 9 Jan 2013 07:48:03 +0000 (16:48 +0900)
  * This patch perform PluginLogic initializing before webkit loader starts working.
    The initializing includes a loading plugin so file.
    This work helps that webapp is launched more fast.

  * This commit must be merged with below.
    - https://tizendev.org/gerrit/#/c/28449/

[Issue#] N/A
[Problem] N/A
[Cause] N/A
[Solution] Patch for PluginLogic pre-initializing.
[SCMRequest] must be imported with wrt-plugins-common

Change-Id: I7941332d313c8c1b6c058c98bbd0347e7df66cf9

src/api_new/core_module.cpp
src/plugin-service/wrt_plugin_module.cpp
src/plugin-service/wrt_plugin_module.h
src/view/webkit/bundles/messages_names.h
src/view/webkit/bundles/plugin_module_support.cpp
src/view/webkit/bundles/plugin_module_support.h
src/view/webkit/bundles/wrt-wk2-bundle.cpp

index 86246a7..ee8c350 100644 (file)
@@ -35,6 +35,7 @@
 #include <widget_deserialize_model.h>
 #include <dpl/wrt-dao-ro/widget_dao_read_only.h>
 #include <dpl/wrt-dao-ro/global_dao_read_only.h>
+#include "webkit/bundles/plugin_module_support.h"
 
 #include <EWebKit2.h>
 
@@ -190,6 +191,8 @@ public:
     RunnableWidgetObjectPtr getRunnableWidgetObject(
             const std::string& tizenId)
     {
+        PluginModuleSupport::init(m_ewkContext, tizenId);
+
         try {
             RunnableWidgetObjectPtr runnable;
             WidgetModelPtr model = Domain::deserializeWidgetModel(tizenId);
index 7260dd9..600e5fa 100644 (file)
 
 namespace PluginModule {
 
+void init(int widgetHandle)
+{
+    LogDebug("initializing plugins module");
+    PluginLogicSingleton::Instance().initSession(widgetHandle);
+}
+
 void start(int widgetHandle,
            JSGlobalContextRef context,
            double scale,
index f4a1b0e..0203ac7 100644 (file)
@@ -34,6 +34,7 @@ extern "C" {
 namespace PluginModule {
 
 //forward declaration
+void init(int widgetHandle);
 void start(int widgetHandle,
            JSGlobalContextRef context,
            double scale,
index 6200174..2847e84 100644 (file)
@@ -21,6 +21,8 @@
  */
 
 namespace BundleMessages {
+const char * const INIT = "PluginModule::init";
+
 const char * const START = "PluginModule::start";
 const char * const SHUTDOWN = "PluginModule::shutdown";
 
index 828cb51..1c56cb8 100644 (file)
 
 namespace PluginModuleSupport {
 
+void init(Ewk_Context* ewkContext, const std::string& tizenId)
+{
+    const char* name = BundleMessages::INIT;
+    const char* msg = tizenId.c_str();
+
+    ewk_context_message_post_to_injected_bundle(ewkContext, name, msg);
+}
+
 void start(Ewk_Context* ewkContext,
            const DPL::String& tizenId,
            double scale,
index b2e595a..4889645 100644 (file)
@@ -27,6 +27,8 @@
 #include <js_overlay_types.h>
 
 namespace PluginModuleSupport {
+void init(Ewk_Context* ewkContext,
+          const std::string& tizenId);
 void start(Ewk_Context* ewkContext,
            const DPL::String& tizenId,
            double scale,
index c43b574..ddd37b7 100644 (file)
@@ -253,32 +253,8 @@ void Bundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody)
         ssMsg >> argTheme;
         ssMsg >> m_encrypted;
 
-        WrtDB::WidgetDAOReadOnly dao(m_widgetTizenId);
-        /* This type of message is received when widget is restarting
-         * (proably in other situation too). Widget restart can be
-         * called after system language change so language tags have to
-         * be recreated here.
-         * Do NOT MOVE LanguageTags reset before m_widgetHandle initialization
-         */
-        // reset language tags (create new tags based on system locales)
-        LanguageTagsProviderSingleton::Instance().resetLanguageTags();
-        DPL::OptionalString defaultLocale = dao.getDefaultlocale();
-        if(!defaultLocale.IsNull())
-        {
-            LanguageTagsProviderSingleton::Instance().addWidgetDefaultLocales(*defaultLocale);
-        }
-        LanguageTags tags = LanguageTagsProviderSingleton::Instance().getLanguageTags();
-        LogDebug("Current widget locales (language tags):");
-        FOREACH(it, tags) {
-            LogDebug("Locale: " << *it);
-        }
-
         // ** Language tags setting completed **
         fixWKMessageArgs(argScale, argEncodedBundle, argTheme);
-
-        m_widgetType = dao.getWidgetType();
-        LogDebug("m_widgetType : " << m_widgetType.getApptypeToString() <<
-                 "(m_widgetTizenId:" << m_widgetTizenId << ")");
     }
     else if (WKStringIsEqualToUTF8CString(messageName,
                                           BundleMessages::SHUTDOWN))
@@ -369,6 +345,43 @@ void Bundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody)
             delete static_cast<SoftKeyboardChangeArgs *>(args);
         }
     }
+    else if (WKStringIsEqualToUTF8CString(
+             messageName,
+             BundleMessages::INIT))
+    {
+        LogDebug("initializing plugins");
+        auto msgString = toString(static_cast<WKStringRef>(messageBody));
+
+        m_widgetTizenId = DPL::FromASCIIString(msgString);
+
+        WrtDB::WidgetDAOReadOnly dao(m_widgetTizenId);
+        /* This type of message is received when widget is restarting
+         * (proably in other situation too). Widget restart can be
+         * called after system language change so language tags have to
+         * be recreated here.
+         * Do NOT MOVE LanguageTags reset before m_widgetHandle initialization
+         */
+        // reset language tags (create new tags based on system locales)
+        LanguageTagsProviderSingleton::Instance().resetLanguageTags();
+        DPL::OptionalString defaultLocale = dao.getDefaultlocale();
+        if(!defaultLocale.IsNull())
+        {
+            LanguageTagsProviderSingleton::Instance().addWidgetDefaultLocales(*defaultLocale);
+        }
+        LanguageTags tags = LanguageTagsProviderSingleton::Instance().getLanguageTags();
+        LogDebug("Current widget locales (language tags):");
+        FOREACH(it, tags) {
+            LogDebug("Locale: " << *it);
+        }
+
+        m_widgetType = dao.getWidgetType();
+        LogDebug("m_widgetType : " << m_widgetType.getApptypeToString() <<
+                 "(m_widgetTizenId:" << m_widgetTizenId << ")");
+
+        LogDebug("Preload PluginLogicSingleton");
+        PluginModule::init(WrtDB::WidgetDAOReadOnly::getHandle(m_widgetTizenId));
+        LogDebug("Preload PluginLogicSingleton_end");
+    }
 }
 
 WKURLRequestRef Bundle::willSendRequestForFrameCallback(