Chromium Code Reviews| Index: chrome/browser/chromeos/login/lock/screen_locker.cc |
| diff --git a/chrome/browser/chromeos/login/lock/screen_locker.cc b/chrome/browser/chromeos/login/lock/screen_locker.cc |
| index b7011cc4d7fc05e53791230eca409da004e8f33d..d167f52a711511673065813fe8166b93a99c9658 100644 |
| --- a/chrome/browser/chromeos/login/lock/screen_locker.cc |
| +++ b/chrome/browser/chromeos/login/lock/screen_locker.cc |
| @@ -473,12 +473,23 @@ void ScreenLocker::Hide() { |
| } |
| DCHECK(screen_locker_); |
| - base::Callback<void(void)> callback = |
| - base::Bind(&ScreenLocker::ScheduleDeletion); |
| - ash::Shell::GetInstance()->lock_state_controller()-> |
| - OnLockScreenHide(callback); |
| + |
| + // Sets session state to ACTIVE before destroying screen locker. Otherwise, |
| + // ash thinks the session is blocked and does not correct set focus on |
| + // screen lock dismissal. |
| + // TODO(xiyuan): Figure out a better way to ensure state change go through. |
| + session_manager::SessionManager::Get()->SetSessionState( |
| + session_manager::SessionState::ACTIVE); |
| + BrowserThread::PostTask( |
| + BrowserThread::UI, FROM_HERE, base::Bind([] { |
| + base::Callback<void(void)> callback = |
| + base::Bind(&ScreenLocker::ScheduleDeletion); |
|
James Cook
2017/03/17 17:14:36
nit: maybe inline this below?
xiyuan
2017/03/17 22:52:03
We need to fix OnLockScreenHide's signature in ord
|
| + ash::Shell::GetInstance()->lock_state_controller()->OnLockScreenHide( |
| + callback); |
| + })); |
|
xiyuan
2017/03/17 07:08:16
This was caught by ScreenLockerTest.TestFullscreen
|
| } |
| +// static |
| void ScreenLocker::ScheduleDeletion() { |
| // Avoid possible multiple calls. |
| if (screen_locker_ == NULL) |
| @@ -518,9 +529,6 @@ ScreenLocker::~ScreenLocker() { |
| DBusThreadManager::Get()->GetSessionManagerClient()-> |
| NotifyLockScreenDismissed(); |
| - session_manager::SessionManager::Get()->SetSessionState( |
| - session_manager::SessionState::ACTIVE); |
| - |
| if (saved_ime_state_.get()) { |
| input_method::InputMethodManager::Get()->SetState(saved_ime_state_); |
| } |