OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "ash/common/wallpaper/wallpaper_controller.h" | 9 #include "ash/common/wallpaper/wallpaper_controller.h" |
10 #include "ash/common/wm_shell.h" | 10 #include "ash/common/wm_shell.h" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 | 88 |
89 } // namespace | 89 } // namespace |
90 | 90 |
91 // This is helper class for net::FakeURLFetcherFactory. | 91 // This is helper class for net::FakeURLFetcherFactory. |
92 class TestWallpaperImageURLFetcherCallback { | 92 class TestWallpaperImageURLFetcherCallback { |
93 public: | 93 public: |
94 TestWallpaperImageURLFetcherCallback( | 94 TestWallpaperImageURLFetcherCallback( |
95 const GURL& url, | 95 const GURL& url, |
96 const size_t require_retries, | 96 const size_t require_retries, |
97 const std::vector<unsigned char>& jpeg_data_raw) | 97 const std::vector<unsigned char>& jpeg_data_raw) |
98 : url_(url), | 98 : url_(url), require_retries_(require_retries), factory_(nullptr) { |
99 require_retries_(require_retries), | |
100 factory_(NULL) { | |
101 jpeg_data_.resize(jpeg_data_raw.size()); | 99 jpeg_data_.resize(jpeg_data_raw.size()); |
102 std::copy(jpeg_data_raw.begin(), jpeg_data_raw.end(), jpeg_data_.begin()); | 100 std::copy(jpeg_data_raw.begin(), jpeg_data_raw.end(), jpeg_data_.begin()); |
103 } | 101 } |
104 | 102 |
105 std::unique_ptr<net::FakeURLFetcher> CreateURLFetcher( | 103 std::unique_ptr<net::FakeURLFetcher> CreateURLFetcher( |
106 const GURL& url, | 104 const GURL& url, |
107 net::URLFetcherDelegate* delegate, | 105 net::URLFetcherDelegate* delegate, |
108 const std::string& response_data, | 106 const std::string& response_data, |
109 net::HttpStatusCode response_code, | 107 net::HttpStatusCode response_code, |
110 net::URLRequestStatus::Status status) { | 108 net::URLRequestStatus::Status status) { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 int height, | 190 int height, |
193 SkColor color, | 191 SkColor color, |
194 const size_t require_retries) { | 192 const size_t require_retries) { |
195 std::vector<unsigned char> oem_wallpaper_; | 193 std::vector<unsigned char> oem_wallpaper_; |
196 ASSERT_TRUE(wallpaper_manager_test_utils::CreateJPEGImage( | 194 ASSERT_TRUE(wallpaper_manager_test_utils::CreateJPEGImage( |
197 width, height, color, &oem_wallpaper_)); | 195 width, height, color, &oem_wallpaper_)); |
198 | 196 |
199 url_callback_.reset(new TestWallpaperImageURLFetcherCallback( | 197 url_callback_.reset(new TestWallpaperImageURLFetcherCallback( |
200 url, require_retries, oem_wallpaper_)); | 198 url, require_retries, oem_wallpaper_)); |
201 fallback_fetcher_factory_.reset(new net::TestURLFetcherFactory); | 199 fallback_fetcher_factory_.reset(new net::TestURLFetcherFactory); |
202 net::URLFetcherImpl::set_factory(NULL); | 200 net::URLFetcherImpl::set_factory(nullptr); |
203 fetcher_factory_.reset(new net::FakeURLFetcherFactory( | 201 fetcher_factory_.reset(new net::FakeURLFetcherFactory( |
204 fallback_fetcher_factory_.get(), | 202 fallback_fetcher_factory_.get(), |
205 base::Bind(&TestWallpaperImageURLFetcherCallback::CreateURLFetcher, | 203 base::Bind(&TestWallpaperImageURLFetcherCallback::CreateURLFetcher, |
206 base::Unretained(url_callback_.get())))); | 204 base::Unretained(url_callback_.get())))); |
207 url_callback_->Initialize(fetcher_factory_.get()); | 205 url_callback_->Initialize(fetcher_factory_.get()); |
208 } | 206 } |
209 | 207 |
210 std::unique_ptr<TestWallpaperImageURLFetcherCallback> url_callback_; | 208 std::unique_ptr<TestWallpaperImageURLFetcherCallback> url_callback_; |
211 | 209 |
212 // Use a test factory as a fallback so we don't have to deal with other | 210 // Use a test factory as a fallback so we don't have to deal with other |
213 // requests. | 211 // requests. |
214 std::unique_ptr<net::TestURLFetcherFactory> fallback_fetcher_factory_; | 212 std::unique_ptr<net::TestURLFetcherFactory> fallback_fetcher_factory_; |
215 std::unique_ptr<net::FakeURLFetcherFactory> fetcher_factory_; | 213 std::unique_ptr<net::FakeURLFetcherFactory> fetcher_factory_; |
216 | 214 |
217 DISALLOW_COPY_AND_ASSIGN(WallpaperImageFetcherFactory); | 215 DISALLOW_COPY_AND_ASSIGN(WallpaperImageFetcherFactory); |
218 }; | 216 }; |
219 | 217 |
220 class CustomizationWallpaperDownloaderBrowserTest | 218 class CustomizationWallpaperDownloaderBrowserTest |
221 : public InProcessBrowserTest { | 219 : public InProcessBrowserTest { |
222 public: | 220 public: |
223 CustomizationWallpaperDownloaderBrowserTest() | 221 CustomizationWallpaperDownloaderBrowserTest() {} |
224 : controller_(NULL), | |
225 local_state_(NULL) { | |
226 } | |
227 | |
228 ~CustomizationWallpaperDownloaderBrowserTest() override {} | 222 ~CustomizationWallpaperDownloaderBrowserTest() override {} |
229 | 223 |
230 void SetUpOnMainThread() override { | |
231 controller_ = ash::WmShell::Get()->wallpaper_controller(); | |
232 local_state_ = g_browser_process->local_state(); | |
233 } | |
234 | |
235 void SetUpCommandLine(base::CommandLine* command_line) override { | 224 void SetUpCommandLine(base::CommandLine* command_line) override { |
236 command_line->AppendSwitch(chromeos::switches::kLoginManager); | 225 command_line->AppendSwitch(chromeos::switches::kLoginManager); |
237 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user"); | 226 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user"); |
238 } | 227 } |
239 | 228 |
240 void TearDownOnMainThread() override { controller_ = NULL; } | |
241 | |
242 protected: | 229 protected: |
243 void CreateCmdlineWallpapers() { | 230 void CreateCmdlineWallpapers() { |
244 cmdline_wallpaper_dir_.reset(new base::ScopedTempDir); | 231 cmdline_wallpaper_dir_.reset(new base::ScopedTempDir); |
245 ASSERT_TRUE(cmdline_wallpaper_dir_->CreateUniqueTempDir()); | 232 ASSERT_TRUE(cmdline_wallpaper_dir_->CreateUniqueTempDir()); |
246 wallpaper_manager_test_utils::CreateCmdlineWallpapers( | 233 wallpaper_manager_test_utils::CreateCmdlineWallpapers( |
247 *cmdline_wallpaper_dir_, &wallpaper_manager_command_line_); | 234 *cmdline_wallpaper_dir_, &wallpaper_manager_command_line_); |
248 } | 235 } |
249 | 236 |
250 ash::WallpaperController* controller_; | |
251 PrefService* local_state_; | |
252 std::unique_ptr<base::CommandLine> wallpaper_manager_command_line_; | 237 std::unique_ptr<base::CommandLine> wallpaper_manager_command_line_; |
253 | 238 |
254 // Directory created by CreateCmdlineWallpapersAndSetFlags() to store default | 239 // Directory created by CreateCmdlineWallpapersAndSetFlags() to store default |
255 // wallpaper images. | 240 // wallpaper images. |
256 std::unique_ptr<base::ScopedTempDir> cmdline_wallpaper_dir_; | 241 std::unique_ptr<base::ScopedTempDir> cmdline_wallpaper_dir_; |
257 | 242 |
258 private: | 243 private: |
259 DISALLOW_COPY_AND_ASSIGN(CustomizationWallpaperDownloaderBrowserTest); | 244 DISALLOW_COPY_AND_ASSIGN(CustomizationWallpaperDownloaderBrowserTest); |
260 }; | 245 }; |
261 | 246 |
262 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, | 247 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
263 OEMWallpaperIsPresent) { | 248 OEMWallpaperIsPresent) { |
264 CreateCmdlineWallpapers(); | 249 CreateCmdlineWallpapers(); |
265 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); | 250 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); |
266 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); | 251 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); |
267 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 252 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
268 controller_->GetWallpaper(), | 253 ash::WmShell::Get()->wallpaper_controller()->GetWallpaper(), |
269 wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); | 254 wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
270 | 255 |
271 WallpaperImageFetcherFactory url_factory( | 256 WallpaperImageFetcherFactory url_factory( |
272 GURL(kOEMWallpaperURL), | 257 GURL(kOEMWallpaperURL), |
273 wallpaper_manager_test_utils::kWallpaperSize, | 258 wallpaper_manager_test_utils::kWallpaperSize, |
274 wallpaper_manager_test_utils::kWallpaperSize, | 259 wallpaper_manager_test_utils::kWallpaperSize, |
275 wallpaper_manager_test_utils::kCustomWallpaperColor, | 260 wallpaper_manager_test_utils::kCustomWallpaperColor, |
276 0 /* require_retries */); | 261 0 /* require_retries */); |
277 | 262 |
278 TestWallpaperObserver observer(WallpaperManager::Get()); | 263 TestWallpaperObserver observer(WallpaperManager::Get()); |
279 chromeos::ServicesCustomizationDocument* customization = | 264 chromeos::ServicesCustomizationDocument* customization = |
280 chromeos::ServicesCustomizationDocument::GetInstance(); | 265 chromeos::ServicesCustomizationDocument::GetInstance(); |
281 EXPECT_TRUE( | 266 EXPECT_TRUE( |
282 customization->LoadManifestFromString(std::string(kServicesManifest))); | 267 customization->LoadManifestFromString(std::string(kServicesManifest))); |
283 | 268 |
284 observer.WaitForWallpaperAnimationFinished(); | 269 observer.WaitForWallpaperAnimationFinished(); |
285 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 270 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
286 controller_->GetWallpaper(), | 271 ash::WmShell::Get()->wallpaper_controller()->GetWallpaper(), |
287 wallpaper_manager_test_utils::kCustomWallpaperColor)); | 272 wallpaper_manager_test_utils::kCustomWallpaperColor)); |
288 EXPECT_EQ(1U, url_factory.num_attempts()); | 273 EXPECT_EQ(1U, url_factory.num_attempts()); |
289 } | 274 } |
290 | 275 |
291 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, | 276 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
292 OEMWallpaperRetryFetch) { | 277 OEMWallpaperRetryFetch) { |
293 CreateCmdlineWallpapers(); | 278 CreateCmdlineWallpapers(); |
294 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); | 279 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); |
295 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); | 280 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); |
296 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 281 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
297 controller_->GetWallpaper(), | 282 ash::WmShell::Get()->wallpaper_controller()->GetWallpaper(), |
298 wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); | 283 wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
299 | 284 |
300 WallpaperImageFetcherFactory url_factory( | 285 WallpaperImageFetcherFactory url_factory( |
301 GURL(kOEMWallpaperURL), | 286 GURL(kOEMWallpaperURL), |
302 wallpaper_manager_test_utils::kWallpaperSize, | 287 wallpaper_manager_test_utils::kWallpaperSize, |
303 wallpaper_manager_test_utils::kWallpaperSize, | 288 wallpaper_manager_test_utils::kWallpaperSize, |
304 wallpaper_manager_test_utils::kCustomWallpaperColor, | 289 wallpaper_manager_test_utils::kCustomWallpaperColor, |
305 1 /* require_retries */); | 290 1 /* require_retries */); |
306 | 291 |
307 TestWallpaperObserver observer(WallpaperManager::Get()); | 292 TestWallpaperObserver observer(WallpaperManager::Get()); |
308 chromeos::ServicesCustomizationDocument* customization = | 293 chromeos::ServicesCustomizationDocument* customization = |
309 chromeos::ServicesCustomizationDocument::GetInstance(); | 294 chromeos::ServicesCustomizationDocument::GetInstance(); |
310 EXPECT_TRUE( | 295 EXPECT_TRUE( |
311 customization->LoadManifestFromString(std::string(kServicesManifest))); | 296 customization->LoadManifestFromString(std::string(kServicesManifest))); |
312 | 297 |
313 observer.WaitForWallpaperAnimationFinished(); | 298 observer.WaitForWallpaperAnimationFinished(); |
314 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 299 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
315 controller_->GetWallpaper(), | 300 ash::WmShell::Get()->wallpaper_controller()->GetWallpaper(), |
316 wallpaper_manager_test_utils::kCustomWallpaperColor)); | 301 wallpaper_manager_test_utils::kCustomWallpaperColor)); |
317 | 302 |
318 EXPECT_EQ(2U, url_factory.num_attempts()); | 303 EXPECT_EQ(2U, url_factory.num_attempts()); |
319 } | 304 } |
320 | 305 |
321 } // namespace chromeos | 306 } // namespace chromeos |
OLD | NEW |