Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Unified Diff: chrome/test/data/extensions/api_test/filesystem_handler/tab.js

Issue 8758008: Move another block of extension tests to manifest_version 2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/filesystem_handler/tab.js
===================================================================
--- chrome/test/data/extensions/api_test/filesystem_handler/tab.js (revision 0)
+++ chrome/test/data/extensions/api_test/filesystem_handler/tab.js (revision 0)
@@ -0,0 +1,107 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/*
+This extension is a file intent handler and does the following during the test:
+
+1. Its background page first registers content hander.
+2. When content handler callback is invoked, opens tab.html page and passes
+ file url via hash ref.
+3. Tries to resolve target file url and reads its content.
+4. Send file content to file browser extension.
+*/
+
+// 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) {
+ msg = e.message;
+ } else {
+ switch (e.code) {
+ case FileError.QUOTA_EXCEEDED_ERR:
+ msg = 'QUOTA_EXCEEDED_ERR';
+ break;
+ case FileError.NOT_FOUND_ERR:
+ msg = 'NOT_FOUND_ERR';
+ break;
+ case FileError.SECURITY_ERR:
+ msg = 'SECURITY_ERR';
+ break;
+ case FileError.INVALID_MODIFICATION_ERR:
+ msg = 'INVALID_MODIFICATION_ERR';
+ break;
+ case FileError.INVALID_STATE_ERR:
+ msg = 'INVALID_STATE_ERR';
+ break;
+ default:
+ msg = 'Unknown Error';
+ break;
+ };
+ }
+ 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);
+}
+
+function onTabLoaded() {
+ 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) {});
+ 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;
+ expectedContent = reader.result;
+ readEntryByUrl();
+ };
+ reader.onerror = errorCallback;
+ entry.file(function(file) {
+ reader.readAsText(file);
+ });
+}
+
+window.addEventListener("load", onTabLoaded, false);

Powered by Google App Engine
This is Rietveld 408576698