| Index: chrome/test/data/extensions/api_test/media_galleries/common/common_injected.js
|
| diff --git a/chrome/test/data/extensions/api_test/media_galleries/copy_to_access/no_access/copy_to_common.js b/chrome/test/data/extensions/api_test/media_galleries/common/common_injected.js
|
| similarity index 51%
|
| rename from chrome/test/data/extensions/api_test/media_galleries/copy_to_access/no_access/copy_to_common.js
|
| rename to chrome/test/data/extensions/api_test/media_galleries/common/common_injected.js
|
| index 8f0322786fd1906c84597f28925878d87ccc2262..4362b37e8e513abfe0073f8b03d1fce3d8e60572 100644
|
| --- a/chrome/test/data/extensions/api_test/media_galleries/copy_to_access/no_access/copy_to_common.js
|
| +++ b/chrome/test/data/extensions/api_test/media_galleries/common/common_injected.js
|
| @@ -3,8 +3,6 @@
|
| // found in the LICENSE file.
|
|
|
| // Valid WEBP image.
|
| -// TODO(thestig) Maybe copy these files to a media gallery in the C++ setup
|
| -// phase to avoid having this and webkitRequestFileSystem() below.
|
| var validWEBPImageCase = {
|
| filename: "valid.webp",
|
| blobString: "RIFF0\0\0\0WEBPVP8 $\0\0\0\xB2\x02\0\x9D\x01\x2A" +
|
| @@ -80,6 +78,91 @@ function runCopyToTest(testCase, expectSucceed) {
|
| }
|
| }
|
|
|
| +// The custom callback functions are options.
|
| +// If they are undefined, the default callbacks and checks will be used.
|
| +// If passed in, all 3 function arguments need to be valid.
|
| +function runReadGalleriesTest(expectedGalleryCount, expectSucceed,
|
| + customReadDirectoryCallback,
|
| + customReadDirectoryErrorCallback,
|
| + customGotGalleriesCallback) {
|
| + var galleries;
|
| + var readEntriesResults = [];
|
| + var readDirectoryCallback;
|
| + var readDirectoryErrorCallback;
|
| + var gotGalleriesCallback;
|
| +
|
| + if (customReadDirectoryCallback && customReadDirectoryErrorCallback &&
|
| + customGotGalleriesCallback) {
|
| + chrome.test.assertEq(typeof(customReadDirectoryCallback), 'function');
|
| + chrome.test.assertEq(typeof(customReadDirectoryErrorCallback), 'function');
|
| + chrome.test.assertEq(typeof(customGotGalleriesCallback), 'function');
|
| + readDirectoryCallback = customReadDirectoryCallback;
|
| + readDirectoryErrorCallback = customReadDirectoryErrorCallback;
|
| + gotGalleriesCallback = customGotGalleriesCallback;
|
| + } else {
|
| + chrome.test.assertTrue(!customReadDirectoryCallback &&
|
| + !customReadDirectoryErrorCallback &&
|
| + !customGotGalleriesCallback);
|
| + readDirectoryCallback = defaultReadDirectoryCallback;
|
| + readDirectoryErrorCallback = defaultReadDirectoryErrorCallback;
|
| + gotGalleriesCallback = defaultGotGalleriesCallback;
|
| + }
|
| + chrome.mediaGalleries.getMediaFileSystems(testGalleries);
|
| +
|
| + function testGalleries(results) {
|
| + gotGalleriesCallback(results);
|
| + chrome.test.assertEq(expectedGalleryCount, results.length,
|
| + "Gallery count mismatch");
|
| + if (expectedGalleryCount == 0) {
|
| + chrome.test.succeed();
|
| + return;
|
| + }
|
| +
|
| + for (var i = 0; i < results.length; i++) {
|
| + var dirReader = results[i].root.createReader();
|
| + dirReader.readEntries(readDirectoryCallback, readDirectoryErrorCallback);
|
| + }
|
| + }
|
| +
|
| + function defaultGotGalleriesCallback(entries) {
|
| + galleries = entries;
|
| + }
|
| +
|
| + function defaultReadDirectoryCallback(entries) {
|
| + var result = "";
|
| + if (!expectSucceed) {
|
| + result = "Unexpected readEntries success";
|
| + }
|
| + readEntriesResults.push(result);
|
| + checkReadEntriesFinished();
|
| + }
|
| +
|
| + function defaultReadDirectoryErrorCallback(err) {
|
| + var result = "";
|
| + if (expectSucceed) {
|
| + result = "Unexpected readEntries failure: " + err;
|
| + }
|
| + readEntriesResults.push(result);
|
| + checkReadEntriesFinished();
|
| + }
|
| +
|
| + function checkReadEntriesFinished() {
|
| + if (readEntriesResults.length != galleries.length)
|
| + return;
|
| + var success = true;
|
| + for (var i = 0; i < readEntriesResults.length; i++) {
|
| + if (readEntriesResults[i]) {
|
| + success = false;
|
| + }
|
| + }
|
| + if (success) {
|
| + chrome.test.succeed();
|
| + return;
|
| + }
|
| + chrome.test.fail(readEntriesResults);
|
| + }
|
| +}
|
| +
|
| // Create a dummy window to prevent the ExtensionProcessManager from suspending
|
| // the chrome-test app. Needed because the writer.onerror and writer.onwriteend
|
| // events do not qualify as pending callbacks, so the app looks dormant.
|
|
|