Chromium Code Reviews| 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 |