Chromium Code Reviews| Index: chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc |
| diff --git a/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc b/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc |
| index db2dcc8af1d6fcf05b1d167af6e93c307731c343..42b5f875a06308c20da9651dcd4864738ad3f457 100644 |
| --- a/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc |
| +++ b/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc |
| @@ -6,7 +6,6 @@ |
| #include <vector> |
| -#include "ash/common/wallpaper/wallpaper_controller.h" |
| #include "ash/common/wm_shell.h" |
| #include "base/command_line.h" |
| #include "base/files/scoped_temp_dir.h" |
| @@ -17,13 +16,16 @@ |
| #include "chrome/browser/chromeos/customization/customization_wallpaper_downloader.h" |
| #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
| #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager_test_utils.h" |
| +#include "chrome/browser/ui/ash/ash_util.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "chrome/test/base/testing_browser_process.h" |
| #include "chromeos/chromeos_switches.h" |
| +#include "content/public/common/service_manager_connection.h" |
| #include "net/http/http_response_headers.h" |
| #include "net/http/http_status_code.h" |
| #include "net/url_request/test_url_fetcher_factory.h" |
| #include "net/url_request/url_fetcher_impl.h" |
| +#include "services/shell/public/cpp/connector.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace chromeos { |
| @@ -86,6 +88,40 @@ class TestWallpaperObserver : public WallpaperManager::Observer { |
| DISALLOW_COPY_AND_ASSIGN(TestWallpaperObserver); |
| }; |
| +// The callback used to retrieve the wallpaper from ash. |
| +void GetWallpaperCallback(gfx::ImageSkia* image_out, |
| + wallpaper::WallpaperLayout* layout_out, |
| + base::Closure callback, |
| + const SkBitmap& wallpaper, |
| + wallpaper::WallpaperLayout layout) { |
| + *image_out = gfx::ImageSkia::CreateFrom1xBitmap(wallpaper); |
| + *layout_out = layout; |
| + callback.Run(); |
| +} |
| + |
| +// A helper to synchronously get the wallpaper from ash. |
| +void GetWallpaper(gfx::ImageSkia* image_out, |
| + wallpaper::WallpaperLayout* layout_out) { |
| + auto connection = content::ServiceManagerConnection::GetForProcess(); |
| + 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.
|
| + if (!connector) |
| + return; |
| + |
| + ash::mojom::WallpaperControllerPtr wallpaper_controller; |
| + // 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.
|
| + // classic ash we provide it to ourself. |
| + if (chrome::IsRunningInMash()) { |
| + connector->ConnectToInterface("service:ash", &wallpaper_controller); |
| + } else { |
| + connector->ConnectToInterface("service:content_browser", |
| + &wallpaper_controller); |
| + } |
| + base::RunLoop run_loop; |
| + wallpaper_controller->GetWallpaper(base::Bind( |
| + &GetWallpaperCallback, image_out, layout_out, run_loop.QuitClosure())); |
| + run_loop.Run(); |
| +} |
| + |
| } // namespace |
| // This is helper class for net::FakeURLFetcherFactory. |
| @@ -220,25 +256,14 @@ class WallpaperImageFetcherFactory { |
| class CustomizationWallpaperDownloaderBrowserTest |
| : public InProcessBrowserTest { |
| public: |
| - CustomizationWallpaperDownloaderBrowserTest() |
| - : controller_(NULL), |
| - local_state_(NULL) { |
| - } |
| - |
| + CustomizationWallpaperDownloaderBrowserTest() {} |
| ~CustomizationWallpaperDownloaderBrowserTest() override {} |
| - void SetUpOnMainThread() override { |
| - controller_ = ash::WmShell::Get()->wallpaper_controller(); |
| - local_state_ = g_browser_process->local_state(); |
| - } |
| - |
| void SetUpCommandLine(base::CommandLine* command_line) override { |
| command_line->AppendSwitch(chromeos::switches::kLoginManager); |
| command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user"); |
| } |
| - void TearDownOnMainThread() override { controller_ = NULL; } |
| - |
| protected: |
| void CreateCmdlineWallpapers() { |
| cmdline_wallpaper_dir_.reset(new base::ScopedTempDir); |
| @@ -247,8 +272,6 @@ class CustomizationWallpaperDownloaderBrowserTest |
| *cmdline_wallpaper_dir_, &wallpaper_manager_command_line_); |
| } |
| - ash::WallpaperController* controller_; |
| - PrefService* local_state_; |
| std::unique_ptr<base::CommandLine> wallpaper_manager_command_line_; |
| // Directory created by CreateCmdlineWallpapersAndSetFlags() to store default |
| @@ -264,10 +287,12 @@ IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
| CreateCmdlineWallpapers(); |
| WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); |
| wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); |
| - EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| - controller_->GetWallpaper(), |
| - wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
| + gfx::ImageSkia image; |
| + wallpaper::WallpaperLayout layout = wallpaper::NUM_WALLPAPER_LAYOUT; |
| + GetWallpaper(&image, &layout); |
| + EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| + image, wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
| WallpaperImageFetcherFactory url_factory( |
| GURL(kOEMWallpaperURL), |
| wallpaper_manager_test_utils::kWallpaperSize, |
| @@ -282,9 +307,9 @@ IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
| customization->LoadManifestFromString(std::string(kServicesManifest))); |
| observer.WaitForWallpaperAnimationFinished(); |
| + GetWallpaper(&image, &layout); |
| EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| - controller_->GetWallpaper(), |
| - wallpaper_manager_test_utils::kCustomWallpaperColor)); |
| + image, wallpaper_manager_test_utils::kCustomWallpaperColor)); |
| EXPECT_EQ(1U, url_factory.num_attempts()); |
| } |
| @@ -293,9 +318,12 @@ IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
| CreateCmdlineWallpapers(); |
| WallpaperManager::Get()->SetDefaultWallpaperNow(EmptyAccountId()); |
| wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished(); |
| + |
| + gfx::ImageSkia image; |
| + wallpaper::WallpaperLayout layout = wallpaper::NUM_WALLPAPER_LAYOUT; |
| + GetWallpaper(&image, &layout); |
| EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| - controller_->GetWallpaper(), |
| - wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
| + image, wallpaper_manager_test_utils::kSmallDefaultWallpaperColor)); |
| WallpaperImageFetcherFactory url_factory( |
| GURL(kOEMWallpaperURL), |
| @@ -311,9 +339,9 @@ IN_PROC_BROWSER_TEST_F(CustomizationWallpaperDownloaderBrowserTest, |
| customization->LoadManifestFromString(std::string(kServicesManifest))); |
| observer.WaitForWallpaperAnimationFinished(); |
| + GetWallpaper(&image, &layout); |
| EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor( |
| - controller_->GetWallpaper(), |
| - wallpaper_manager_test_utils::kCustomWallpaperColor)); |
| + image, wallpaper_manager_test_utils::kCustomWallpaperColor)); |
| EXPECT_EQ(2U, url_factory.num_attempts()); |
| } |