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/file_util.h" | 5 #include "base/file_util.h" |
6 #include "base/files/scoped_temp_dir.h" | 6 #include "base/files/scoped_temp_dir.h" |
7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/safe_numerics.h" | 9 #include "base/safe_numerics.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
65 | 65 |
66 } // namespace | 66 } // namespace |
67 | 67 |
68 class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { | 68 class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { |
69 protected: | 69 protected: |
70 MediaGalleriesPlatformAppBrowserTest() : test_jpg_size_(0) {} | 70 MediaGalleriesPlatformAppBrowserTest() : test_jpg_size_(0) {} |
71 virtual ~MediaGalleriesPlatformAppBrowserTest() {} | 71 virtual ~MediaGalleriesPlatformAppBrowserTest() {} |
72 | 72 |
73 virtual void SetUpOnMainThread() OVERRIDE { | 73 virtual void SetUpOnMainThread() OVERRIDE { |
74 PlatformAppBrowserTest::SetUpOnMainThread(); | 74 PlatformAppBrowserTest::SetUpOnMainThread(); |
75 ensure_media_directories_exist_.reset(new EnsureMediaDirectoriesExists); | 75 ensure_media_directories_exists_.reset(new EnsureMediaDirectoriesExists); |
76 PopulatePicturesDirectoryTestData(); | 76 PopulatePicturesDirectoryTestData(); |
77 } | 77 } |
78 | 78 |
79 virtual void TearDownOnMainThread() OVERRIDE { | 79 virtual void TearDownOnMainThread() OVERRIDE { |
80 ensure_media_directories_exist_.reset(); | 80 ensure_media_directories_exists_.reset(); |
81 PlatformAppBrowserTest::TearDownOnMainThread(); | 81 PlatformAppBrowserTest::TearDownOnMainThread(); |
82 } | 82 } |
83 | 83 |
84 bool RunMediaGalleriesTest(const std::string& extension_name) { | 84 bool RunMediaGalleriesTest(const std::string& extension_name) { |
85 base::ListValue empty_list_value; | 85 base::ListValue empty_list_value; |
86 return RunMediaGalleriesTestWithArg(extension_name, empty_list_value); | 86 return RunMediaGalleriesTestWithArg(extension_name, empty_list_value); |
87 } | 87 } |
88 | 88 |
89 bool RunMediaGalleriesTestWithArg(const std::string& extension_name, | 89 bool RunMediaGalleriesTestWithArg(const std::string& extension_name, |
90 const base::ListValue& custom_arg_value) { | 90 const base::ListValue& custom_arg_value) { |
(...skipping 18 matching lines...) Expand all Loading... | |
109 base::string16(), 0)); | 109 base::string16(), 0)); |
110 content::RunAllPendingInMessageLoop(); | 110 content::RunAllPendingInMessageLoop(); |
111 } | 111 } |
112 | 112 |
113 void DetachFakeDevice() { | 113 void DetachFakeDevice() { |
114 StorageMonitor::GetInstance()->receiver()->ProcessDetach(device_id_); | 114 StorageMonitor::GetInstance()->receiver()->ProcessDetach(device_id_); |
115 content::RunAllPendingInMessageLoop(); | 115 content::RunAllPendingInMessageLoop(); |
116 } | 116 } |
117 | 117 |
118 void PopulatePicturesDirectoryTestData() { | 118 void PopulatePicturesDirectoryTestData() { |
119 if (ensure_media_directories_exist_->num_galleries() == 0) | 119 if (ensure_media_directories_exists_->num_galleries() == 0) |
120 return; | 120 return; |
121 | 121 |
122 base::FilePath test_data_path = | 122 base::FilePath test_data_path = |
123 test_data_dir_.AppendASCII("api_test") | 123 test_data_dir_.AppendASCII("api_test") |
124 .AppendASCII("media_galleries") | 124 .AppendASCII("media_galleries") |
125 .AppendASCII("common"); | 125 .AppendASCII("common"); |
126 base::FilePath write_path; | 126 base::FilePath write_path; |
127 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_PICTURES, &write_path)); | 127 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_PICTURES, &write_path)); |
128 | 128 |
129 // Valid file, should show up in JS as a FileEntry. | 129 // Valid file, should show up in JS as a FileEntry. |
130 ASSERT_TRUE(base::CopyFile(test_data_path.AppendASCII("test.jpg"), | 130 ASSERT_TRUE(base::CopyFile(test_data_path.AppendASCII("test.jpg"), |
131 write_path.AppendASCII("test.jpg"))); | 131 write_path.AppendASCII("test.jpg"))); |
132 | 132 |
133 // Invalid file, should not show up as a FileEntry in JS at all. | 133 // Invalid file, should not show up as a FileEntry in JS at all. |
134 ASSERT_TRUE(base::CopyFile(test_data_path.AppendASCII("test.txt"), | 134 ASSERT_TRUE(base::CopyFile(test_data_path.AppendASCII("test.txt"), |
135 write_path.AppendASCII("test.txt"))); | 135 write_path.AppendASCII("test.txt"))); |
136 | 136 |
137 int64 file_size; | 137 int64 file_size; |
138 ASSERT_TRUE(file_util::GetFileSize(test_data_path.AppendASCII("test.jpg"), | 138 ASSERT_TRUE(file_util::GetFileSize(test_data_path.AppendASCII("test.jpg"), |
139 &file_size)); | 139 &file_size)); |
140 test_jpg_size_ = base::checked_numeric_cast<int>(file_size); | 140 test_jpg_size_ = base::checked_numeric_cast<int>(file_size); |
141 } | 141 } |
142 | 142 |
143 #if defined(OS_WIN) || defined(OS_MACOSX) | 143 #if defined(OS_WIN) || defined(OS_MACOSX) |
144 void PopulatePicasaTestData() { | 144 void PopulatePicasaTestData(const base::FilePath& metadata_root) { |
145 // Create Picasa metadata database directories. | |
146 base::FilePath metadata_root; | |
147 #if defined(OS_WIN) | |
148 metadata_root = ensure_media_directories_exist_->GetFakeLocalAppDataPath(); | |
149 #elif defined(OS_MACOSX) | |
150 metadata_root = ensure_media_directories_exist_->GetFakeAppDataPath(); | |
151 #endif | |
152 | |
153 metadata_root = metadata_root.AppendASCII("Google").AppendASCII("Picasa2"); | |
154 base::FilePath picasa_database_path = | 145 base::FilePath picasa_database_path = |
155 metadata_root.AppendASCII(picasa::kPicasaDatabaseDirName); | 146 metadata_root.AppendASCII(picasa::kPicasaDatabaseDirName); |
156 base::FilePath picasa_temp_dir_path = | 147 base::FilePath picasa_temp_dir_path = |
157 metadata_root.AppendASCII(picasa::kPicasaTempDirName); | 148 metadata_root.AppendASCII(picasa::kPicasaTempDirName); |
158 ASSERT_TRUE(file_util::CreateDirectory(picasa_database_path)); | 149 ASSERT_TRUE(file_util::CreateDirectory(picasa_database_path)); |
159 ASSERT_TRUE(file_util::CreateDirectory(picasa_temp_dir_path)); | 150 ASSERT_TRUE(file_util::CreateDirectory(picasa_temp_dir_path)); |
160 | 151 |
161 // Create fake folder directories. | 152 // Create fake folder directories. |
162 base::FilePath folders_root = | 153 base::FilePath folders_root = |
163 ensure_media_directories_exist_->GetFakePicasaFoldersRootPath(); | 154 ensure_media_directories_exists_->GetFakePicasaFoldersRootPath(); |
164 base::FilePath fake_folder_1 = folders_root.AppendASCII("folder1"); | 155 base::FilePath fake_folder_1 = folders_root.AppendASCII("folder1"); |
165 base::FilePath fake_folder_2 = folders_root.AppendASCII("folder2"); | 156 base::FilePath fake_folder_2 = folders_root.AppendASCII("folder2"); |
166 ASSERT_TRUE(file_util::CreateDirectory(fake_folder_1)); | 157 ASSERT_TRUE(file_util::CreateDirectory(fake_folder_1)); |
167 ASSERT_TRUE(file_util::CreateDirectory(fake_folder_2)); | 158 ASSERT_TRUE(file_util::CreateDirectory(fake_folder_2)); |
168 | 159 |
169 // Write folder and album contents. | 160 // Write folder and album contents. |
170 picasa::WriteTestAlbumTable( | 161 picasa::WriteTestAlbumTable( |
171 picasa_database_path, fake_folder_1, fake_folder_2); | 162 picasa_database_path, fake_folder_1, fake_folder_2); |
172 picasa::WriteTestAlbumsImagesIndex(fake_folder_1, fake_folder_2); | 163 picasa::WriteTestAlbumsImagesIndex(fake_folder_1, fake_folder_2); |
173 | 164 |
174 base::FilePath test_data_path = | 165 base::FilePath test_data_path = |
175 test_data_dir_.AppendASCII("api_test").AppendASCII("media_galleries") | 166 test_data_dir_.AppendASCII("api_test").AppendASCII("media_galleries") |
176 .AppendASCII("common"); | 167 .AppendASCII("common"); |
177 ASSERT_TRUE(base::CopyFile( | 168 ASSERT_TRUE(base::CopyFile( |
178 test_data_path.AppendASCII("test.jpg"), | 169 test_data_path.AppendASCII("test.jpg"), |
179 fake_folder_1.AppendASCII("InBoth.jpg"))); | 170 fake_folder_1.AppendASCII("InBoth.jpg"))); |
180 ASSERT_TRUE(base::CopyFile( | 171 ASSERT_TRUE(base::CopyFile( |
181 test_data_path.AppendASCII("test.jpg"), | 172 test_data_path.AppendASCII("test.jpg"), |
182 fake_folder_1.AppendASCII("InSecondAlbumOnly.jpg"))); | 173 fake_folder_1.AppendASCII("InSecondAlbumOnly.jpg"))); |
183 ASSERT_TRUE(base::CopyFile( | 174 ASSERT_TRUE(base::CopyFile( |
184 test_data_path.AppendASCII("test.jpg"), | 175 test_data_path.AppendASCII("test.jpg"), |
185 fake_folder_2.AppendASCII("InFirstAlbumOnly.jpg"))); | 176 fake_folder_2.AppendASCII("InFirstAlbumOnly.jpg"))); |
186 } | 177 } |
187 #endif | 178 #endif |
188 | 179 |
189 int num_galleries() const { | 180 int num_galleries() const { |
190 return ensure_media_directories_exist_->num_galleries(); | 181 return ensure_media_directories_exists_->num_galleries(); |
191 } | 182 } |
192 | 183 |
193 int test_jpg_size() const { return test_jpg_size_; } | 184 int test_jpg_size() const { return test_jpg_size_; } |
194 | 185 |
186 EnsureMediaDirectoriesExists* ensure_media_directories_exists() const { | |
187 return ensure_media_directories_exists_.get(); | |
188 } | |
189 | |
195 private: | 190 private: |
196 std::string device_id_; | 191 std::string device_id_; |
197 int test_jpg_size_; | 192 int test_jpg_size_; |
198 scoped_ptr<EnsureMediaDirectoriesExists> ensure_media_directories_exist_; | 193 scoped_ptr<EnsureMediaDirectoriesExists> ensure_media_directories_exists_; |
199 }; | 194 }; |
200 | 195 |
201 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, | 196 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, |
202 MediaGalleriesNoAccess) { | 197 MediaGalleriesNoAccess) { |
203 base::ListValue custom_args; | 198 base::ListValue custom_args; |
204 custom_args.AppendInteger(num_galleries()); | 199 custom_args.AppendInteger(num_galleries()); |
205 | 200 |
206 ASSERT_TRUE(RunMediaGalleriesTestWithArg("no_access", custom_args)) | 201 ASSERT_TRUE(RunMediaGalleriesTestWithArg("no_access", custom_args)) |
207 << message_; | 202 << message_; |
208 } | 203 } |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
254 << message_; | 249 << message_; |
255 | 250 |
256 DetachFakeDevice(); | 251 DetachFakeDevice(); |
257 } | 252 } |
258 | 253 |
259 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, | 254 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, |
260 GetFilesystemMetadata) { | 255 GetFilesystemMetadata) { |
261 ASSERT_TRUE(RunMediaGalleriesTest("metadata")) << message_; | 256 ASSERT_TRUE(RunMediaGalleriesTest("metadata")) << message_; |
262 } | 257 } |
263 | 258 |
264 #if defined(OS_WIN) || defined(OS_MACOSX) | 259 #if defined(OS_WIN) |
265 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, Picasa) { | 260 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, |
266 PopulatePicasaTestData(); | 261 PicasaDefaultLocation) { |
262 base::FilePath metadata_root = | |
263 ensure_media_directories_exists()->GetFakeLocalAppDataPath() | |
264 .AppendASCII("Google").AppendASCII("Picasa2"); | |
vandebo (ex-Chrome)
2013/10/02 15:32:46
nit: wrapping
tommycli
2013/10/02 16:44:39
Done.
| |
265 PopulatePicasaTestData(metadata_root); | |
267 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/picasa")) | 266 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/picasa")) |
268 << message_; | 267 << message_; |
269 } | 268 } |
270 #endif // defined(OS_WIN) || defined(OS_MACOSX) | 269 |
270 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, | |
271 PicasaCustomLocation) { | |
272 base::ScopedTempDir fake_alternate_app_data_dir; | |
273 ASSERT_TRUE(fake_alternate_app_data_dir.CreateUniqueTempDir()); | |
274 ensure_media_directories_exists()->WriteCustomPicasaAppDataPathToRegistry( | |
275 fake_alternate_app_data_dir.path()); | |
276 base::FilePath metadata_root = fake_alternate_app_data_dir.path() | |
277 .AppendASCII("Google").AppendASCII("Picasa2"); | |
278 PopulatePicasaTestData(metadata_root); | |
279 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/picasa")) | |
280 << message_; | |
281 } | |
282 #endif // defined(OS_WIN) | |
283 | |
284 #if defined(OS_MACOSX) | |
285 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, | |
286 PicasaDefaultLocation) { | |
287 base::FilePath metadata_root = | |
288 ensure_media_directories_exists()->GetFakeAppDataPath() | |
289 .AppendASCII("Google").AppendASCII("Picasa3"); | |
vandebo (ex-Chrome)
2013/10/02 15:32:46
nit: wrapping
vandebo (ex-Chrome)
2013/10/02 15:32:46
3 vs 2? looks like the only difference between the
tommycli
2013/10/02 16:44:39
Done.
tommycli
2013/10/02 16:44:39
Also GetFakeAppDataPath vs GetFakeLocalAppDataPath
| |
290 PopulatePicasaTestData(metadata_root); | |
291 ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/picasa")) | |
292 << message_; | |
293 } | |
294 #endif // defined(OS_MACOSX) | |
OLD | NEW |