Chromium Code Reviews| Index: chrome/browser/chromeos/login/screen_locker.cc |
| diff --git a/chrome/browser/chromeos/login/screen_locker.cc b/chrome/browser/chromeos/login/screen_locker.cc |
| index f2be07bc1818f7a3409762c308a22ffbdbb329f1..03cc0949ed6dac413cc1e1eb110ac7da08e8b398 100644 |
| --- a/chrome/browser/chromeos/login/screen_locker.cc |
| +++ b/chrome/browser/chromeos/login/screen_locker.cc |
| @@ -9,6 +9,7 @@ |
| #include "ash/desktop_background/desktop_background_controller.h" |
| #include "ash/shell.h" |
| +#include "ash/wm/session_state_controller.h" |
| #include "base/bind.h" |
| #include "base/command_line.h" |
| #include "base/lazy_instance.h" |
| @@ -306,8 +307,20 @@ void ScreenLocker::Hide() { |
| } |
| DCHECK(screen_locker_); |
| + base::Callback<void(void)> callback = |
| + base::Bind(&ScreenLocker::ScheduleDeletion); |
| + ash::Shell::GetInstance()->session_state_controller()-> |
| + OnLockScreenHide(callback); |
| +} |
| + |
| +void ScreenLocker::ScheduleDeletion() { |
|
Nikita (slow)
2012/10/26 10:37:46
nit: // static
|
| + // Avoid possible multiple calls. |
| + if (screen_locker_ == NULL) |
| + return; |
| VLOG(1) << "Posting task to delete ScreenLocker " << screen_locker_; |
| - MessageLoopForUI::current()->DeleteSoon(FROM_HERE, screen_locker_); |
| + ScreenLocker* screen_locker = screen_locker_; |
| + screen_locker_ = NULL; |
| + MessageLoopForUI::current()->DeleteSoon(FROM_HERE, screen_locker); |
| } |
| // static |