| Index: chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc
|
| diff --git a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc
|
| index 0432bcec08641fb71b1cf8ac2fa98ed6d83af7f0..e5b2b8d2d1f3db1efd1be8461cab49509ea014c7 100644
|
| --- a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc
|
| +++ b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc
|
| @@ -4,29 +4,19 @@
|
|
|
| #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
|
|
|
| -#include <stdint.h>
|
| -#include <numeric>
|
| #include <utility>
|
| -#include <vector>
|
|
|
| #include "ash/common/ash_constants.h"
|
| #include "ash/common/wallpaper/wallpaper_controller.h"
|
| #include "ash/common/wm_shell.h"
|
| -#include "ash/public/interfaces/wallpaper.mojom.h"
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| #include "base/command_line.h"
|
| -#include "base/files/file_enumerator.h"
|
| #include "base/files/file_path.h"
|
| -#include "base/files/file_util.h"
|
| #include "base/logging.h"
|
| -#include "base/macros.h"
|
| #include "base/metrics/histogram_macros.h"
|
| -#include "base/path_service.h"
|
| #include "base/sha1.h"
|
| #include "base/strings/string_number_conversions.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/stringprintf.h"
|
| #include "base/sys_info.h"
|
| #include "base/threading/worker_pool.h"
|
| #include "base/time/time.h"
|
| @@ -35,25 +25,23 @@
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/chromeos/customization/customization_document.h"
|
| +#include "chrome/browser/chromeos/extensions/wallpaper_manager_util.h"
|
| #include "chrome/browser/chromeos/login/startup_utils.h"
|
| +#include "chrome/browser/chromeos/login/users/avatar/user_image_loader.h"
|
| #include "chrome/browser/chromeos/login/wizard_controller.h"
|
| -#include "chrome/browser/chromeos/settings/cros_settings.h"
|
| +#include "chrome/browser/image_decoder.h"
|
| #include "chrome/browser/ui/ash/ash_util.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chromeos/chromeos_switches.h"
|
| #include "chromeos/cryptohome/system_salt_getter.h"
|
| -#include "chromeos/dbus/dbus_thread_manager.h"
|
| #include "chromeos/login/user_names.h"
|
| #include "components/prefs/pref_registry_simple.h"
|
| #include "components/prefs/pref_service.h"
|
| #include "components/prefs/scoped_user_pref_update.h"
|
| #include "components/signin/core/account_id/account_id.h"
|
| #include "components/user_manager/known_user.h"
|
| -#include "components/user_manager/user.h"
|
| -#include "components/user_manager/user_image/user_image.h"
|
| -#include "components/user_manager/user_manager.h"
|
| #include "components/user_manager/user_type.h"
|
| #include "components/wallpaper/wallpaper_files_id.h"
|
| #include "components/wallpaper/wallpaper_layout.h"
|
| @@ -62,10 +50,6 @@
|
| #include "content/public/common/content_switches.h"
|
| #include "content/public/common/service_manager_connection.h"
|
| #include "services/service_manager/public/cpp/connector.h"
|
| -#include "third_party/skia/include/core/SkColor.h"
|
| -#include "ui/gfx/codec/jpeg_codec.h"
|
| -#include "ui/gfx/image/image_skia_operations.h"
|
| -#include "ui/gfx/skia_util.h"
|
|
|
| using content::BrowserThread;
|
| using wallpaper::WallpaperManagerBase;
|
| @@ -187,39 +171,24 @@ void SetKnownUserWallpaperFilesId(
|
| wallpaper_files_id.id());
|
| }
|
|
|
| -ash::mojom::WallpaperLayout WallpaperLayoutToMojo(
|
| - wallpaper::WallpaperLayout layout) {
|
| - switch (layout) {
|
| - case wallpaper::WALLPAPER_LAYOUT_CENTER:
|
| - return ash::mojom::WallpaperLayout::CENTER;
|
| - case wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED:
|
| - return ash::mojom::WallpaperLayout::CENTER_CROPPED;
|
| - case wallpaper::WALLPAPER_LAYOUT_STRETCH:
|
| - return ash::mojom::WallpaperLayout::STRETCH;
|
| - case wallpaper::WALLPAPER_LAYOUT_TILE:
|
| - return ash::mojom::WallpaperLayout::TILE;
|
| - case wallpaper::NUM_WALLPAPER_LAYOUT:
|
| - NOTREACHED();
|
| - return ash::mojom::WallpaperLayout::CENTER;
|
| - }
|
| - NOTREACHED();
|
| - return ash::mojom::WallpaperLayout::CENTER;
|
| -}
|
| -
|
| -// A helper to set the wallpaper image for Ash and Mash.
|
| +// A helper to set the wallpaper image for Classic Ash and Mash.
|
| void SetWallpaper(const gfx::ImageSkia& image,
|
| wallpaper::WallpaperLayout layout) {
|
| if (chrome::IsRunningInMash()) {
|
| + // In mash, connect to the WallpaperController interface via mojo.
|
| service_manager::Connector* connector =
|
| content::ServiceManagerConnection::GetForProcess()->GetConnector();
|
| + if (!connector)
|
| + return;
|
| +
|
| ash::mojom::WallpaperControllerPtr wallpaper_controller;
|
| connector->ConnectToInterface("service:ash", &wallpaper_controller);
|
| - wallpaper_controller->SetWallpaper(*image.bitmap(),
|
| - WallpaperLayoutToMojo(layout));
|
| - return;
|
| - }
|
| - // Avoid loading unnecessary wallpapers in tests without a shell instance.
|
| - if (ash::WmShell::HasInstance()) {
|
| + // TODO(crbug.com/655875): Optimize ash wallpaper transport; avoid sending
|
| + // large bitmaps over Mojo; use shared memory like BitmapUploader, etc.
|
| + wallpaper_controller->SetWallpaper(*image.bitmap(), layout);
|
| + } else if (ash::WmShell::HasInstance()) {
|
| + // Note: Wallpaper setting is skipped in unit tests without shell instances.
|
| + // In classic ash, interact with the WallpaperController class directly.
|
| ash::WmShell::Get()->wallpaper_controller()->SetWallpaperImage(image,
|
| layout);
|
| }
|
| @@ -400,6 +369,11 @@ void WallpaperManager::Shutdown() {
|
| wallpaper_manager = nullptr;
|
| }
|
|
|
| +void WallpaperManager::BindRequest(
|
| + ash::mojom::WallpaperManagerRequest request) {
|
| + bindings_.AddBinding(this, std::move(request));
|
| +}
|
| +
|
| WallpaperManager::WallpaperResolution
|
| WallpaperManager::GetAppropriateResolution() {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| @@ -419,12 +393,6 @@ void WallpaperManager::AddObservers() {
|
| }
|
|
|
| void WallpaperManager::EnsureLoggedInUserWallpaperLoaded() {
|
| - // Some browser tests do not have a shell instance. As no wallpaper is needed
|
| - // in these tests anyway, avoid loading one, preventing crashes and speeding
|
| - // up the tests.
|
| - if (!ash::WmShell::HasInstance())
|
| - return;
|
| -
|
| WallpaperInfo info;
|
| if (GetLoggedInUserWallpaperInfo(&info)) {
|
| UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", info.type,
|
| @@ -478,6 +446,10 @@ void WallpaperManager::InitializeWallpaper() {
|
| SetUserWallpaperDelayed(user_manager->GetLoggedInUser()->GetAccountId());
|
| }
|
|
|
| +void WallpaperManager::Open() {
|
| + wallpaper_manager_util::OpenWallpaperManager();
|
| +}
|
| +
|
| void WallpaperManager::Observe(int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) {
|
|
|