Commit 6469449b authored by dpolukhin's avatar dpolukhin Committed by Commit bot

Listen OnDisplayMetricsChanged on lock screen

BUG=453318
TEST=manual

Review URL: https://codereview.chromium.org/882423002

Cr-Commit-Position: refs/heads/master@{#313909}
parent d028dec8
......@@ -68,6 +68,7 @@ WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker)
set_should_emit_login_prompt_visible(false);
ash::Shell::GetInstance()->lock_state_controller()->AddObserver(this);
ash::Shell::GetInstance()->delegate()->AddVirtualKeyboardStateObserver(this);
ash::Shell::GetScreen()->AddObserver(this);
DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
if (keyboard::KeyboardController::GetInstance()) {
......@@ -155,6 +156,7 @@ void WebUIScreenLocker::FocusUserPod() {
WebUIScreenLocker::~WebUIScreenLocker() {
DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
ash::Shell::GetScreen()->RemoveObserver(this);
ash::Shell::GetInstance()->
lock_state_controller()->RemoveObserver(this);
......@@ -199,7 +201,7 @@ OobeUI* WebUIScreenLocker::GetOobeUI() {
}
////////////////////////////////////////////////////////////////////////////////
// WebUIScreenLocker, LoginDisplay::Delegate implementation:
// WebUIScreenLocker, LoginDisplay::Delegate:
void WebUIScreenLocker::CancelPasswordChangedFlow() {
NOTREACHED();
......@@ -271,7 +273,7 @@ void WebUIScreenLocker::Signout() {
}
////////////////////////////////////////////////////////////////////////////////
// LockWindow::Observer implementation:
// LockWindow::Observer:
void WebUIScreenLocker::OnLockWindowReady() {
VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not");
......@@ -281,7 +283,7 @@ void WebUIScreenLocker::OnLockWindowReady() {
}
////////////////////////////////////////////////////////////////////////////////
// SessionLockStateObserver override.
// SessionLockStateObserver:
void WebUIScreenLocker::OnLockStateEvent(
ash::LockStateObserver::EventType event) {
......@@ -294,7 +296,7 @@ void WebUIScreenLocker::OnLockStateEvent(
}
////////////////////////////////////////////////////////////////////////////////
// WidgetObserver override.
// WidgetObserver:
void WebUIScreenLocker::OnWidgetDestroying(views::Widget* widget) {
lock_window_->RemoveObserver(this);
......@@ -302,7 +304,7 @@ void WebUIScreenLocker::OnWidgetDestroying(views::Widget* widget) {
}
////////////////////////////////////////////////////////////////////////////////
// PowerManagerClient::Observer overrides.
// PowerManagerClient::Observer:
void WebUIScreenLocker::LidEventReceived(bool open,
const base::TimeTicks& time) {
......@@ -345,7 +347,7 @@ void WebUIScreenLocker::OnVirtualKeyboardStateChanged(bool activated) {
}
////////////////////////////////////////////////////////////////////////////////
// keyboard::KeyboardControllerObserver overrides.
// keyboard::KeyboardControllerObserver:
void WebUIScreenLocker::OnKeyboardBoundsChanging(
const gfx::Rect& new_bounds) {
......@@ -368,4 +370,29 @@ void WebUIScreenLocker::OnKeyboardBoundsChanging(
keyboard_bounds_ = new_bounds;
}
////////////////////////////////////////////////////////////////////////////////
// gfx::DisplayObserver:
void WebUIScreenLocker::OnDisplayAdded(const gfx::Display& new_display) {
}
void WebUIScreenLocker::OnDisplayRemoved(const gfx::Display& old_display) {
}
void WebUIScreenLocker::OnDisplayMetricsChanged(const gfx::Display& display,
uint32_t changed_metrics) {
gfx::Display primary_display =
gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
if (display.id() != primary_display.id() ||
!(changed_metrics & DISPLAY_METRIC_BOUNDS)) {
return;
}
if (GetOobeUI()) {
const gfx::Size& size = primary_display.size();
GetOobeUI()->GetCoreOobeActor()->SetClientAreaSize(size.width(),
size.height());
}
}
} // namespace chromeos
......@@ -20,6 +20,7 @@
#include "chrome/browser/chromeos/login/ui/login_display.h"
#include "chrome/browser/chromeos/login/ui/webui_login_view.h"
#include "chromeos/dbus/power_manager_client.h"
#include "ui/gfx/display_observer.h"
#include "ui/keyboard/keyboard_controller_observer.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_observer.h"
......@@ -52,11 +53,12 @@ class WebUIScreenLocker : public WebUILoginView,
public views::WidgetObserver,
public PowerManagerClient::Observer,
public ash::VirtualKeyboardStateObserver,
public keyboard::KeyboardControllerObserver {
public keyboard::KeyboardControllerObserver,
public gfx::DisplayObserver {
public:
explicit WebUIScreenLocker(ScreenLocker* screen_locker);
// ScreenLockerDelegate implementation.
// ScreenLockerDelegate:
void LockScreen() override;
void ScreenLockReady() override;
void OnAuthenticate() override;
......@@ -70,7 +72,7 @@ class WebUIScreenLocker : public WebUILoginView,
void OnLockWebUIReady() override;
void OnLockBackgroundDisplayed() override;
// LoginDisplay::Delegate: implementation
// LoginDisplay::Delegate:
void CancelPasswordChangedFlow() override;
void CreateAccount() override;
void CompleteLogin(const UserContext& user_context) override;
......@@ -90,28 +92,34 @@ class WebUIScreenLocker : public WebUILoginView,
void SetDisplayEmail(const std::string& email) override;
void Signout() override;
// LockWindow::Observer implementation.
// LockWindow::Observer:
void OnLockWindowReady() override;
// LockStateObserver override.
// LockStateObserver:
void OnLockStateEvent(ash::LockStateObserver::EventType event) override;
// WidgetObserver override.
// WidgetObserver:
void OnWidgetDestroying(views::Widget* widget) override;
// PowerManagerClient::Observer overrides:
// PowerManagerClient::Observer:
void SuspendDone(const base::TimeDelta& sleep_duration) override;
void LidEventReceived(bool open, const base::TimeTicks& time) override;
// Overridden from content::WebContentsObserver:
// content::WebContentsObserver:
void RenderProcessGone(base::TerminationStatus status) override;
// Overridden from ash::KeyboardStateObserver:
// ash::KeyboardStateObserver:
void OnVirtualKeyboardStateChanged(bool activated) override;
// Overridden from keyboard::KeyboardControllerObserver:
// keyboard::KeyboardControllerObserver:
void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) override;
// gfx::DisplayObserver:
void OnDisplayAdded(const gfx::Display& new_display) override;
void OnDisplayRemoved(const gfx::Display& old_display) override;
void OnDisplayMetricsChanged(const gfx::Display& display,
uint32_t changed_metrics) override;
// Returns instance of the OOBE WebUI.
OobeUI* GetOobeUI();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment