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