| 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);
|
| }
|
|
|