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

Unified Diff: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc

Issue 2931063004: Extract colors from wallpaper and dynamically update login screen overlay (Closed)
Patch Set: Will clean up this CL when crbug.com/733709 is fixed Created 3 years, 6 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
Index: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 8f9b594ffc3d42a3864fe854ffe2dfb5deeb335c..2c7aa730b4d6162beba39e1f592b7e8d9cb8ee08 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -11,6 +11,7 @@
#include "ash/public/interfaces/constants.mojom.h"
#include "ash/public/interfaces/tray_action.mojom.h"
+#include "ash/shelf/shelf_constants.h"
#include "ash/shell.h"
#include "ash/system/devicetype_utils.h"
#include "ash/wm/lock_state_controller.h"
@@ -52,7 +53,6 @@
#include "chrome/browser/chromeos/login/ui/login_feedback.h"
#include "chrome/browser/chromeos/login/ui/webui_login_display.h"
#include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h"
-#include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
#include "chrome/browser/chromeos/policy/device_local_account.h"
@@ -102,6 +102,7 @@
#include "ui/base/ime/chromeos/input_method_manager.h"
#include "ui/base/ime/chromeos/input_method_util.h"
#include "ui/base/webui/web_ui_util.h"
+#include "ui/gfx/color_utils.h"
namespace {
@@ -127,6 +128,11 @@ const char kNoLockScreenApps[] = "LOCK_SCREEN_APPS_STATE.NONE";
const char kBackgroundLockScreenApps[] = "LOCK_SCREEN_APPS_STATE.BACKGROUND";
const char kForegroundLockScreenApps[] = "LOCK_SCREEN_APPS_STATE.FOREGROUND";
+// The alpha value for the signin screen background.
+// TODO(crbug.com/732566): Move all constants related to views-based signin
+// screen to a separate file.
+constexpr int kLoginTranslucentAlpha = 76;
+
class CallOnReturn {
public:
explicit CallOnReturn(const base::Closure& callback)
@@ -281,6 +287,8 @@ SigninScreenHandler::SigninScreenHandler(
lock_screen_apps::StateController::IsEnabled()) {
lock_screen_apps_observer_.Add(lock_screen_apps::StateController::Get());
}
+ if (WallpaperManager::HasInstance())
+ WallpaperManager::Get()->AddObserver(this);
}
SigninScreenHandler::~SigninScreenHandler() {
@@ -300,6 +308,8 @@ SigninScreenHandler::~SigninScreenHandler() {
network_state_informer_->RemoveObserver(this);
proximity_auth::ScreenlockBridge::Get()->SetLockHandler(nullptr);
proximity_auth::ScreenlockBridge::Get()->SetFocusedUser(EmptyAccountId());
+ if (WallpaperManager::HasInstance())
+ WallpaperManager::Get()->RemoveObserver(this);
}
void SigninScreenHandler::DeclareLocalizedValues(
@@ -856,6 +866,22 @@ void SigninScreenHandler::ReloadGaia(bool force_reload) {
gaia_screen_handler_->ReloadGaia(force_reload);
}
+void SigninScreenHandler::SetSigninScreenColors(SkColor dark_muted_color) {
+ // The dark muted color should have 100% opacity.
+ dark_muted_color = SkColorSetA(dark_muted_color, 0xFF);
+ SkColor base_color = color_utils::GetResultingPaintColor(
+ SkColorSetA(ash::kShelfDefaultBaseColor,
+ ash::kShelfTranslucentColorDarkenAlpha),
+ dark_muted_color);
+ SkColor background_color =
+ SkColorSetA(base_color, ash::kShelfTranslucentAlpha);
+ SkColor scroll_color = SkColorSetA(base_color, kLoginTranslucentAlpha);
+ CallJS("login.AccountPickerScreen.setOverlayColors",
+ color_utils::SkColorToRgbaString(dark_muted_color),
+ color_utils::SkColorToRgbaString(scroll_color),
+ color_utils::SkColorToRgbaString(background_color));
+}
+
void SigninScreenHandler::Initialize() {
// Preload PIN keyboard if any of the users can authenticate via PIN.
if (user_manager::UserManager::IsInitialized()) {
@@ -896,6 +922,17 @@ void SigninScreenHandler::OnCurrentScreenChanged(OobeScreen current_screen,
}
}
+void SigninScreenHandler::OnWallpaperColorsChanged() {
+ base::Optional<SkColor> color = WallpaperManager::Get()->prominent_color();
+ // If color extraction fails, use transparent as default.
+ if (!color.has_value())
+ color = SK_ColorTRANSPARENT;
+ SetSigninScreenColors(color.value());
+}
+
+void SigninScreenHandler::OnWallpaperAnimationFinished(
+ const AccountId& account_id) {}
+
void SigninScreenHandler::ClearAndEnablePassword() {
core_oobe_view_->ResetSignInUI(false);
}
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | components/wallpaper/wallpaper_manager_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698