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

Side by Side Diff: chrome/test/data/extensions/api_test/filebrowser_component/main.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 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /*
6 This component extension test does the following:
7
8 1. Creates a txt file on the local file system with some random text.
9 2. Finds a registered task (file item context menu) and invokes it with url
10 of the test file.
11 3. Listens for a message from context menu handler and makes sure its payload
12 matches the random text from the test file.
13 */
14
15 // The ID of this extension.
16 var fileBrowserExtensionId = "ddammdhioacbehjngdmkjcjbnfginlla";
17
18 var fileSystem = null;
19 var testDirName = "tmp/test_dir_" + Math.floor(Math.random()*10000);
20 var testFileName = "test_file_" + Math.floor(Math.random()*10000)+".Txt";
21 var fileUrl = "filesystem:chrome-extension://" + fileBrowserExtensionId +
22 "/external/" + testDirName + "/" + testFileName;
23 var testDirectory = null;
24 var randomText = "random file text " + Math.floor(Math.random()*10000);
25
26 function onFileSystemFetched(fs) {
27 if (!fs) {
28 errorCallback(chrome.extensions.lastError);
29 return;
30 }
31 fileSystem = fs;
32 console.log("DONE requesting local filesystem: " + fileSystem.name);
33 console.log("Creating directory : " + testDirName);
34 fileSystem.root.getDirectory(testDirName, {create:true},
35 directoryCreateCallback, errorCallback);
36 }
37
38 function directoryCreateCallback(directory) {
39 testDirectory = directory;
40 console.log("DONE creating directory: " + directory.fullPath);
41 directory.getFile(testFileName, {create:true}, fileCreatedCallback,
42 errorCallback);
43 }
44
45 function fileCreatedCallback(fileEntry) {
46 console.log("DONE creating file: " + fileEntry.fullPath);
47 fileEntry.createWriter(onGetFileWriter);
48 }
49
50 function onGetFileWriter(writer) {
51 // Start
52 console.log("Got file writer");
53 writer.onerror = errorCallback;
54 writer.onwrite = onFileWriteCompleted;
55 var bb = new WebKitBlobBuilder();
56 bb.append(randomText);
57 writer.write(bb.getBlob('text/plain'));
58 }
59
60 function onFileWriteCompleted(e) {
61 // Start
62 console.log("DONE writing file content");
63 console.log("Get registered tasks now...");
64 chrome.fileBrowserPrivate.getFileTasks([fileUrl], onGetTasks);
65
66 }
67
68 function onGetTasks(tasks) {
69 console.log("Tasks: ");
70 console.log(tasks);
71 if (!tasks || !tasks.length) {
72 chrome.test.fail("No tasks registered");
73 return;
74 }
75
76 var expected_tasks = {'TextAction': ['filesystem:*.txt'],
77 'BaseAction': ['filesystem:*', 'filesystem:*.*']};
78
79 console.log("DONE fetching " + tasks.length + " tasks");
80
81 if (tasks.length != 2)
82 chrome.test.fail('Wrong number of tasks found.');
83
84 for (var i = 0; i < tasks.length; ++i) {
85 var task_name = /^.*[|](\w+)$/.exec(tasks[i].taskId)[1];
86 var patterns = tasks[i].patterns;
87 var expected_patterns = expected_tasks[task_name];
88 if (!expected_patterns)
89 chrome.test.fail('Wrong task from getFileTasks(): ' + task_name);
90 patterns = patterns.sort();
91 expected_patterns = expected_patterns.sort();
92 for (var j = 0; j < patterns.length; ++j) {
93 if (patterns[j] != expected_patterns[j])
94 chrome.test.fail('Wrong patterns set for task ' + task_name + '. ' +
95 'Got: ' + patterns +
96 ' expected: ' + expected_patterns);
97 }
98 }
99
100 chrome.fileBrowserPrivate.executeTask(tasks[0].taskId, [fileUrl]);
101 }
102
103 function errorCallback(e) {
104 var msg = '';
105 if (!e.code) {
106 msg = e.message;
107 } else {
108 switch (e.code) {
109 case FileError.QUOTA_EXCEEDED_ERR:
110 msg = 'QUOTA_EXCEEDED_ERR';
111 break;
112 case FileError.NOT_FOUND_ERR:
113 msg = 'NOT_FOUND_ERR';
114 break;
115 case FileError.SECURITY_ERR:
116 msg = 'SECURITY_ERR';
117 break;
118 case FileError.INVALID_MODIFICATION_ERR:
119 msg = 'INVALID_MODIFICATION_ERR';
120 break;
121 case FileError.INVALID_STATE_ERR:
122 msg = 'INVALID_STATE_ERR';
123 break;
124 default:
125 msg = 'Unknown Error';
126 break;
127 };
128 }
129 chrome.test.fail("Got unexpected error: " + msg);
130 console.log('Error: ' + msg);
131 alert('Error: ' + msg);
132 }
133
134 function onCleanupFinished(entry) {
135 chrome.test.succeed();
136 }
137
138 // For simple requests:
139 chrome.extension.onRequestExternal.addListener(
140 function(request, sender, sendResponse) {
141 if (request.fileContent && request.fileContent == randomText) {
142 sendResponse({success: true});
143 testDirectory.removeRecursively(onCleanupFinished, errorCallback);
144 } else {
145 sendResponse({success: false});
146 console.log('Error message received');
147 console.log(request);
148 chrome.test.fail("Got error: " + request.error);
149 }
150 });
151
152 chrome.test.runTests([function tab() {
153 // Get local FS, create dir with a file in it.
154 console.log("Requesting local file system...");
155 chrome.fileBrowserPrivate.requestLocalFileSystem(onFileSystemFetched);
156 }]);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698