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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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 var mediaGalleries = chrome.mediaGalleries;
6
7 // Get's entire listing from directory, then verifies the sorted contents.
8 function verifyDirectoryEntry(directoryEntry, verifyFunction) {
9 var allEntries = [];
10 var reader = directoryEntry.createReader();
11
12 function readEntries() {
13 reader.readEntries(readEntriesCallback, chrome.test.fail);
14 }
15
16 function readEntriesCallback(entries) {
17 if (entries.length == 0) {
18 verifyFunction(directoryEntry, allEntries.sort());
19 return;
20 }
21
22 allEntries = allEntries.concat(entries);
23 readEntries();
24 }
25
26 readEntries();
27 }
28
29 // Verifies a directory itself, then the contents.
30 function getAndVerifyDirectoryEntry(parentEntry, directoryName,
31 verifyFunction) {
32 function getDirectoryCallback(entry) {
33 chrome.test.assertTrue(entry.isDirectory);
34 verifyDirectoryEntry(entry, verifyFunction);
35 }
36
37 parentEntry.getDirectory(directoryName, {create: false},
38 getDirectoryCallback, chrome.test.fail);
39 }
40
41 function verifyJPEG(parentDirectoryEntry, filename, doneCallback) {
42 function verifyFile(file) {
43 var reader = new FileReader();
44
45 reader.onload = function(e) {
46 var arraybuffer = e.target.result;
47 var view = new Uint8Array(arraybuffer);
48 chrome.test.assertEq(0xFF, view[0]);
49 chrome.test.assertEq(0xD8, view[1]);
50 chrome.test.assertEq(0xFF, view[2]);
51 doneCallback();
52 }
53
54 reader.onerror =
55 chrome.test.fail.bind(null, "Unable to read test image: " + filename);
56
57 reader.readAsArrayBuffer(file);
58 }
59
60 function verifyFileEntry(fileEntry) {
61 fileEntry.file(verifyFile, chrome.test.fail)
62 }
63
64 parentDirectoryEntry.getFile(filename, {create: false}, verifyFileEntry,
65 chrome.test.fail);
66 }
67
68 function verifyAllJPEGs(parentDirectoryEntry, filenames, doneCallback) {
69 var remaining = filenames;
70 function verifyNextJPEG() {
71 if (remaining.length == 0) {
72 doneCallback();
73 return;
74 }
75 verifyJPEG(parentDirectoryEntry, remaining.pop(), verifyNextJPEG);
76 }
77 verifyNextJPEG();
78 }
79
80 function GalleryPropertiesTest(picasaGallery) {
81 var galleryProperties =
82 mediaGalleries.getMediaFileSystemMetadata(picasaGallery);
83 chrome.test.assertFalse(galleryProperties.isRemovable);
84 chrome.test.succeed();
85 }
86
87 function RootListingTest(picasaGallery) {
88 function verify(directoryEntry, entries) {
89 chrome.test.assertEq(2, entries.length);
90 chrome.test.assertTrue(entries[0].isDirectory);
91 chrome.test.assertTrue(entries[1].isDirectory);
92 chrome.test.assertEq("albums", entries[0].name);
93 chrome.test.assertEq("folders", entries[1].name);
94 chrome.test.succeed();
95 }
96
97 verifyDirectoryEntry(picasaGallery.root, verify);
98 }
99
100 function AlbumsListingTest(picasaGallery) {
101 function verify(directoryEntry, entries) {
102 chrome.test.assertEq(2, entries.length);
103 chrome.test.assertTrue(entries[0].isDirectory);
104 chrome.test.assertTrue(entries[1].isDirectory);
105 chrome.test.assertEq("Album 1 Name 1899-12-30", entries[0].name);
106 chrome.test.assertEq("Album 2 Name 1899-12-30", entries[1].name);
107 chrome.test.succeed();
108 }
109
110 getAndVerifyDirectoryEntry(picasaGallery.root, "albums", verify);
111 }
112
113 function FoldersListingTest(picasaGallery) {
114 function verify(directoryEntry, entries) {
115 chrome.test.assertEq(2, entries.length);
116 chrome.test.assertTrue(entries[0].isDirectory);
117 chrome.test.assertTrue(entries[1].isDirectory);
118 chrome.test.assertEq("folder1 1899-12-30", entries[0].name);
119 chrome.test.assertEq("folder2 1899-12-30", entries[1].name);
120 chrome.test.succeed();
121 }
122
123 getAndVerifyDirectoryEntry(picasaGallery.root, "folders", verify);
124 }
125
126 function Album1ListingTest(picasaGallery) {
127 function verify(directoryEntry, entries) {
128 chrome.test.assertEq(2, entries.length);
129 chrome.test.assertTrue(entries[0].isFile);
130 chrome.test.assertTrue(entries[1].isFile);
131 chrome.test.assertEq("InBoth.jpg", entries[0].name);
132 chrome.test.assertEq("InFirstAlbumOnly.jpg", entries[1].name);
133
134 verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InFirstAlbumOnly.jpg"],
135 chrome.test.succeed);
136 }
137
138 getAndVerifyDirectoryEntry(picasaGallery.root,
139 "albums/Album 1 Name 1899-12-30", verify);
140 }
141
142 function Album2ListingTest(picasaGallery) {
143 function verify(directoryEntry, entries) {
144 chrome.test.assertEq(2, entries.length);
145 chrome.test.assertTrue(entries[0].isFile);
146 chrome.test.assertTrue(entries[1].isFile);
147 chrome.test.assertEq("InBoth.jpg", entries[0].name);
148 chrome.test.assertEq("InSecondAlbumOnly.jpg", entries[1].name);
149
150 verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InSecondAlbumOnly.jpg"],
151 chrome.test.succeed);
152 }
153
154 getAndVerifyDirectoryEntry(picasaGallery.root,
155 "albums/Album 2 Name 1899-12-30", verify);
156 }
157
158 function Folder1ListingTest(picasaGallery) {
159 function verify(directoryEntry, entries) {
160 chrome.test.assertEq(2, entries.length);
161 chrome.test.assertTrue(entries[0].isFile);
162 chrome.test.assertTrue(entries[1].isFile);
163 chrome.test.assertEq("InBoth.jpg", entries[0].name);
164 chrome.test.assertEq("InSecondAlbumOnly.jpg", entries[1].name);
165
166 verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InSecondAlbumOnly.jpg"],
167 chrome.test.succeed);
168 }
169
170 getAndVerifyDirectoryEntry(picasaGallery.root,
171 "folders/folder1 1899-12-30", verify);
172 }
173
174 function Folder2ListingTest(picasaGallery) {
175 function verify(directoryEntry, entries) {
176 chrome.test.assertEq(1, entries.length);
177 chrome.test.assertTrue(entries[0].isFile);
178 chrome.test.assertEq("InFirstAlbumOnly.jpg", entries[0].name);
179
180 verifyAllJPEGs(directoryEntry, ["InFirstAlbumOnly.jpg"],
181 chrome.test.succeed);
182 }
183
184 getAndVerifyDirectoryEntry(picasaGallery.root,
185 "folders/folder2 1899-12-30", verify);
186 }
187
188 function getTest(testFunction) {
189 function getMediaFileSystemsList() {
190 mediaGalleries.getMediaFileSystems(getMediaFileSystemsCallback);
191 }
192
193 function getMediaFileSystemsCallback(results) {
194 for (var i = 0; i < results.length; ++i) {
195 var properties = mediaGalleries.getMediaFileSystemMetadata(results[i]);
196 if (properties.name == "Picasa") {
197 testFunction(results[i]);
198 return;
199 }
200 }
201 chrome.test.fail("Picasa gallery not found");
202 }
203
204 return function() {
205 getMediaFileSystemsList();
206 }
207 }
208
209 chrome.test.runTests([
210 getTest(GalleryPropertiesTest),
211 getTest(RootListingTest),
212 getTest(AlbumsListingTest),
213 getTest(FoldersListingTest),
214 getTest(Album1ListingTest),
215 getTest(Album2ListingTest),
216 getTest(Folder1ListingTest),
217 getTest(Folder2ListingTest),
218 ]);
219
220 // Create a dummy window to prevent the ExtensionProcessManager from suspending
221 // the chrome-test app. Needed because the FileReader events do not qualify as
222 // pending callbacks, so the app looks dormant.
223 chrome.app.runtime.onLaunched.addListener(function() {
224 chrome.app.window.create('dummy.html', {
225 bounds: {
226 width: 800,
227 height: 600,
228 left: 100,
229 top: 100
230 },
231 minWidth: 800,
232 minHeight: 600
233 });
234 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698