[filesystem/Chromium] crackFileSystemURL needs to use innerURL
authorericu@chromium.org <ericu@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 6 Feb 2012 22:54:41 +0000 (22:54 +0000)
committerericu@chromium.org <ericu@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 6 Feb 2012 22:54:41 +0000 (22:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=77881

Reviewed by Adam Barth.

* src/AsyncFileSystemChromium.cpp:
(WebCore::AsyncFileSystem::crackFileSystemURL):
Add the new code path, taken only if innerURL is present.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106856 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp

index 6235c0c..64430c0 100644 (file)
@@ -1,3 +1,14 @@
+2012-02-06  Eric Uhrhane  <ericu@chromium.org>
+
+        [filesystem/Chromium] crackFileSystemURL needs to use innerURL
+        https://bugs.webkit.org/show_bug.cgi?id=77881
+
+        Reviewed by Adam Barth.
+
+        * src/AsyncFileSystemChromium.cpp:
+        (WebCore::AsyncFileSystem::crackFileSystemURL):
+        Add the new code path, taken only if innerURL is present.
+
 2012-02-03  James Robinson  <jamesr@chromium.org>
 
         [chromium] Support detaching TextureManager from ManagedTexture
index 2871282..1f93cf9 100644 (file)
@@ -63,28 +63,44 @@ bool AsyncFileSystem::crackFileSystemURL(const KURL& url, AsyncFileSystem::Type&
     if (!url.protocolIs("filesystem"))
         return false;
 
-    KURL originURL(ParsedURLString, url.path());
-    String path = decodeURLEscapeSequences(originURL.path());
-    if (path.isEmpty() || path[0] != '/')
-        return false;
-    path = path.substring(1);
-
-    if (path.startsWith(temporaryPathPrefix)) {
-        type = Temporary;
-        path = path.substring(temporaryPathPrefixLength);
-    } else if (path.startsWith(persistentPathPrefix)) {
-        type = Persistent;
-        path = path.substring(persistentPathPrefixLength);
-    } else if (path.startsWith(externalPathPrefix)) {
-        type = externalType;
-        path = path.substring(externalPathPrefixLength);
-    } else
-        return false;
-
-    if (path.isEmpty() || path[0] != '/')
-        return false;
-
-    filePath.swap(path);
+    if (url.innerURL()) {
+        String typeString = url.innerURL()->path().substring(1);
+        if (typeString == temporaryPathPrefix)
+            type = Temporary;
+        else if (typeString == persistentPathPrefix)
+            type = Persistent;
+        else if (typeString == externalPathPrefix)
+            type = externalType;
+        else
+            return false;
+
+        filePath = decodeURLEscapeSequences(url.path());
+    } else {
+        // FIXME: Remove this clause once http://codereview.chromium.org/7811006
+        // lands, which makes this dead code.
+        KURL originURL(ParsedURLString, url.path());
+        String path = decodeURLEscapeSequences(originURL.path());
+        if (path.isEmpty() || path[0] != '/')
+            return false;
+        path = path.substring(1);
+
+        if (path.startsWith(temporaryPathPrefix)) {
+            type = Temporary;
+            path = path.substring(temporaryPathPrefixLength);
+        } else if (path.startsWith(persistentPathPrefix)) {
+            type = Persistent;
+            path = path.substring(persistentPathPrefixLength);
+        } else if (path.startsWith(externalPathPrefix)) {
+            type = externalType;
+            path = path.substring(externalPathPrefixLength);
+        } else
+            return false;
+
+        if (path.isEmpty() || path[0] != '/')
+            return false;
+
+        filePath.swap(path);
+    }
     return true;
 }