blob: 061e1f74842ef45ddf142f7207c387752d158a1f [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/webui/personalization_app/test/personalization_app_mojom_banned_browsertest_fixture.h"
#include "ash/webui/personalization_app/mojom/personalization_app.mojom.h"
#include "ash/webui/personalization_app/personalization_app_ambient_provider.h"
#include "ash/webui/personalization_app/personalization_app_keyboard_backlight_provider.h"
#include "ash/webui/personalization_app/personalization_app_theme_provider.h"
#include "ash/webui/personalization_app/personalization_app_ui.h"
#include "ash/webui/personalization_app/personalization_app_url_constants.h"
#include "ash/webui/personalization_app/personalization_app_user_provider.h"
#include "ash/webui/personalization_app/personalization_app_wallpaper_provider.h"
#include "base/memory/scoped_refptr.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace ash::personalization_app {
namespace {
class MockPersonalizationAppAmbientProvider
: public PersonalizationAppAmbientProvider {
public:
MOCK_METHOD(void,
BindInterface,
(mojo::PendingReceiver<mojom::AmbientProvider> receiver),
(override));
MOCK_METHOD(void,
IsAmbientModeEnabled,
(IsAmbientModeEnabledCallback callback),
(override));
MOCK_METHOD(void,
SetAmbientObserver,
(mojo::PendingRemote<
ash::personalization_app::mojom::AmbientObserver> observer),
(override));
MOCK_METHOD(void, SetAmbientModeEnabled, (bool enabled), (override));
MOCK_METHOD(void,
SetAnimationTheme,
(ash::AmbientAnimationTheme animation_theme),
(override));
MOCK_METHOD(void,
SetTopicSource,
(ash::AmbientModeTopicSource topic_source),
(override));
MOCK_METHOD(void,
SetTemperatureUnit,
(ash::AmbientModeTemperatureUnit temperature_unit),
(override));
MOCK_METHOD(void,
SetAlbumSelected,
(const std::string& id,
ash::AmbientModeTopicSource topic_source,
bool selected),
(override));
MOCK_METHOD(void, SetPageViewed, (), (override));
MOCK_METHOD(void, StartScreenSaverPreview, (), (override));
MOCK_METHOD(void, FetchSettingsAndAlbums, (), (override));
};
class MockPersonalizationAppKeyboardBacklightProvider
: public PersonalizationAppKeyboardBacklightProvider {
public:
MOCK_METHOD(
void,
BindInterface,
(mojo::PendingReceiver<mojom::KeyboardBacklightProvider> receiver),
(override));
MOCK_METHOD(void,
SetKeyboardBacklightObserver,
(mojo::PendingRemote<mojom::KeyboardBacklightObserver> observer),
(override));
MOCK_METHOD(void,
SetBacklightColor,
(mojom::BacklightColor backlight_color),
(override));
MOCK_METHOD(void,
ShouldShowNudge,
(ShouldShowNudgeCallback callback),
(override));
MOCK_METHOD(void, HandleNudgeShown, (), (override));
};
class MockPersonalizationAppThemeProvider
: public PersonalizationAppThemeProvider {
public:
MOCK_METHOD(void,
BindInterface,
(mojo::PendingReceiver<
ash::personalization_app::mojom::ThemeProvider> receiver),
(override));
MOCK_METHOD(void,
SetThemeObserver,
(mojo::PendingRemote<
ash::personalization_app::mojom::ThemeObserver> observer),
(override));
MOCK_METHOD(void, SetColorModePref, (bool dark_mode_enabled), (override));
MOCK_METHOD(void,
SetColorScheme,
(ash::ColorScheme color_scheme),
(override));
MOCK_METHOD(void, SetStaticColor, (::SkColor static_color), (override));
MOCK_METHOD(void,
SetColorModeAutoScheduleEnabled,
(bool enabled),
(override));
MOCK_METHOD(void,
GenerateSampleColorSchemes,
(GenerateSampleColorSchemesCallback callback),
(override));
MOCK_METHOD(void,
GetColorScheme,
(GetColorSchemeCallback callback),
(override));
MOCK_METHOD(void,
GetStaticColor,
(GetStaticColorCallback callback),
(override));
MOCK_METHOD(void,
IsDarkModeEnabled,
(IsDarkModeEnabledCallback callback),
(override));
MOCK_METHOD(void,
IsColorModeAutoScheduleEnabled,
(IsColorModeAutoScheduleEnabledCallback callback),
(override));
};
class MockPersonalizationAppWallpaperProvider
: public PersonalizationAppWallpaperProvider {
public:
MOCK_METHOD(void,
BindInterface,
(mojo::PendingReceiver<
ash::personalization_app::mojom::WallpaperProvider> receiver),
(override));
bool IsEligibleForGooglePhotos() override { return true; }
void GetWallpaperAsJpegBytes(
content::WebUIDataSource::GotDataCallback callback) override {
std::move(callback).Run(base::MakeRefCounted<base::RefCountedBytes>());
}
MOCK_METHOD(void, MakeTransparent, (), (override));
MOCK_METHOD(void, MakeOpaque, (), (override));
MOCK_METHOD(void,
FetchCollections,
(FetchCollectionsCallback callback),
(override));
MOCK_METHOD(void,
FetchImagesForCollection,
(const std::string& collection_id,
FetchImagesForCollectionCallback callback),
(override));
MOCK_METHOD(void,
FetchGooglePhotosAlbums,
(const absl::optional<std::string>& resume_token,
FetchGooglePhotosAlbumsCallback callback),
(override));
MOCK_METHOD(void,
FetchGooglePhotosEnabled,
(FetchGooglePhotosEnabledCallback callback),
(override));
MOCK_METHOD(void,
FetchGooglePhotosPhotos,
(const absl::optional<std::string>& item_id,
const absl::optional<std::string>& album_id,
const absl::optional<std::string>& resume_token,
FetchGooglePhotosPhotosCallback callback),
(override));
MOCK_METHOD(void,
GetDefaultImageThumbnail,
(GetDefaultImageThumbnailCallback callback),
(override));
MOCK_METHOD(void,
GetLocalImages,
(GetLocalImagesCallback callback),
(override));
MOCK_METHOD(void,
GetLocalImageThumbnail,
(const base::FilePath& path,
GetLocalImageThumbnailCallback callback),
(override));
MOCK_METHOD(void,
SetWallpaperObserver,
(mojo::PendingRemote<
ash::personalization_app::mojom::WallpaperObserver> observer),
(override));
MOCK_METHOD(void,
SelectWallpaper,
(uint64_t image_asset_id,
bool preview_mode,
SelectWallpaperCallback callback),
(override));
MOCK_METHOD(void,
SelectDefaultImage,
(SelectDefaultImageCallback callback),
(override));
MOCK_METHOD(void,
SelectGooglePhotosPhoto,
(const std::string& id,
ash::WallpaperLayout layout,
bool preview_mode,
SelectGooglePhotosPhotoCallback callback),
(override));
MOCK_METHOD(void,
SelectGooglePhotosAlbum,
(const std::string& id, SelectGooglePhotosAlbumCallback callback),
(override));
MOCK_METHOD(void,
GetGooglePhotosDailyRefreshAlbumId,
(GetGooglePhotosDailyRefreshAlbumIdCallback callback),
(override));
MOCK_METHOD(void,
SelectLocalImage,
(const base::FilePath& path,
ash::WallpaperLayout layout,
bool preview_mode,
SelectLocalImageCallback callback),
(override));
MOCK_METHOD(void,
SetCurrentWallpaperLayout,
(ash::WallpaperLayout layout),
(override));
MOCK_METHOD(void,
SetDailyRefreshCollectionId,
(const std::string& collection_id,
SetDailyRefreshCollectionIdCallback callback),
(override));
MOCK_METHOD(void,
GetDailyRefreshCollectionId,
(GetDailyRefreshCollectionIdCallback callback),
(override));
MOCK_METHOD(void,
UpdateDailyRefreshWallpaper,
(UpdateDailyRefreshWallpaperCallback callback),
(override));
MOCK_METHOD(void,
IsInTabletMode,
(IsInTabletModeCallback callback),
(override));
MOCK_METHOD(void, ConfirmPreviewWallpaper, (), (override));
MOCK_METHOD(void, CancelPreviewWallpaper, (), (override));
};
class MockPersonalizationAppUserProvider
: public PersonalizationAppUserProvider {
public:
MOCK_METHOD(void,
BindInterface,
(mojo::PendingReceiver<
ash::personalization_app::mojom::UserProvider> receiver),
(override));
MOCK_METHOD(void,
SetUserImageObserver,
(mojo::PendingRemote<
ash::personalization_app::mojom::UserImageObserver> observer),
(override));
MOCK_METHOD(void, GetUserInfo, (GetUserInfoCallback callback), (override));
MOCK_METHOD(void,
GetDefaultUserImages,
(GetDefaultUserImagesCallback callback),
(override));
MOCK_METHOD(void, SelectImageFromDisk, (), (override));
MOCK_METHOD(void, SelectDefaultImage, (int index), (override));
MOCK_METHOD(void, SelectProfileImage, (), (override));
MOCK_METHOD(void,
SelectCameraImage,
(::mojo_base::BigBuffer data),
(override));
MOCK_METHOD(void, SelectLastExternalUserImage, (), (override));
};
} // namespace
std::unique_ptr<content::WebUIController>
TestPersonalizationAppMojomBannedWebUIProvider::NewWebUI(content::WebUI* web_ui,
const GURL& url) {
auto ambient_provider = std::make_unique<
testing::StrictMock<MockPersonalizationAppAmbientProvider>>();
auto keyboard_backlight_provider = std::make_unique<
testing::StrictMock<MockPersonalizationAppKeyboardBacklightProvider>>();
auto theme_provider = std::make_unique<
testing::StrictMock<MockPersonalizationAppThemeProvider>>();
auto wallpaper_provider = std::make_unique<
testing::StrictMock<MockPersonalizationAppWallpaperProvider>>();
auto user_provider = std::make_unique<
testing::StrictMock<MockPersonalizationAppUserProvider>>();
return std::make_unique<PersonalizationAppUI>(
web_ui, std::move(ambient_provider),
std::move(keyboard_backlight_provider), std::move(theme_provider),
std::move(user_provider), std::move(wallpaper_provider));
}
void PersonalizationAppMojomBannedBrowserTestFixture::SetUpOnMainThread() {
MojoWebUIBrowserTest::SetUpOnMainThread();
test_factory_.AddFactoryOverride(kChromeUIPersonalizationAppHost,
&test_web_ui_provider_);
}
} // namespace ash::personalization_app