summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 21:57:15 +0000
committerzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 21:57:15 +0000
commitb7a999fc50587bb0f2b3505f91d18a38cbee6dec (patch)
treec918a06b7016b35c22654204abee0fb21f4947a5
parentdfafce7d75ed2bdace26602ed5b8f3e4f4ab86b6 (diff)
downloadchromium_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.cc3
-rw-r--r--chrome/test/data/extensions/api_test/filesystem_handler/tab.html55
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);