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

Side by Side Diff: chrome/browser/extensions/api/media_galleries_private/media_galleries_watch_apitest.cc

Issue 11535008: Implement mediaGalleriesPrivate api to notify extensions about gallery changed events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 8 years 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 (c) 2012 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 // MediaGalleriesPrivate gallery watch API browser tests.
6
7 #include "base/utf_string_conversions.h"
8 #include "build/build_config.h"
9 #include "chrome/browser/extensions/extension_apitest.h"
10 #include "chrome/browser/extensions/extension_service.h"
11 #include "chrome/browser/extensions/extension_system.h"
12 #include "chrome/browser/extensions/extension_test_message_listener.h"
13 #include "chrome/browser/media_gallery/media_galleries_test_util.h"
14 #include "chrome/common/chrome_paths.h"
15 #include "chrome/common/chrome_switches.h"
16 #include "chrome/common/extensions/extension.h"
17 #include "content/public/browser/render_view_host.h"
18
19 namespace {
20
21 // Id of test extension from
22 // chrome/test/data/extensions/api_test/|kTestExtensionPath|
23 const char kTestExtensionId[] = "gceegfkgibmgpfopknlcgleimclbknie";
24 const char kTestExtensionPath[] = "media_galleries_private/gallerywatch";
25
26 // JS commands.
27 const char kAddGalleryChangedListenerCmd[] = "addGalleryChangedListener()";
28 const char kGetMediaFileSystemsCmd[] = "getMediaFileSystems()";
29 const char kRemoveGalleryChangedListenerCmd[] =
30 "removeGalleryChangedListener()";
31 const char kRemoveGalleryWatchCmd[] = "removeGalleryWatch()";
32 const char kSetupWatchOnValidGalleriesCmd[] = "setupWatchOnValidGalleries()";
33 const char kSetupWatchOnInvalidGalleryCmd[] = "setupWatchOnInvalidGallery()";
34
35 // And JS reply messages.
36 const char kAddGalleryWatchOK[] = "add_gallery_watch_ok";
37 const char kAddGalleryChangedListenerOK[] = "add_gallery_changed_listener_ok";
38 const char kGetMediaFileSystemsOK[] = "get_media_file_systems_ok";
39 const char kGetMediaFileSystemsCallbackOK[] =
40 "get_media_file_systems_callback_ok";
41 const char kRemoveGalleryChangedListenerOK[] =
42 "remove_gallery_changed_listener_ok";
43 const char kRemoveGalleryWatchOK[] = "remove_gallery_watch_ok";
44
45 // Test reply messages.
46 const char kAddGalleryWatchRequestSucceeded[] = "add_watch_request_succeeded";
47 const char kAddGalleryWatchRequestFailed[] = "add_watch_request_failed";
48 const char kGalleryChangedEventReceived[] = "gallery_changed_event_recevied";
49
50 } // namespace
51
52
53 ///////////////////////////////////////////////////////////////////////////////
54 // MediaGalleriesPrivateGalleryWatchApiTest //
55 ///////////////////////////////////////////////////////////////////////////////
56
57 class MediaGalleriesPrivateGalleryWatchApiTest : public ExtensionApiTest {
58 public:
59 MediaGalleriesPrivateGalleryWatchApiTest() {}
60 virtual ~MediaGalleriesPrivateGalleryWatchApiTest() {}
61
62 protected:
63 // ExtensionApiTest overrides.
64 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
65 ExtensionApiTest::SetUpCommandLine(command_line);
66 command_line->AppendSwitchASCII(switches::kWhitelistedExtensionID,
67 kTestExtensionId);
68 }
69
70 void ExecuteCmdAndCheckReply(content::RenderViewHost* host,
71 const std::string& js_command,
72 const std::string& ok_message) {
73 ExtensionTestMessageListener listener(ok_message, false);
74 host->ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16(js_command));
75 EXPECT_TRUE(listener.WaitUntilSatisfied());
76 }
77
78 private:
79 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesPrivateGalleryWatchApiTest);
80 };
81
82
83 ///////////////////////////////////////////////////////////////////////////////
84 // TESTS //
85 ///////////////////////////////////////////////////////////////////////////////
86
87 #if defined(OS_WIN)
88 IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateGalleryWatchApiTest,
89 BasicGalleryWatch) {
90 chrome::EnsureMediaDirectoriesExists media_directories;
91 const extensions::Extension* extension =
92 LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
93 ASSERT_TRUE(extension);
94 content::RenderViewHost* host =
95 extensions::ExtensionSystem::Get(browser()->profile())->
96 process_manager()->GetBackgroundHostForExtension(extension->id())->
97 render_view_host();
98 ASSERT_TRUE(host);
99
100 // Get media file systems.
101 ExtensionTestMessageListener get_media_systems_finished(
102 kGetMediaFileSystemsCallbackOK, false /* no reply */);
103 ExecuteCmdAndCheckReply(host, kGetMediaFileSystemsCmd,
104 kGetMediaFileSystemsOK);
105 EXPECT_TRUE(get_media_systems_finished.WaitUntilSatisfied());
106 ASSERT_TRUE(media_directories.num_galleries() != 0);
107
108 // Set up gallery watch.
109 ExtensionTestMessageListener add_gallery_watch_finished(
110 kAddGalleryWatchRequestSucceeded, false /* no reply */);
111 ExecuteCmdAndCheckReply(host, kSetupWatchOnValidGalleriesCmd,
112 kAddGalleryWatchOK);
113 EXPECT_TRUE(add_gallery_watch_finished.WaitUntilSatisfied());
114
115 // Add gallery watch listener.
116 ExecuteCmdAndCheckReply(host, kAddGalleryChangedListenerCmd,
117 kAddGalleryChangedListenerOK);
118
119 // Modify gallery contents.
120 ExtensionTestMessageListener music_gallery_change_event_received(
121 kGalleryChangedEventReceived, false /* no reply */);
122 EXPECT_TRUE(media_directories.AddNewFileInGallery(chrome::DIR_USER_MUSIC));
123 EXPECT_TRUE(music_gallery_change_event_received.WaitUntilSatisfied());
124
125 ExtensionTestMessageListener pictures_gallery_change_event_received(
126 kGalleryChangedEventReceived, false /* no reply */);
127 EXPECT_TRUE(media_directories.AddNewFileInGallery(chrome::DIR_USER_PICTURES));
128 EXPECT_TRUE(pictures_gallery_change_event_received.WaitUntilSatisfied());
129
130 ExtensionTestMessageListener videos_gallery_change_event_received(
131 kGalleryChangedEventReceived, false /* no reply */);
132 EXPECT_TRUE(media_directories.AddNewFileInGallery(chrome::DIR_USER_VIDEOS));
133 EXPECT_TRUE(videos_gallery_change_event_received.WaitUntilSatisfied());
134
135 // Remove gallery watch listener.
136 ExecuteCmdAndCheckReply(host, kRemoveGalleryChangedListenerCmd,
137 kRemoveGalleryChangedListenerOK);
138
139 // Remove gallery watch request.
140 ExecuteCmdAndCheckReply(host, kRemoveGalleryWatchCmd, kRemoveGalleryWatchOK);
141 }
142
143 IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateGalleryWatchApiTest,
144 RemoveListenerAndModifyGallery) {
145 chrome::EnsureMediaDirectoriesExists media_directories;
146 const extensions::Extension* extension =
147 LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
148 ASSERT_TRUE(extension);
149 content::RenderViewHost* host =
150 extensions::ExtensionSystem::Get(browser()->profile())->
151 process_manager()->GetBackgroundHostForExtension(extension->id())->
152 render_view_host();
153 ASSERT_TRUE(host);
154
155 // Get media file systems.
156 ExtensionTestMessageListener get_media_systems_finished(
157 kGetMediaFileSystemsCallbackOK, false /* no reply */);
158 ExecuteCmdAndCheckReply(host, kGetMediaFileSystemsCmd,
159 kGetMediaFileSystemsOK);
160 EXPECT_TRUE(get_media_systems_finished.WaitUntilSatisfied());
161 ASSERT_TRUE(media_directories.num_galleries() != 0);
162
163 // Set up gallery watch.
164 ExtensionTestMessageListener add_gallery_watch_finished(
165 kAddGalleryWatchRequestSucceeded, false /* no reply */);
166 ExecuteCmdAndCheckReply(host, kSetupWatchOnValidGalleriesCmd,
167 kAddGalleryWatchOK);
168 EXPECT_TRUE(add_gallery_watch_finished.WaitUntilSatisfied());
169
170 // Add a gallery watch listener.
171 ExecuteCmdAndCheckReply(host, kAddGalleryChangedListenerCmd,
172 kAddGalleryChangedListenerOK);
173 // Modify gallery contents.
174 ExtensionTestMessageListener music_gallery_change_event_received(
175 kGalleryChangedEventReceived, false /* no reply */);
176 EXPECT_TRUE(media_directories.AddNewFileInGallery(chrome::DIR_USER_MUSIC));
177 EXPECT_TRUE(music_gallery_change_event_received.WaitUntilSatisfied());
178
179 // Remove gallery watch listener.
180 ExecuteCmdAndCheckReply(host, kRemoveGalleryChangedListenerCmd,
181 kRemoveGalleryChangedListenerOK);
182
183 // No listener, modify gallery contents.
184 EXPECT_TRUE(media_directories.AddNewFileInGallery(chrome::DIR_USER_MUSIC));
185
186 // Remove gallery watch.
187 ExecuteCmdAndCheckReply(host, kRemoveGalleryWatchCmd, kRemoveGalleryWatchOK);
188 }
189
190 IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateGalleryWatchApiTest,
191 SetupGalleryWatchWithoutListeners) {
192 chrome::EnsureMediaDirectoriesExists media_directories;
193 const extensions::Extension* extension =
194 LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
195 ASSERT_TRUE(extension);
196 content::RenderViewHost* host =
197 extensions::ExtensionSystem::Get(browser()->profile())->
198 process_manager()->GetBackgroundHostForExtension(extension->id())->
199 render_view_host();
200 ASSERT_TRUE(host);
201
202 // Get media file systems.
203 ExtensionTestMessageListener get_media_systems_finished(
204 kGetMediaFileSystemsCallbackOK, false /* no reply */);
205 ExecuteCmdAndCheckReply(host, kGetMediaFileSystemsCmd,
206 kGetMediaFileSystemsOK);
207 EXPECT_TRUE(get_media_systems_finished.WaitUntilSatisfied());
208 ASSERT_TRUE(media_directories.num_galleries() != 0);
209
210 // Set up gallery watch.
211 ExecuteCmdAndCheckReply(host, kSetupWatchOnValidGalleriesCmd,
212 kAddGalleryWatchOK);
213
214 // No listeners, modify gallery contents.
215 ExtensionTestMessageListener music_gallery_change_event_received(
216 kGalleryChangedEventReceived, false /* no reply */);
217 EXPECT_TRUE(media_directories.AddNewFileInGallery(chrome::DIR_USER_MUSIC));
218
219 // Remove gallery watch.
220 ExecuteCmdAndCheckReply(host, kRemoveGalleryWatchCmd, kRemoveGalleryWatchOK);
221 }
222
223 IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateGalleryWatchApiTest,
224 SetupGalleryChangedListenerWithoutWatchers) {
225 chrome::EnsureMediaDirectoriesExists media_directories;
226 const extensions::Extension* extension =
227 LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
228 ASSERT_TRUE(extension);
229 content::RenderViewHost* host =
230 extensions::ExtensionSystem::Get(browser()->profile())->
231 process_manager()->GetBackgroundHostForExtension(extension->id())->
232 render_view_host();
233 ASSERT_TRUE(host);
234
235 // Get media file systems.
236 ExtensionTestMessageListener get_media_systems_finished(
237 kGetMediaFileSystemsCallbackOK, false /* no reply */);
238 ExecuteCmdAndCheckReply(host, kGetMediaFileSystemsCmd,
239 kGetMediaFileSystemsOK);
240 EXPECT_TRUE(get_media_systems_finished.WaitUntilSatisfied());
241 ASSERT_TRUE(media_directories.num_galleries() != 0);
242
243 // Add gallery watch listener.
244 ExecuteCmdAndCheckReply(host, kAddGalleryChangedListenerCmd,
245 kAddGalleryChangedListenerOK);
246
247 // Modify gallery contents. Listener should not get called because add watch
248 // request was not called.
249 ExtensionTestMessageListener music_gallery_change_event_received(
250 kGalleryChangedEventReceived, false /* no reply */);
251 EXPECT_TRUE(media_directories.AddNewFileInGallery(chrome::DIR_USER_MUSIC));
252
253 // Remove gallery watch listener.
254 ExecuteCmdAndCheckReply(host, kRemoveGalleryChangedListenerCmd,
255 kRemoveGalleryChangedListenerOK);
256 }
257
258 IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateGalleryWatchApiTest,
259 SetupWatchOnInvalidGallery) {
260 const extensions::Extension* extension =
261 LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
262 ASSERT_TRUE(extension);
263 content::RenderViewHost* host =
264 extensions::ExtensionSystem::Get(browser()->profile())->
265 process_manager()->GetBackgroundHostForExtension(extension->id())->
266 render_view_host();
267 ASSERT_TRUE(host);
268
269 // Set up a invalid gallery watch.
270 ExtensionTestMessageListener invalid_gallery_watch_request_finished(
271 kAddGalleryWatchRequestFailed, false /* no reply */);
272 ExecuteCmdAndCheckReply(host, kSetupWatchOnInvalidGalleryCmd,
273 kAddGalleryWatchOK);
274 EXPECT_TRUE(invalid_gallery_watch_request_finished.WaitUntilSatisfied());
275 }
276 #endif
277
278 #if !defined(OS_WIN)
279 // Gallery watch request is not enabled on non-windows platforms.
280 // Please refer to crbug.com/144491.
281 IN_PROC_BROWSER_TEST_F(MediaGalleriesPrivateGalleryWatchApiTest,
282 SetupGalleryWatch) {
283 chrome::EnsureMediaDirectoriesExists media_directories;
284 const extensions::Extension* extension =
285 LoadExtension(test_data_dir_.AppendASCII(kTestExtensionPath));
286 ASSERT_TRUE(extension);
287 content::RenderViewHost* host =
288 extensions::ExtensionSystem::Get(browser()->profile())->
289 process_manager()->GetBackgroundHostForExtension(extension->id())->
290 render_view_host();
291 ASSERT_TRUE(host);
292
293 // Get media file systems.
294 ExtensionTestMessageListener get_media_systems_finished(
295 kGetMediaFileSystemsCallbackOK, false /* no reply */);
296 ExecuteCmdAndCheckReply(host, kGetMediaFileSystemsCmd,
297 kGetMediaFileSystemsOK);
298 EXPECT_TRUE(get_media_systems_finished.WaitUntilSatisfied());
299 ASSERT_TRUE(media_directories.num_galleries() != 0);
300
301 // Set up a invalid gallery watch.
302 ExtensionTestMessageListener gallery_watch_request_finished(
303 kAddGalleryWatchRequestFailed, false /* no reply */);
304 // Set up gallery watch.
305 ExecuteCmdAndCheckReply(host, kSetupWatchOnValidGalleriesCmd,
306 kAddGalleryWatchOK);
307 EXPECT_TRUE(gallery_watch_request_finished.WaitUntilSatisfied());
308 }
309 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698