| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/file_path.h" | |
| 7 #include "base/file_util.h" | |
| 8 #include "base/path_service.h" | |
| 9 #include "base/stringprintf.h" | 6 #include "base/stringprintf.h" |
| 10 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 11 #include "chrome/browser/extensions/extension_apitest.h" | 8 #include "chrome/browser/extensions/extension_apitest.h" |
| 12 #include "chrome/browser/extensions/extension_process_manager.h" | 9 #include "chrome/browser/extensions/extension_process_manager.h" |
| 13 #include "chrome/browser/extensions/extension_system.h" | 10 #include "chrome/browser/extensions/extension_system.h" |
| 14 #include "chrome/browser/extensions/platform_app_browsertest_util.h" | 11 #include "chrome/browser/extensions/platform_app_browsertest_util.h" |
| 12 #include "chrome/browser/media_gallery/media_galleries_test_util.h" |
| 15 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
| 16 #include "chrome/common/chrome_paths.h" | |
| 17 #include "chrome/common/chrome_switches.h" | 14 #include "chrome/common/chrome_switches.h" |
| 18 #include "content/public/browser/render_view_host.h" | 15 #include "content/public/browser/render_view_host.h" |
| 19 | 16 |
| 20 #if defined(OS_LINUX) | |
| 21 #include "base/environment.h" | |
| 22 #include "base/scoped_temp_dir.h" | |
| 23 #endif | |
| 24 | |
| 25 using extensions::PlatformAppBrowserTest; | 17 using extensions::PlatformAppBrowserTest; |
| 26 | 18 |
| 27 namespace { | 19 namespace { |
| 28 | 20 |
| 29 class ExperimentalMediaGalleriesApiTest : public ExtensionApiTest { | 21 class ExperimentalMediaGalleriesApiTest : public ExtensionApiTest { |
| 30 public: | 22 public: |
| 31 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 23 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 32 ExtensionApiTest::SetUpCommandLine(command_line); | 24 ExtensionApiTest::SetUpCommandLine(command_line); |
| 33 command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis); | 25 command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis); |
| 34 } | 26 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 47 | 39 |
| 48 static const char kTestGalleries[] = "testGalleries(%d)"; | 40 static const char kTestGalleries[] = "testGalleries(%d)"; |
| 49 ResultCatcher catcher; | 41 ResultCatcher catcher; |
| 50 host->render_view_host()->ExecuteJavascriptInWebFrame( | 42 host->render_view_host()->ExecuteJavascriptInWebFrame( |
| 51 string16(), | 43 string16(), |
| 52 ASCIIToUTF16(base::StringPrintf(kTestGalleries, expected_galleries))); | 44 ASCIIToUTF16(base::StringPrintf(kTestGalleries, expected_galleries))); |
| 53 EXPECT_TRUE(catcher.GetNextResult()) << message_; | 45 EXPECT_TRUE(catcher.GetNextResult()) << message_; |
| 54 } | 46 } |
| 55 }; | 47 }; |
| 56 | 48 |
| 57 class EnsureMediaDirectoriesExists { | |
| 58 public: | |
| 59 EnsureMediaDirectoriesExists() : num_galleries_(0) { | |
| 60 Init(); | |
| 61 } | |
| 62 | |
| 63 int num_galleries() const { return num_galleries_; } | |
| 64 | |
| 65 private: | |
| 66 void Init() { | |
| 67 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) | |
| 68 return; | |
| 69 #elif defined(OS_LINUX) | |
| 70 // On Linux, the media directories may not exist by default, so override | |
| 71 // the settings to point to a temp directory with the media directories. | |
| 72 ASSERT_TRUE(xdg_dir_.CreateUniqueTempDir()); | |
| 73 const FilePath xdg_path = xdg_dir_.path(); | |
| 74 const FilePath music_dir(xdg_path.Append("Megaman")); | |
| 75 const FilePath pictures_dir(xdg_path.Append("Pitfall")); | |
| 76 const FilePath videos_dir(xdg_path.Append("VVVV")); | |
| 77 ASSERT_TRUE(file_util::CreateDirectory(music_dir)); | |
| 78 ASSERT_TRUE(file_util::CreateDirectory(pictures_dir)); | |
| 79 ASSERT_TRUE(file_util::CreateDirectory(videos_dir)); | |
| 80 | |
| 81 const FilePath config_file(xdg_path.Append("user-dirs.dirs")); | |
| 82 std::string xdg_user_dir_data = base::StringPrintf( | |
| 83 "XDG_MUSIC_DIR=\"%s\"\n" | |
| 84 "XDG_PICTURES_DIR=\"%s\"\n" | |
| 85 "XDG_VIDEOS_DIR=\"%s\"\n", | |
| 86 music_dir.value().c_str(), | |
| 87 pictures_dir.value().c_str(), | |
| 88 videos_dir.value().c_str()); | |
| 89 ASSERT_TRUE(file_util::WriteFile(config_file, | |
| 90 xdg_user_dir_data.c_str(), | |
| 91 xdg_user_dir_data.size())); | |
| 92 | |
| 93 scoped_ptr<base::Environment> env(base::Environment::Create()); | |
| 94 env->SetVar("XDG_CONFIG_HOME", xdg_path.value()); | |
| 95 | |
| 96 num_galleries_ = 3; | |
| 97 #else | |
| 98 const int kDirectoryKeys[] = { | |
| 99 chrome::DIR_USER_MUSIC, | |
| 100 chrome::DIR_USER_PICTURES, | |
| 101 chrome::DIR_USER_VIDEOS, | |
| 102 }; | |
| 103 | |
| 104 for (size_t i = 0; i < arraysize(kDirectoryKeys); ++i) { | |
| 105 FilePath path; | |
| 106 if (PathService::Get(kDirectoryKeys[i], &path) && | |
| 107 file_util::DirectoryExists(path)) { | |
| 108 ++num_galleries_; | |
| 109 } | |
| 110 } | |
| 111 ASSERT_GT(num_galleries_, 0); | |
| 112 #endif | |
| 113 } | |
| 114 | |
| 115 #if defined(OS_LINUX) | |
| 116 ScopedTempDir xdg_dir_; | |
| 117 #endif | |
| 118 | |
| 119 int num_galleries_; | |
| 120 | |
| 121 DISALLOW_COPY_AND_ASSIGN(EnsureMediaDirectoriesExists); | |
| 122 }; | |
| 123 | |
| 124 } // namespace | 49 } // namespace |
| 125 | 50 |
| 126 IN_PROC_BROWSER_TEST_F(PlatformAppMediaGalleriesBrowserTest, NoGalleries) { | 51 IN_PROC_BROWSER_TEST_F(PlatformAppMediaGalleriesBrowserTest, NoGalleries) { |
| 127 EnsureMediaDirectoriesExists media_directories; | 52 chrome::EnsureMediaDirectoriesExists media_directories; |
| 128 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/no_galleries")) | 53 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/no_galleries")) |
| 129 << message_; | 54 << message_; |
| 130 } | 55 } |
| 131 | 56 |
| 132 IN_PROC_BROWSER_TEST_F(PlatformAppMediaGalleriesBrowserTest, | 57 IN_PROC_BROWSER_TEST_F(PlatformAppMediaGalleriesBrowserTest, |
| 133 MediaGalleriesRead) { | 58 MediaGalleriesRead) { |
| 134 EnsureMediaDirectoriesExists media_directories; | 59 chrome::EnsureMediaDirectoriesExists media_directories; |
| 135 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/read_access")) | 60 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/read_access")) |
| 136 << message_; | 61 << message_; |
| 137 RunSecondTestPhase(media_directories.num_galleries()); | 62 RunSecondTestPhase(media_directories.num_galleries()); |
| 138 } | 63 } |
| 139 | 64 |
| 140 IN_PROC_BROWSER_TEST_F(PlatformAppMediaGalleriesBrowserTest, | 65 IN_PROC_BROWSER_TEST_F(PlatformAppMediaGalleriesBrowserTest, |
| 141 MediaGalleriesNoAccess) { | 66 MediaGalleriesNoAccess) { |
| 142 EnsureMediaDirectoriesExists media_directories; | 67 chrome::EnsureMediaDirectoriesExists media_directories; |
| 143 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/no_access")) | 68 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/no_access")) |
| 144 << message_; | 69 << message_; |
| 145 RunSecondTestPhase(media_directories.num_galleries()); | 70 RunSecondTestPhase(media_directories.num_galleries()); |
| 146 } | 71 } |
| 147 | 72 |
| 148 IN_PROC_BROWSER_TEST_F(ExperimentalMediaGalleriesApiTest, | 73 IN_PROC_BROWSER_TEST_F(ExperimentalMediaGalleriesApiTest, |
| 149 ExperimentalMediaGalleries) { | 74 ExperimentalMediaGalleries) { |
| 150 ASSERT_TRUE(RunExtensionTest("media_galleries/experimental")) << message_; | 75 ASSERT_TRUE(RunExtensionTest("media_galleries/experimental")) << message_; |
| 151 } | 76 } |
| OLD | NEW |