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

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: self review 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 parentDirectoryEntry.getFile(
61 filename,
62 {create: false},
63 function(fileEntry) { fileEntry.file(verifyFile, chrome.test.fail) },
vandebo (ex-Chrome) 2013/09/17 21:18:06 nit: name this function instead of making it inlin
tommycli 2013/09/18 15:25:37 Done.
64 chrome.test.fail);
65 }
66
67 function verifyAllJPEGs(parentDirectoryEntry, filenames, doneCallback) {
68 var remaining = filenames;
69 function verifyNextJPEG() {
70 if (remaining.length == 0) {
71 doneCallback();
72 return;
73 }
74 verifyJPEG(parentDirectoryEntry, remaining.pop(), verifyNextJPEG);
75 }
76 verifyNextJPEG();
77 }
78
79 function runPicasaTest() {
80 var picasaGallery;
81 var rootReadEntriesTotalReturned = 0;
82
83 function getMediaFileSystemsList() {
84 mediaGalleries.getMediaFileSystems(getMediaFileSystemsCallback);
85 }
86
87 function getMediaFileSystemsCallback(results) {
88 chrome.test.assertEq(1, results.length);
89 picasaGallery = results[0];
90
91 var galleryProperties =
92 mediaGalleries.getMediaFileSystemMetadata(picasaGallery);
93 chrome.test.assertFalse(galleryProperties.isRemovable);
94
95 function verify(directoryEntry, entries) {
96 chrome.test.assertEq(2, entries.length);
97 chrome.test.assertTrue(entries[0].isDirectory);
98 chrome.test.assertTrue(entries[1].isDirectory);
99 chrome.test.assertEq("albums", entries[0].name);
100 chrome.test.assertEq("folders", entries[1].name);
101
102 testAlbumsListing();
vandebo (ex-Chrome) 2013/09/17 21:18:06 Instead of chaining between the tests, can you lis
tommycli 2013/09/18 15:25:37 Done.
103 }
104
105 verifyDirectoryEntry(picasaGallery.root, verify);
106 }
107
108 function testAlbumsListing() {
109 function verify(directoryEntry, entries) {
110 chrome.test.assertEq(2, entries.length);
111 chrome.test.assertTrue(entries[0].isDirectory);
112 chrome.test.assertTrue(entries[1].isDirectory);
113 chrome.test.assertEq("Album 1 Name 1899-12-30", entries[0].name);
114 chrome.test.assertEq("Album 2 Name 1899-12-30", entries[1].name);
115
116 testFoldersListing();
117 }
118
119 getAndVerifyDirectoryEntry(picasaGallery.root, "albums", verify);
120 }
121
122 function testFoldersListing() {
123 function verify(directoryEntry, entries) {
124 chrome.test.assertEq(2, entries.length);
125 chrome.test.assertTrue(entries[0].isDirectory);
126 chrome.test.assertTrue(entries[1].isDirectory);
127 chrome.test.assertEq("folder1 1899-12-30", entries[0].name);
128 chrome.test.assertEq("folder2 1899-12-30", entries[1].name);
129
130 testAlbum1Listing();
131 }
132
133 getAndVerifyDirectoryEntry(picasaGallery.root, "folders", verify);
134 }
135
136 function testAlbum1Listing() {
137 function verify(directoryEntry, entries) {
138 chrome.test.assertEq(2, entries.length);
139 chrome.test.assertTrue(entries[0].isFile);
140 chrome.test.assertTrue(entries[1].isFile);
141 chrome.test.assertEq("InBoth.jpg", entries[0].name);
142 chrome.test.assertEq("InFirstAlbumOnly.jpg", entries[1].name);
143
144 verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InFirstAlbumOnly.jpg"],
145 testAlbum2Listing);
146 }
147
148 getAndVerifyDirectoryEntry(picasaGallery.root,
149 "albums/Album 1 Name 1899-12-30", verify);
150 }
151
152 function testAlbum2Listing() {
153 function verify(directoryEntry, entries) {
154 chrome.test.assertEq(2, entries.length);
155 chrome.test.assertTrue(entries[0].isFile);
156 chrome.test.assertTrue(entries[1].isFile);
157 chrome.test.assertEq("InBoth.jpg", entries[0].name);
158 chrome.test.assertEq("InSecondAlbumOnly.jpg", entries[1].name);
159
160 verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InSecondAlbumOnly.jpg"],
161 chrome.test.succeed);
162 }
163
164 getAndVerifyDirectoryEntry(picasaGallery.root,
165 "albums/Album 2 Name 1899-12-30", verify);
166 }
167
168 function testAlbum2Listing() {
vandebo (ex-Chrome) 2013/09/17 21:18:06 repeated function?
tommycli 2013/09/18 15:25:37 Done.
169 function verify(directoryEntry, entries) {
170 chrome.test.assertEq(2, entries.length);
171 chrome.test.assertTrue(entries[0].isFile);
172 chrome.test.assertTrue(entries[1].isFile);
173 chrome.test.assertEq("InBoth.jpg", entries[0].name);
174 chrome.test.assertEq("InSecondAlbumOnly.jpg", entries[1].name);
175
176 verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InSecondAlbumOnly.jpg"],
177 testFolder1Listing);
178 }
179
180 getAndVerifyDirectoryEntry(picasaGallery.root,
181 "albums/Album 2 Name 1899-12-30", verify);
182 }
183
184 function testFolder1Listing() {
185 function verify(directoryEntry, entries) {
186 chrome.test.assertEq(2, entries.length);
187 chrome.test.assertTrue(entries[0].isFile);
188 chrome.test.assertTrue(entries[1].isFile);
189 chrome.test.assertEq("InBoth.jpg", entries[0].name);
190 chrome.test.assertEq("InSecondAlbumOnly.jpg", entries[1].name);
191
192 verifyAllJPEGs(directoryEntry, ["InBoth.jpg", "InSecondAlbumOnly.jpg"],
193 testFolder2Listing);
194 }
195
196 getAndVerifyDirectoryEntry(picasaGallery.root,
197 "folders/folder1 1899-12-30", verify);
198 }
199
200 function testFolder2Listing() {
201 function verify(directoryEntry, entries) {
202 chrome.test.assertEq(1, entries.length);
203 chrome.test.assertTrue(entries[0].isFile);
204 chrome.test.assertEq("InFirstAlbumOnly.jpg", entries[0].name);
205
206 verifyAllJPEGs(directoryEntry, ["InFirstAlbumOnly.jpg"],
207 chrome.test.succeed);
208 }
209
210 getAndVerifyDirectoryEntry(picasaGallery.root,
211 "folders/folder2 1899-12-30", verify);
212 }
213
214 getMediaFileSystemsList();
215 }
216
217 chrome.test.runTests([
218 runPicasaTest
219 ]);
220
221 // Create a dummy window to prevent the ExtensionProcessManager from suspending
222 // the chrome-test app. Needed because the FileReader events do not qualify as
223 // pending callbacks, so the app looks dormant.
224 chrome.app.runtime.onLaunched.addListener(function() {
225 chrome.app.window.create('dummy.html', {
226 bounds: {
227 width: 800,
228 height: 600,
229 left: 100,
230 top: 100
231 },
232 minWidth: 800,
233 minHeight: 600
234 });
235 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698