Start URI localized only once + localization fix
authorMarcin Kaminski <marcin.ka@samsung.com>
Fri, 26 Oct 2012 08:26:50 +0000 (10:26 +0200)
committerJihoon Chung <jihoon.chung@samsung.com>
Fri, 2 Nov 2012 07:14:18 +0000 (16:14 +0900)
[Issue#] N/A
[Problem] Duplicated start file localization.
After moving localization to WebProcess it is needed
to reload language tags (fix placed in
Bundle::didReceiveMessage)
[Cause] N/A
[Solution] Removed localization from UI process.

[Verification] Build and install package. Run
widget and check if it's localized properly
(with start file).

Change-Id: I4c39a577d6b4060a160f17b9a292a928f1c173ea

src/view/webkit/bundles/wrt-wk2-bundle.cpp
src/view/webkit/view_logic.cpp

index 7bd3143..5e1353d 100644 (file)
@@ -229,6 +229,7 @@ void Bundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody)
             LogError("Wrong message format received, ignoring");
             return;
         }
+
         auto msgString = toString(static_cast<WKStringRef>(messageBody));
         LogDebug("Got message text: " << msgString);
         LogDebug("loading Page : " << m_pagesList.back() <<
@@ -247,6 +248,37 @@ void Bundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody)
         ssMsg >> argTheme;
         ssMsg >> m_encrypted;
 
+        WrtDB::WidgetDAOReadOnly dao(m_widgetHandle);
+        /* 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();
+        LanguageTags tags = LanguageTagsProviderSingleton::Instance().getLanguageTags();
+        // check if default widget language exists in language's list
+        if (!!defaultLocale &&
+            std::find(tags.begin(), tags.end(), *defaultLocale) == tags.end())
+        {
+            if (tags.size() < 2) {
+                tags.push_front(*defaultLocale);
+            } else {
+                LanguageTags::iterator placeToInsert = tags.end();
+                --placeToInsert;
+                if (*placeToInsert != L"") { ++placeToInsert; }
+                tags.insert(placeToInsert, *defaultLocale);
+            }
+        }
+        LogDebug("Current widget locales (language tags):");
+        FOREACH(it, tags) {
+            LogDebug("Locale: " << *it);
+        }
+        LanguageTagsProviderSingleton::Instance().setLanguageTags(tags);
+        // ** Language tags setting completed **
+
         if (argScale != "null" && argScale[0] == '_')
         {
             argScale.erase(0, 1);
@@ -269,7 +301,6 @@ void Bundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody)
             m_theme = argTheme;
         }
 
-        WrtDB::WidgetDAOReadOnly dao(m_widgetHandle);
         m_widgetType = dao.getWidgetType();
         LogDebug("m_widgetType : " << m_widgetType.getApptypeToString() <<
                  "(m_widgetHandle:" << m_widgetHandle << ")");
@@ -876,24 +907,6 @@ std::string Bundle::DecryptResource(std::string resource, int size)
     return std::string();
 }
 
-namespace {
-static int LanguageChanged(void *)
-{
-    /* Language Tags reseting removed from this place
-     * as it's done in wrt-client before widget start page reload
-     * (see: languageChangedCallback() in wrt-client.cpp) */
-    return 0;
-}
-
-void Initialize()
-{
-    appcore_set_event_callback(
-        APPCORE_EVENT_LANG_CHANGE,
-        &LanguageChanged,
-        NULL);
-}
-
-}
 
 extern "C"
 {
@@ -902,7 +915,6 @@ extern "C"
                             WKTypeRef)
     {
         DPL::Log::LogSystemSingleton::Instance().SetTag("WRT-BUNDLE");
-        Initialize();
         LogDebug("Bundle initialized");
 
         static Bundle s_bundle = Bundle(bundle);
index 697d26b..7d6444a 100644 (file)
@@ -773,13 +773,9 @@ void ViewLogic::createEwkView()
 
 void ViewLogic::setStartPage()
 {
-    //TODO: actually this localization should be done in requestWillSend
-    //      callback, but Webkit2 denies access to local files if it detects
-    //      that first loaded file is not 'local' so it wan't work
-    DPL::OptionalString localizedUri = ViewModule::UriSupport::localizeURI(
-            DPL::FromUTF8String(m_startUrl.c_str()),
-            m_model);
-    m_currentUri = DPL::ToUTF8String(*localizedUri);
+    /* Start URI (as other uris) is now localized
+     * on WebProcess side */
+    m_currentUri = m_startUrl;
 }
 
 void ViewLogic::prepareEwkView(Evas_Object *wkView)