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

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