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

Side by Side Diff: chrome/test/data/extensions/api_test/file_system_provider/mime_type/test.js

Issue 374543002: [fsp] Simplify browser tests by extracting the common code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed. Created 6 years, 5 months 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 /** 7 /**
8 * @type {DOMFileSystem} 8 * @type {DOMFileSystem}
9 */ 9 */
10 var fileSystem = null; 10 var fileSystem = null;
11 11
12 /** 12 /**
13 * @type {string} 13 * @type {string}
14 * @const 14 * @const
15 */ 15 */
16 var FILE_SYSTEM_ID = 'vanilla';
17
18 /**
19 * @type {string}
20 * @const
21 */
22 var TESTING_MIME_TYPE = 'text/secret-testing-mime-type'; 16 var TESTING_MIME_TYPE = 'text/secret-testing-mime-type';
23 17
24 /** 18 /**
25 * @type {Object} 19 * @type {Object}
26 * @const 20 * @const
27 */ 21 */
28 var TESTING_ROOT = Object.freeze({ 22 var TESTING_ROOT = Object.freeze({
29 isDirectory: true, 23 isDirectory: true,
30 name: '', 24 name: '',
31 size: 0, 25 size: 0,
(...skipping 17 matching lines...) Expand all
49 * @const 43 * @const
50 */ 44 */
51 var TESTING_WITHOUT_MIME_FILE = Object.freeze({ 45 var TESTING_WITHOUT_MIME_FILE = Object.freeze({
52 isDirectory: false, 46 isDirectory: false,
53 name: 'second-file.abc', 47 name: 'second-file.abc',
54 size: 4096, 48 size: 4096,
55 modificationTime: new Date(2014, 4, 28, 10, 39, 15) 49 modificationTime: new Date(2014, 4, 28, 10, 39, 15)
56 }); 50 });
57 51
58 /** 52 /**
59 * Gets volume information for the provided file system.
60 *
61 * @param {string} fileSystemId Id of the provided file system.
62 * @param {function(Object)} callback Callback to be called on result, with the
63 * volume information object in case of success, or null if not found.
64 */
65 function getVolumeInfo(fileSystemId, callback) {
66 chrome.fileBrowserPrivate.getVolumeMetadataList(function(volumeList) {
67 for (var i = 0; i < volumeList.length; i++) {
68 if (volumeList[i].extensionId == chrome.runtime.id &&
69 volumeList[i].fileSystemId == fileSystemId) {
70 callback(volumeList[i]);
71 return;
72 }
73 }
74 callback(null);
75 });
76 }
77
78 /**
79 * Returns metadata for a requested entry. 53 * Returns metadata for a requested entry.
80 * 54 *
81 * @param {GetMetadataRequestedOptions} options Options. 55 * @param {GetMetadataRequestedOptions} options Options.
82 * @param {function(Object)} onSuccess Success callback with metadata passed 56 * @param {function(Object)} onSuccess Success callback with metadata passed
83 * an argument. 57 * an argument.
84 * @param {function(string)} onError Error callback with an error code. 58 * @param {function(string)} onError Error callback with an error code.
85 */ 59 */
86 function onGetMetadataRequested(options, onSuccess, onError) { 60 function onGetMetadataRequested(options, onSuccess, onError) {
87 if (options.fileSystemId != FILE_SYSTEM_ID) { 61 if (options.fileSystemId != test_util.FILE_SYSTEM_ID) {
88 onError('SECURITY'); // enum ProviderError. 62 onError('SECURITY'); // enum ProviderError.
89 return; 63 return;
90 } 64 }
91 65
92 if (options.entryPath == '/') { 66 if (options.entryPath == '/') {
93 onSuccess(TESTING_ROOT); 67 onSuccess(TESTING_ROOT);
94 return; 68 return;
95 } 69 }
96 70
97 if (options.entryPath == '/' + TESTING_WITH_MIME_FILE.name) { 71 if (options.entryPath == '/' + TESTING_WITH_MIME_FILE.name) {
98 onSuccess(TESTING_WITH_MIME_FILE); 72 onSuccess(TESTING_WITH_MIME_FILE);
99 return; 73 return;
100 } 74 }
101 75
102 if (options.entryPath == '/' + TESTING_WITHOUT_MIME_FILE.name) { 76 if (options.entryPath == '/' + TESTING_WITHOUT_MIME_FILE.name) {
103 onSuccess(TESTING_WITHOUT_MIME_FILE); 77 onSuccess(TESTING_WITHOUT_MIME_FILE);
104 return; 78 return;
105 } 79 }
106 80
107 onError('NOT_FOUND'); // enum ProviderError. 81 onError('NOT_FOUND'); // enum ProviderError.
108 } 82 }
109 83
110 /** 84 /**
111 * Sets up the tests. Called once per all test cases. In case of a failure, 85 * Sets up the tests. Called once per all test cases. In case of a failure,
112 * the callback is not called. 86 * the callback is not called.
113 * 87 *
114 * @param {function()} callback Success callback. 88 * @param {function()} callback Success callback.
115 */ 89 */
116 function setUp(callback) { 90 function setUp(callback) {
117 chrome.fileSystemProvider.mount( 91 chrome.fileSystemProvider.onGetMetadataRequested.addListener(
118 {fileSystemId: FILE_SYSTEM_ID, displayName: 'chocolate.zip'}, 92 onGetMetadataRequested);
119 function() { 93 test_util.mountFileSystem(callback);
120 chrome.fileSystemProvider.onGetMetadataRequested.addListener(
121 onGetMetadataRequested);
122
123 getVolumeInfo(FILE_SYSTEM_ID, function(volumeInfo) {
124 chrome.test.assertTrue(!!volumeInfo);
125 chrome.fileBrowserPrivate.requestFileSystem(
126 volumeInfo.volumeId,
127 function(inFileSystem) {
128 chrome.test.assertTrue(!!inFileSystem);
129
130 fileSystem = inFileSystem;
131 callback();
132 });
133 });
134 },
135 function() {
136 chrome.test.fail();
137 });
138 } 94 }
139 95
140 /** 96 /**
141 * Runs all of the test cases, one by one. 97 * Runs all of the test cases, one by one.
142 */ 98 */
143 function runTests() { 99 function runTests() {
144 chrome.test.runTests([ 100 chrome.test.runTests([
145 // Test if the file with a mime type handled by this testing extension 101 // Test if the file with a mime type handled by this testing extension
146 // appears on a task list. 102 // appears on a task list.
147 function withMimeIsTask() { 103 function withMimeIsTask() {
148 var onSuccess = chrome.test.callbackPass(); 104 var onSuccess = chrome.test.callbackPass();
149 fileSystem.root.getFile(TESTING_WITH_MIME_FILE.name, {}, function(entry) { 105 test_util.fileSystem.root.getFile(
150 chrome.fileBrowserPrivate.getFileTasks( 106 TESTING_WITH_MIME_FILE.name,
151 [entry.toURL()], 107 {},
152 function(tasks) { 108 function(entry) {
153 chrome.test.assertEq(1, tasks.length); 109 chrome.fileBrowserPrivate.getFileTasks(
154 chrome.test.assertEq( 110 [entry.toURL()],
155 "ddammdhioacbehjngdmkjcjbnfginlla|app|magic_handler", 111 function(tasks) {
156 tasks[0].taskId); 112 chrome.test.assertEq(1, tasks.length);
157 onSuccess(); 113 chrome.test.assertEq(
158 }); 114 "ddammdhioacbehjngdmkjcjbnfginlla|app|magic_handler",
159 }, function(error) { 115 tasks[0].taskId);
160 chrome.test.fail(error.name); 116 onSuccess();
161 }); 117 });
118 }, function(error) {
119 chrome.test.fail(error.name);
120 });
162 }, 121 },
163 // Confirm, that executing that task, will actually run an OnLaunched event. 122 // Confirm, that executing that task, will actually run an OnLaunched event.
164 // This is another code path, than collecting tasks (tested above). 123 // This is another code path, than collecting tasks (tested above).
165 function withMimeExecute() { 124 function withMimeExecute() {
166 var onSuccess = chrome.test.callbackPass(); 125 var onSuccess = chrome.test.callbackPass();
167 fileSystem.root.getFile(TESTING_WITH_MIME_FILE.name, {}, function(entry) { 126 test_util.fileSystem.root.getFile(
168 chrome.fileBrowserPrivate.getFileTasks( 127 TESTING_WITH_MIME_FILE.name, {}, function(entry) {
169 [entry.toURL()], 128 chrome.fileBrowserPrivate.getFileTasks(
170 function(tasks) { 129 [entry.toURL()],
171 chrome.test.assertEq(1, tasks.length); 130 function(tasks) {
172 chrome.test.assertEq( 131 chrome.test.assertEq(1, tasks.length);
173 "ddammdhioacbehjngdmkjcjbnfginlla|app|magic_handler",
174 tasks[0].taskId);
175 var onLaunched = function(event) {
176 chrome.test.assertTrue(!!event);
177 chrome.test.assertEq("magic_handler", event.id);
178 chrome.test.assertTrue(!!event.items);
179 chrome.test.assertEq(1, event.items.length);
180 chrome.test.assertEq( 132 chrome.test.assertEq(
181 TESTING_MIME_TYPE, event.items[0].type); 133 "ddammdhioacbehjngdmkjcjbnfginlla|app|magic_handler",
182 chrome.test.assertEq( 134 tasks[0].taskId);
183 TESTING_WITH_MIME_FILE.name, 135 var onLaunched = function(event) {
184 event.items[0].entry.name); 136 chrome.test.assertTrue(!!event);
185 chrome.app.runtime.onLaunched.removeListener(onLaunched); 137 chrome.test.assertEq("magic_handler", event.id);
186 onSuccess(); 138 chrome.test.assertTrue(!!event.items);
187 }; 139 chrome.test.assertEq(1, event.items.length);
188 chrome.app.runtime.onLaunched.addListener(onLaunched); 140 chrome.test.assertEq(
189 chrome.fileBrowserPrivate.executeTask( 141 TESTING_MIME_TYPE, event.items[0].type);
190 tasks[0].taskId, [entry.toURL()]); 142 chrome.test.assertEq(
191 }); 143 TESTING_WITH_MIME_FILE.name,
192 }, function(error) { 144 event.items[0].entry.name);
193 chrome.test.fail(error.name); 145 chrome.app.runtime.onLaunched.removeListener(onLaunched);
194 }); 146 onSuccess();
147 };
148 chrome.app.runtime.onLaunched.addListener(onLaunched);
149 chrome.fileBrowserPrivate.executeTask(
150 tasks[0].taskId, [entry.toURL()]);
151 });
152 }, function(error) {
153 chrome.test.fail(error.name);
154 });
195 }, 155 },
196 // The file without a mime set must not appear on the task list for this 156 // The file without a mime set must not appear on the task list for this
197 // testing extension. 157 // testing extension.
198 function withoutMime() { 158 function withoutMime() {
199 var onSuccess = chrome.test.callbackPass(); 159 var onSuccess = chrome.test.callbackPass();
200 fileSystem.root.getFile( 160 test_util.fileSystem.root.getFile(
201 TESTING_WITHOUT_MIME_FILE.name, 161 TESTING_WITHOUT_MIME_FILE.name,
202 {}, 162 {},
203 function(entry) { 163 function(entry) {
204 chrome.fileBrowserPrivate.getFileTasks( 164 chrome.fileBrowserPrivate.getFileTasks(
205 [entry.toURL()], 165 [entry.toURL()],
206 function(tasks) { 166 function(tasks) {
207 chrome.test.assertEq(0, tasks.length); 167 chrome.test.assertEq(0, tasks.length);
208 onSuccess(); 168 onSuccess();
209 }); 169 });
210 }, function(error) { 170 }, function(error) {
211 chrome.test.fail(error.name); 171 chrome.test.fail(error.name);
212 }); 172 });
213 } 173 }
214 ]); 174 ]);
215 } 175 }
216 176
217 // Setup and run all of the test cases. 177 // Setup and run all of the test cases.
218 setUp(runTests); 178 setUp(runTests);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698