diff options
author | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-12 21:57:15 +0000 |
---|---|---|
committer | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-12 21:57:15 +0000 |
commit | b7a999fc50587bb0f2b3505f91d18a38cbee6dec (patch) | |
tree | c918a06b7016b35c22654204abee0fb21f4947a5 | |
parent | dfafce7d75ed2bdace26602ed5b8f3e4f4ab86b6 (diff) | |
download | chromium_src-b7a999fc50587bb0f2b3505f91d18a38cbee6dec.zip chromium_src-b7a999fc50587bb0f2b3505f91d18a38cbee6dec.tar.gz chromium_src-b7a999fc50587bb0f2b3505f91d18a38cbee6dec.tar.bz2 |
Merge 85185 - Fixed generating of urls of the local file system entries.
BUG=chromium-os:15256
TEST=added new test cases that utilize Entry.toURL() to FileSystemExtensionApiTest.FileBrowserTest
Review URL: http://codereview.chromium.org/7015023
TBR=zelidrag@chromium.org
Review URL: http://codereview.chromium.org/7012023
git-svn-id: svn://svn.chromium.org/chrome/branches/742/src@85198 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_file_browser_private_api.cc | 3 | ||||
-rw-r--r-- | chrome/test/data/extensions/api_test/filesystem_handler/tab.html | 55 |
2 files changed, 47 insertions, 11 deletions
diff --git a/chrome/browser/extensions/extension_file_browser_private_api.cc b/chrome/browser/extensions/extension_file_browser_private_api.cc index bff14a5..80073b4 100644 --- a/chrome/browser/extensions/extension_file_browser_private_api.cc +++ b/chrome/browser/extensions/extension_file_browser_private_api.cc @@ -613,7 +613,8 @@ class ExecuteTasksFileSystemCallbackDispatcher GURL base_url = fileapi::GetFileSystemRootURI(target_origin_url, fileapi::kFileSystemTypeExternal); *target_file_url = GURL(base_url.spec() + virtual_path.value()); - *file_path = virtual_path; + FilePath root(FILE_PATH_LITERAL("/")); + *file_path = root.Append(virtual_path); *is_directory = file_info.is_directory; return true; } diff --git a/chrome/test/data/extensions/api_test/filesystem_handler/tab.html b/chrome/test/data/extensions/api_test/filesystem_handler/tab.html index 110146d..f4c7a08 100644 --- a/chrome/test/data/extensions/api_test/filesystem_handler/tab.html +++ b/chrome/test/data/extensions/api_test/filesystem_handler/tab.html @@ -12,6 +12,11 @@ This extension is a file intent handler and does the following during the test: // The ID of the extension we want to talk to. var fileBrowserExtensionId = "ddammdhioacbehjngdmkjcjbnfginlla"; +// Passed file entry url. +var entryUrl = null; +// Expected file content. +var expectedContent = null; + function errorCallback(e) { var msg = ''; if (!e.code) { @@ -38,28 +43,58 @@ function errorCallback(e) { break; }; } - chrome.test.fail("Got unexpected error: " + msg); + chrome.extension.sendRequest(fileBrowserExtensionId, + {fileContent: null, + error: "Handler file error: " + msg}, + function(response) {}); +} + +function onGotEntryByUrl(entry) { + console.log('Got entry by URL: ' + entry.toURL()); + var reader = new FileReader(); + reader.onloadend = function(e) { + if (reader.result != expectedContent) { + chrome.extension.sendRequest( + fileBrowserExtensionId, + {fileContent: null, error: "File content does not match."}, + function(response) {}); + } else { + // Send data back to the file browser extension + chrome.extension.sendRequest( + fileBrowserExtensionId, + {fileContent: reader.result, error: null}, + function(response) {}); + } + }; + reader.onerror = errorCallback; + entry.file(function(file) { + reader.readAsText(file); + }); +} + +function readEntryByUrl() { + window.webkitResolveLocalFileSystemURL(entryUrl, onGotEntryByUrl, + errorCallback); } chrome.test.runTests([function tab() { var entries = chrome.extension.getBackgroundPage().getLastFileEntries(); if (!entries || entries.length != 1 || !entries[0]) { - chrome.extension.sendRequest(fileBrowserExtensionId, - {fileContent: null, - error: "Invalid file entries."}, - function(response) {}); + chrome.extension.sendRequest( + fileBrowserExtensionId, + {fileContent: null, error: "Invalid file entries."}, + function(response) {}); return; } var entry = entries[0]; var reader = new FileReader(); + entryUrl = entry.toURL(); reader.onloadend = function(e) { var content = document.getElementById('content'); content.innerHTML = reader.result; - // Send data back to the file browser extension - chrome.extension.sendRequest(fileBrowserExtensionId, - {fileContent: reader.result, error: null}, - function(response) {}); - } + expectedContent = reader.result; + readEntryByUrl(); + }; reader.onerror = errorCallback; entry.file(function(file) { reader.readAsText(file); |