Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5309)

Unified Diff: chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc

Issue 2413503002: Cleanup mojo Wallpaper interfaces for mash. (Closed)
Patch Set: Sync and rebase again... Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h ('k') | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h ('k') | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698