From 537f26ca558f544ae61be5f1ca66bf0114799f5b Mon Sep 17 00:00:00 2001 From: "ericu@chromium.org" Date: Mon, 6 Feb 2012 22:54:41 +0000 Subject: [PATCH] [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. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106856 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebKit/chromium/ChangeLog | 11 ++++ .../chromium/src/AsyncFileSystemChromium.cpp | 60 ++++++++++++++-------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/Source/WebKit/chromium/ChangeLog b/Source/WebKit/chromium/ChangeLog index 6235c0c..64430c0 100644 --- a/Source/WebKit/chromium/ChangeLog +++ b/Source/WebKit/chromium/ChangeLog @@ -1,3 +1,14 @@ +2012-02-06 Eric Uhrhane + + [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 [chromium] Support detaching TextureManager from ManagedTexture diff --git a/Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp b/Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp index 2871282..1f93cf9 100644 --- a/Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp +++ b/Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp @@ -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; } -- 2.7.4