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

Unified Diff: chrome/test/data/extensions/api_test/media_galleries/picasa/test.js

Issue 23513059: Media Galleries API Picasa: End-to-end browsertest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/data/extensions/api_test/media_galleries/picasa/manifest.json ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/data/extensions/api_test/media_galleries/picasa/test.js
diff --git a/chrome/test/data/extensions/api_test/media_galleries/picasa/test.js b/chrome/test/data/extensions/api_test/media_galleries/picasa/test.js
new file mode 100644
index 0000000000000000000000000000000000000000..cb6aaa4ce821dcfe3516aa8a256c546b2fbc01c9
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/media_galleries/picasa/test.js
@@ -0,0 +1,233 @@
+// Copyright 2013 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.
+
+var mediaGalleries = chrome.mediaGalleries;
+var expectedGalleryEntryLength = 306; // hard-coded size of ../common/test.jpg
+
+// Get's entire listing from directory, then verifies the sorted contents.
+function verifyDirectoryEntry(directoryEntry, verifyFunction) {
+ var allEntries = [];
+ var reader = directoryEntry.createReader();
+
+ function readEntries() {
+ reader.readEntries(readEntriesCallback, chrome.test.fail);
+ }
+
+ function readEntriesCallback(entries) {
+ if (entries.length == 0) {
+ verifyFunction(directoryEntry, allEntries.sort());
+ return;
+ }
+
+ allEntries = allEntries.concat(entries);
+ readEntries();
+ }
+
+ readEntries();
+}
+
+// Verifies a directory itself, then the contents.
+function getAndVerifyDirectoryEntry(parentEntry, directoryName,
+ verifyFunction) {
+ function getDirectoryCallback(entry) {
+ chrome.test.assertTrue(entry.isDirectory);
+ verifyDirectoryEntry(entry, verifyFunction);
+ }
+
+ parentEntry.getDirectory(directoryName, {create: false},
+ getDirectoryCallback, chrome.test.fail);
+}
+
+function verifyJPEG(parentDirectoryEntry, filename, doneCallback) {
+ function verifyFile(file) {
+ var reader = new FileReader();
+
+ reader.onload = function(e) {
+ var arraybuffer = e.target.result;
+ chrome.test.assertEq(expectedGalleryEntryLength,
+ arraybuffer.byteLength);
+ doneCallback();
+ }
+
+ reader.onerror =
+ chrome.test.fail.bind(null, "Unable to read test image: " + filename);
+
+ reader.readAsArrayBuffer(file);
+ }
+
+ function verifyFileEntry(fileEntry) {
+ fileEntry.file(verifyFile, chrome.test.fail)
+ }
+
+ parentDirectoryEntry.getFile(filename, {create: false}, verifyFileEntry,
+ chrome.test.fail);
+}
+
+function verifyAllJPEGs(parentDirectoryEntry, filenames, doneCallback) {
+ var remaining = filenames;
+ function verifyNextJPEG() {
+ if (remaining.length == 0) {
+ doneCallback();
+ return;
+ }
+ verifyJPEG(parentDirectoryEntry, remaining.pop(), verifyNextJPEG);
+ }
+ verifyNextJPEG();
+}
+
+function GalleryPropertiesTest(picasaGallery) {
+ var galleryProperties =
+ mediaGalleries.getMediaFileSystemMetadata(picasaGallery);
+ chrome.test.assertFalse(galleryProperties.isRemovable);
+ chrome.test.succeed();
+}
+
+function RootListingTest(picasaGallery) {
+ function verify(directoryEntry, entries) {
+ chrome.test.assertEq(2, entries.length);
+ chrome.test.assertTrue(entries[0].isDirectory);
+ chrome.test.assertTrue(entries[1].isDirectory);
+ chrome.test.assertEq("albums", entries[0].name);
+ chrome.test.assertEq("folders", entries[1].name);
+ chrome.test.succeed();
+ }
+
+ verifyDirectoryEntry(picasaGallery.root, verify);
+}
+
+function AlbumsListingTest(picasaGallery) {
+ function verify(directoryEntry, entries) {
+ chrome.test.assertEq(2, entries.length);
+ chrome.test.assertTrue(entries[0].isDirectory);
+ chrome.test.assertTrue(entries[1].isDirectory);
+ chrome.test.assertEq("Album 1 Name 1899-12-30", entries[0].name);
+ chrome.test.assertEq("Album 2 Name 1899-12-30", entries[1].name);
+ chrome.test.succeed();
+ }
+
+ getAndVerifyDirectoryEntry(picasaGallery.root, "albums", verify);
+}
+
+function FoldersListingTest(picasaGallery) {
+ function verify(directoryEntry, entries) {
+ chrome.test.assertEq(2, entries.length);
+ chrome.test.assertTrue(entries[0].isDirectory);
+ chrome.test.assertTrue(entries[1].isDirectory);
+ chrome.test.assertEq("folder1 1899-12-30", entries[0].name);
+ chrome.test.assertEq("folder2 1899-12-30", entries[1].name);
+ chrome.test.succeed();
+ }
+
+ getAndVerifyDirectoryEntry(picasaGallery.root, "folders", verify);
+}
+
+function Album1ListingTest(picasaGallery) {
+ function verify(directoryEntry, entries) {
+ chrome.test.assertEq(2, entries.length);
+ chrome.test.assertTrue(entries[0].isFile);
+ chrome.test.assertTrue(entries[1].isFile);
+ chrome.test.assertEq("InBoth.jpg", entries[0].name);
+ chrome.test.assertEq("InFirstAlbumOnly.jpg", entries[1].name);
+
+ verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InFirstAlbumOnly.jpg"],
+ chrome.test.succeed);
+ }
+
+ getAndVerifyDirectoryEntry(picasaGallery.root,
+ "albums/Album 1 Name 1899-12-30", verify);
+}
+
+function Album2ListingTest(picasaGallery) {
+ function verify(directoryEntry, entries) {
+ chrome.test.assertEq(2, entries.length);
+ chrome.test.assertTrue(entries[0].isFile);
+ chrome.test.assertTrue(entries[1].isFile);
+ chrome.test.assertEq("InBoth.jpg", entries[0].name);
+ chrome.test.assertEq("InSecondAlbumOnly.jpg", entries[1].name);
+
+ verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InSecondAlbumOnly.jpg"],
+ chrome.test.succeed);
+ }
+
+ getAndVerifyDirectoryEntry(picasaGallery.root,
+ "albums/Album 2 Name 1899-12-30", verify);
+}
+
+function Folder1ListingTest(picasaGallery) {
+ function verify(directoryEntry, entries) {
+ chrome.test.assertEq(2, entries.length);
+ chrome.test.assertTrue(entries[0].isFile);
+ chrome.test.assertTrue(entries[1].isFile);
+ chrome.test.assertEq("InBoth.jpg", entries[0].name);
+ chrome.test.assertEq("InSecondAlbumOnly.jpg", entries[1].name);
+
+ verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InSecondAlbumOnly.jpg"],
+ chrome.test.succeed);
+ }
+
+ getAndVerifyDirectoryEntry(picasaGallery.root,
+ "folders/folder1 1899-12-30", verify);
+}
+
+function Folder2ListingTest(picasaGallery) {
+ function verify(directoryEntry, entries) {
+ chrome.test.assertEq(1, entries.length);
+ chrome.test.assertTrue(entries[0].isFile);
+ chrome.test.assertEq("InFirstAlbumOnly.jpg", entries[0].name);
+
+ verifyAllJPEGs(directoryEntry, ["InFirstAlbumOnly.jpg"],
+ chrome.test.succeed);
+ }
+
+ getAndVerifyDirectoryEntry(picasaGallery.root,
+ "folders/folder2 1899-12-30", verify);
+}
+
+function getTest(testFunction) {
+ function getMediaFileSystemsList() {
+ mediaGalleries.getMediaFileSystems(getMediaFileSystemsCallback);
+ }
+
+ function getMediaFileSystemsCallback(results) {
+ for (var i = 0; i < results.length; ++i) {
+ var properties = mediaGalleries.getMediaFileSystemMetadata(results[i]);
+ if (properties.name == "Picasa") {
+ testFunction(results[i]);
+ return;
+ }
+ }
+ chrome.test.fail("Picasa gallery not found");
+ }
+
+ return function() {
+ getMediaFileSystemsList();
+ }
+}
+
+chrome.test.runTests([
+ getTest(GalleryPropertiesTest),
+ getTest(RootListingTest),
+ getTest(AlbumsListingTest),
+ getTest(FoldersListingTest),
+ getTest(Album1ListingTest),
+ getTest(Album2ListingTest),
+ getTest(Folder1ListingTest),
+ getTest(Folder2ListingTest),
+]);
+
+// Create a dummy window to prevent the ExtensionProcessManager from suspending
+// the chrome-test app. Needed because the FileReader events do not qualify as
+// pending callbacks, so the app looks dormant.
+chrome.app.runtime.onLaunched.addListener(function() {
+ chrome.app.window.create('dummy.html', {
+ bounds: {
+ width: 800,
+ height: 600,
+ left: 100,
+ top: 100
+ },
+ minWidth: 800,
+ minHeight: 600
+ });
+});
« no previous file with comments | « chrome/test/data/extensions/api_test/media_galleries/picasa/manifest.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698