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

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: Address comments 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 168c632f511766e5a7433c295925a78d8a9b1ad1..30e6aa0cd04e7e60cb90961b39517383977db98a 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"
@@ -51,7 +52,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"
@@ -101,6 +101,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 {
@@ -126,6 +127,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;
+
static bool Contains(const std::vector<std::string>& container,
const std::string& value) {
return std::find(container.begin(), container.end(), value) !=
@@ -352,6 +358,7 @@ SigninScreenHandler::SigninScreenHandler(
lock_screen_apps::StateController::IsEnabled()) {
lock_screen_apps_observer_.Add(lock_screen_apps::StateController::Get());
}
+ WallpaperManager::Get()->AddObserver(this);
}
SigninScreenHandler::~SigninScreenHandler() {
@@ -371,6 +378,7 @@ SigninScreenHandler::~SigninScreenHandler() {
network_state_informer_->RemoveObserver(this);
proximity_auth::ScreenlockBridge::Get()->SetLockHandler(nullptr);
proximity_auth::ScreenlockBridge::Get()->SetFocusedUser(EmptyAccountId());
+ WallpaperManager::Get()->RemoveObserver(this);
}
// static
@@ -977,6 +985,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()) {
@@ -1017,6 +1041,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);
}

Powered by Google App Engine
This is Rietveld 408576698