Chromium Code Reviews| 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" | |
| 10 #include "ash/common/wm_shell.h" | 9 #include "ash/common/wm_shell.h" |
| 11 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| 12 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 13 #include "base/macros.h" | 12 #include "base/macros.h" |
| 14 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
| 15 #include "base/time/time.h" | 14 #include "base/time/time.h" |
| 16 #include "chrome/browser/chromeos/customization/customization_document.h" | 15 #include "chrome/browser/chromeos/customization/customization_document.h" |
| 17 #include "chrome/browser/chromeos/customization/customization_wallpaper_download er.h" | 16 #include "chrome/browser/chromeos/customization/customization_wallpaper_download er.h" |
| 18 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 17 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
| 19 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager_test_u tils.h" | 18 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager_test_u tils.h" |
| 19 #include "chrome/browser/ui/ash/ash_util.h" | |
| 20 #include "chrome/test/base/in_process_browser_test.h" | 20 #include "chrome/test/base/in_process_browser_test.h" |
| 21 #include "chrome/test/base/testing_browser_process.h" | 21 #include "chrome/test/base/testing_browser_process.h" |
| 22 #include "chromeos/chromeos_switches.h" | 22 #include "chromeos/chromeos_switches.h" |
| 23 #include "content/public/common/service_manager_connection.h" | |
| 23 #include "net/http/http_response_headers.h" | 24 #include "net/http/http_response_headers.h" |
| 24 #include "net/http/http_status_code.h" | 25 #include "net/http/http_status_code.h" |
| 25 #include "net/url_request/test_url_fetcher_factory.h" | 26 #include "net/url_request/test_url_fetcher_factory.h" |
| 26 #include "net/url_request/url_fetcher_impl.h" | 27 #include "net/url_request/url_fetcher_impl.h" |
| 28 #include "services/shell/public/cpp/connector.h" | |
| 27 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
| 28 | 30 |
| 29 namespace chromeos { | 31 namespace chromeos { |
| 30 | 32 |
| 31 namespace { | 33 namespace { |
| 32 | 34 |
| 33 const char kOEMWallpaperURL[] = "http://somedomain.com/image.png"; | 35 const char kOEMWallpaperURL[] = "http://somedomain.com/image.png"; |
| 34 | 36 |
| 35 const char kServicesManifest[] = | 37 const char kServicesManifest[] = |
| 36 "{" | 38 "{" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 79 base::RunLoop().Run(); | 81 base::RunLoop().Run(); |
| 80 } | 82 } |
| 81 | 83 |
| 82 private: | 84 private: |
| 83 bool finished_; | 85 bool finished_; |
| 84 WallpaperManager* wallpaper_manager_; | 86 WallpaperManager* wallpaper_manager_; |
| 85 | 87 |
| 86 DISALLOW_COPY_AND_ASSIGN(TestWallpaperObserver); | 88 DISALLOW_COPY_AND_ASSIGN(TestWallpaperObserver); |
| 87 }; | 89 }; |
| 88 | 90 |
| 91 // The callback used to retrieve the wallpaper from ash. | |
| 92 void GetWallpaperCallback(gfx::ImageSkia* image_out, | |
| 93 wallpaper::WallpaperLayout* layout_out, | |
| 94 base::Closure callback, | |
| 95 const SkBitmap& wallpaper, | |
| 96 wallpaper::WallpaperLayout layout) { | |
| 97 *image_out = gfx::ImageSkia::CreateFrom1xBitmap(wallpaper); | |
| 98 *layout_out = layout; | |
| 99 callback.Run(); | |
| 100 } | |
| 101 | |
| 102 // A helper to synchronously get the wallpaper from ash. | |
| 103 void GetWallpaper(gfx::ImageSkia* image_out, | |
| 104 wallpaper::WallpaperLayout* layout_out) { | |
| 105 auto connection = content::ServiceManagerConnection::GetForProcess(); | |
| 106 auto connector = connection ? connection->GetConnector() : nullptr; | |
|
James Cook
2016/10/14 21:58:02
As before, I don't think these types are complex e
msw
2016/10/17 22:22:47
I reverted these test changes.
| |
| 107 if (!connector) | |
| 108 return; | |
| 109 | |
| 110 ash::mojom::WallpaperControllerPtr wallpaper_controller; | |
| 111 // Under mash the WallpaperController interface is in the ash process. In | |
|
James Cook
2016/10/14 21:58:02
So does this test no longer exercise the classic a
msw
2016/10/17 22:22:48
I restored the classic ash code path here.
| |
| 112 // classic ash we provide it to ourself. | |
| 113 if (chrome::IsRunningInMash()) { | |
| 114 connector->ConnectToInterface("service:ash", &wallpaper_controller); | |
| 115 } else { | |
| 116 connector->ConnectToInterface("service:content_browser", | |
| 117 &wallpaper_controller); | |
| 118 } | |
| 119 base::RunLoop run_loop; | |
| 120 wallpaper_controller->GetWallpaper(base::Bind( | |
| 121 &GetWallpaperCallback, image_out, layout_out, run_loop.QuitClosure())); | |
| 122 run_loop.Run(); | |
| 123 } | |
| 124 | |
| 89 } // namespace | 125 } // namespace |
| 90 | 126 |
| 91 // This is helper class for net::FakeURLFetcherFactory. | 127 // This is helper class for net::FakeURLFetcherFactory. |
| 92 class TestWallpaperImageURLFetcherCallback { | 128 class TestWallpaperImageURLFetcherCallback { |
| 93 public: | 129 public: |
| 94 TestWallpaperImageURLFetcherCallback( | 130 TestWallpaperImageURLFetcherCallback( |
| 95 const GURL& url, | 131 const GURL& url, |
| 96 const size_t require_retries, | 132 const size_t require_retries, |
| 97 const std::vector<unsigned char>& jpeg_data_raw) | 133 const std::vector<unsigned char>& jpeg_data_raw) |
| 98 : url_(url), | 134 : url_(url), |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 213 // requests. | 249 // requests. |
| 214 std::unique_ptr<net::TestURLFetcherFactory> fallback_fetcher_factory_; | 250 std::unique_ptr<net::TestURLFetcherFactory> fallback_fetcher_factory_; |
| 215 std::unique_ptr<net::FakeURLFetcherFactory> fetcher_factory_; | 251 std::unique_ptr<net::FakeURLFetcherFactory> fetcher_factory_; |
| 216 | 252 |
| 217 DISALLOW_COPY_AND_ASSIGN(WallpaperImageFetcherFactory); | 253 DISALLOW_COPY_AND_ASSIGN(WallpaperImageFetcherFactory); |
| 218 }; | 254 }; |
| 219 | 255 |
| 220 class CustomizationWallpaperDownloaderBrowserTest | 256 class CustomizationWallpaperDownloaderBrowserTest |
| 221 : public InProcessBrowserTest { | 257 : public InProcessBrowserTest { |
| 222 public: | 258 public: |
| 223 CustomizationWallpaperDownloaderBrowserTest() | 259 CustomizationWallpaperDownloaderBrowserTest() {} |
| 224 : controller_(NULL), | |
| 225 local_state_(NULL) { | |
| 226 } | |
| 227 | |
| 228 ~CustomizationWallpaperDownloaderBrowserTest() override {} | 260 ~CustomizationWallpaperDownloaderBrowserTest() override {} |
| 229 | 261 |
| 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 { | 262 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 236 command_line->AppendSwitch(chromeos::switches::kLoginManager); | 263 command_line->AppendSwitch(chromeos::switches::kLoginManager); |
| 237 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user"); | 264 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user"); |
| 238 } | 265 } |
| 239 | 266 |
| 240 void TearDownOnMainThread() override { controller_ = NULL; } | |
| 241 | |
| 242 protected: | 267 protected: |
| 243 void CreateCmdlineWallpapers() { | 268 void CreateCmdlineWallpapers() { |
| 244 cmdline_wallpaper_dir_.reset(new base::ScopedTempDir); | 269 cmdline_wallpaper_dir_.reset(new base::ScopedTempDir); |
| 245 ASSERT_TRUE(cmdline_wallpaper_dir_->CreateUniqueTempDir()); | 270 ASSERT_TRUE(cmdline_wallpaper_dir_->CreateUniqueTempDir()); |
| 246 wallpaper_manager_test_utils::CreateCmdlineWallpapers( | 271 wallpaper_manager_test_utils::CreateCmdlineWallpapers( |
| 247 *cmdline_wallpaper_dir_, &wallpaper_manager_command_line_); | 272 *cmdline_wallpaper_dir_, &wallpaper_manager_command_line_); |
| 248 } | 273 } |
| 249 | 274 |
| 250 ash::WallpaperController* controller_; | |
| 251 PrefService* local_state_; | |
| 252 std::unique_ptr<base::CommandLine> wallpaper_manager_command_line_; | 275 std::unique_ptr<base::CommandLine> wallpaper_manager_command_line_; |
| 253 | 276 |
| 254 // Directory created by CreateCmdlineWallpapersAndSetFlags() to store default | 277 // Directory created by CreateCmdlineWallpapersAndSetFlags() to store default |
| 255 // wallpaper images. | 278 // wallpaper images. |
| 256 std::unique_ptr<base::ScopedTempDir> cmdline_wallpaper_dir_; | 279 std::unique_ptr<base::ScopedTempDir> cmdline_wallpaper_dir_; |
| 257 | 280 |
| 258 private: | 281 private: |
| 259 DISALLOW_COPY_AND_ASSIGN(CustomizationWallpaperDownloaderBrowserTest); | 282 DISALLOW_COPY_AND_ASSIGN(CustomizationWallpaperDownloaderBrowserTest); |
| 260 }; | 283 }; |
| 261 | 284 |
| 262 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, | 285 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
| 263 OEMWallpaperIsPresent) { | 286 OEMWallpaperIsPresent) { |
| 264 CreateCmdlineWallpapers(); | 287 CreateCmdlineWallpapers(); |
| 265 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); | 288 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); |
| 266 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); | 289 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); |
| 290 | |
| 291 gfx::ImageSkia image; | |
| 292 wallpaper::WallpaperLayout layout = wallpaper::NUM_WALLPAPER_LAYOUT; | |
| 293 GetWallpaper(&image, &layout); | |
| 267 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 294 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| 268 controller_->GetWallpaper(), | 295 image, wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
| 269 wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); | |
| 270 | |
| 271 WallpaperImageFetcherFactory url_factory( | 296 WallpaperImageFetcherFactory url_factory( |
| 272 GURL(kOEMWallpaperURL), | 297 GURL(kOEMWallpaperURL), |
| 273 wallpaper_manager_test_utils::kWallpaperSize, | 298 wallpaper_manager_test_utils::kWallpaperSize, |
| 274 wallpaper_manager_test_utils::kWallpaperSize, | 299 wallpaper_manager_test_utils::kWallpaperSize, |
| 275 wallpaper_manager_test_utils::kCustomWallpaperColor, | 300 wallpaper_manager_test_utils::kCustomWallpaperColor, |
| 276 0 /* require_retries */); | 301 0 /* require_retries */); |
| 277 | 302 |
| 278 TestWallpaperObserver observer(WallpaperManager::Get()); | 303 TestWallpaperObserver observer(WallpaperManager::Get()); |
| 279 chromeos::ServicesCustomizationDocument* customization = | 304 chromeos::ServicesCustomizationDocument* customization = |
| 280 chromeos::ServicesCustomizationDocument::GetInstance(); | 305 chromeos::ServicesCustomizationDocument::GetInstance(); |
| 281 EXPECT_TRUE( | 306 EXPECT_TRUE( |
| 282 customization->LoadManifestFromString(std::string(kServicesManifest))); | 307 customization->LoadManifestFromString(std::string(kServicesManifest))); |
| 283 | 308 |
| 284 observer.WaitForWallpaperAnimationFinished(); | 309 observer.WaitForWallpaperAnimationFinished(); |
| 310 GetWallpaper(&image, &layout); | |
| 285 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 311 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| 286 controller_->GetWallpaper(), | 312 image, wallpaper_manager_test_utils::kCustomWallpaperColor)); |
| 287 wallpaper_manager_test_utils::kCustomWallpaperColor)); | |
| 288 EXPECT_EQ(1U, url_factory.num_attempts()); | 313 EXPECT_EQ(1U, url_factory.num_attempts()); |
| 289 } | 314 } |
| 290 | 315 |
| 291 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, | 316 IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
| 292 OEMWallpaperRetryFetch) { | 317 OEMWallpaperRetryFetch) { |
| 293 CreateCmdlineWallpapers(); | 318 CreateCmdlineWallpapers(); |
| 294 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); | 319 WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); |
| 295 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); | 320 wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); |
| 321 | |
| 322 gfx::ImageSkia image; | |
| 323 wallpaper::WallpaperLayout layout = wallpaper::NUM_WALLPAPER_LAYOUT; | |
| 324 GetWallpaper(&image, &layout); | |
| 296 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 325 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| 297 controller_->GetWallpaper(), | 326 image, wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
| 298 wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); | |
| 299 | 327 |
| 300 WallpaperImageFetcherFactory url_factory( | 328 WallpaperImageFetcherFactory url_factory( |
| 301 GURL(kOEMWallpaperURL), | 329 GURL(kOEMWallpaperURL), |
| 302 wallpaper_manager_test_utils::kWallpaperSize, | 330 wallpaper_manager_test_utils::kWallpaperSize, |
| 303 wallpaper_manager_test_utils::kWallpaperSize, | 331 wallpaper_manager_test_utils::kWallpaperSize, |
| 304 wallpaper_manager_test_utils::kCustomWallpaperColor, | 332 wallpaper_manager_test_utils::kCustomWallpaperColor, |
| 305 1 /* require_retries */); | 333 1 /* require_retries */); |
| 306 | 334 |
| 307 TestWallpaperObserver observer(WallpaperManager::Get()); | 335 TestWallpaperObserver observer(WallpaperManager::Get()); |
| 308 chromeos::ServicesCustomizationDocument* customization = | 336 chromeos::ServicesCustomizationDocument* customization = |
| 309 chromeos::ServicesCustomizationDocument::GetInstance(); | 337 chromeos::ServicesCustomizationDocument::GetInstance(); |
| 310 EXPECT_TRUE( | 338 EXPECT_TRUE( |
| 311 customization->LoadManifestFromString(std::string(kServicesManifest))); | 339 customization->LoadManifestFromString(std::string(kServicesManifest))); |
| 312 | 340 |
| 313 observer.WaitForWallpaperAnimationFinished(); | 341 observer.WaitForWallpaperAnimationFinished(); |
| 342 GetWallpaper(&image, &layout); | |
| 314 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( | 343 EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| 315 controller_->GetWallpaper(), | 344 image, wallpaper_manager_test_utils::kCustomWallpaperColor)); |
| 316 wallpaper_manager_test_utils::kCustomWallpaperColor)); | |
| 317 | 345 |
| 318 EXPECT_EQ(2U, url_factory.num_attempts()); | 346 EXPECT_EQ(2U, url_factory.num_attempts()); |
| 319 } | 347 } |
| 320 | 348 |
| 321 } // namespace chromeos | 349 } // namespace chromeos |
| OLD | NEW |