URL localization fix - ver 2
authorTomasz Iwanek <t.iwanek@samsung.com>
Fri, 5 Apr 2013 09:22:18 +0000 (11:22 +0200)
committerGerrit Code Review <gerrit2@kim11>
Wed, 24 Apr 2013 07:10:59 +0000 (16:10 +0900)
[Issue#]       N/A
[Bug]          webkit callbacks returns URL with query and fragment identifier for app:// scheme. It should be skipped for file resolution
[Cause]        N/A
[Solution]     Skipped part of URL for file path resolution and appendin it back
[Verification] Run widget that uses link with query part and fragment part. Page should be loaded when URL with fragment part is given. Use wrt with app:// scheme ENABLED

Change-Id: Ie71e2fe4f421165d2677f72e9ef21c69b0ad73d9

modules/localization/src/w3c_file_localization.cpp

index 85ac27e..152440e 100755 (executable)
@@ -141,6 +141,21 @@ DPL::Optional<DPL::String> getFilePathInWidgetPackageFromUrl(
 {
     DPL::String req = url;
 
+    DPL::String suffix;
+    DPL::String::size_type pos = req.find_first_of('#');
+    if(pos != DPL::String::npos)
+    {
+        suffix = req.substr(pos) + suffix;
+        req.resize(pos); //truncate fragment identifier
+    }
+
+    pos = req.find_first_of('?');
+    if(pos != DPL::String::npos)
+    {
+        suffix = req.substr(pos) + suffix;
+        req.resize(pos); //truncate query string
+    }
+
     if (req.find(WIDGET_URI_BEGIN) == 0) {
         req.erase(0, WIDGET_URI_BEGIN.length());
     } else if (req.find(FILE_URI_BEGIN) == 0) {
@@ -182,7 +197,7 @@ DPL::Optional<DPL::String> getFilePathInWidgetPackageFromUrl(
         return DPL::Optional<DPL::String>::Null;
     }
 
-    found = widgetPath + *found;
+    found = widgetPath + *found + suffix;
 
     return found;
 }