#include "base/metrics/histogram.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
-#include "base/timer/timer.h"
#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/chromeos/login/auth/login_performer.h"
#include "chrome/browser/chromeos/login/lock/webui_screen_locker.h"
#include "chrome/browser/chromeos/login/login_utils.h"
#include "chrome/browser/chromeos/login/session/user_session_manager.h"
bool session_started() const { return session_started_; }
// SessionManagerClient::StubDelegate overrides:
- virtual void LockScreenForStub() OVERRIDE {
+ virtual void LockScreenForStub() override {
ScreenLocker::HandleLockScreenRequest();
}
// NotificationObserver overrides:
virtual void Observe(int type,
const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE {
+ const content::NotificationDetails& details) override {
if (type == chrome::NOTIFICATION_SESSION_STARTED)
session_started_ = true;
else
}
// UserAddingScreen::Observer overrides:
- virtual void OnUserAddingFinished() OVERRIDE {
+ virtual void OnUserAddingFinished() override {
UserAddingScreen::Get()->RemoveObserver(this);
ScreenLocker::HandleLockScreenRequest();
}
if (g_screen_lock_observer->session_started() &&
user_manager::UserManager::Get()->CanCurrentUserLock()) {
ScreenLocker::Show();
+#if !defined(USE_ATHENA)
+ // TOOD(dpolukhin): crbug.com/413926.
ash::Shell::GetInstance()->lock_state_controller()->OnStartingLock();
+#endif
} else {
// If the current user's session cannot be locked or the user has not
// completed all sign-in steps yet, log out instead. The latter is done to
// static
void ScreenLocker::Show() {
-#if defined(USE_ATHENA)
- // crbug.com/413926
- return;
-#endif
-
content::RecordAction(UserMetricsAction("ScreenLocker_Show"));
DCHECK(base::MessageLoopForUI::IsCurrent());
return;
}
+#if !defined(USE_ATHENA)
// If the active window is fullscreen, exit fullscreen to avoid the web page
// or app mimicking the lock screen. Do not exit fullscreen if the shelf is
// visible while in fullscreen because the shelf makes it harder for a web
const ash::wm::WMEvent event(ash::wm::WM_EVENT_TOGGLE_FULLSCREEN);
active_window_state->OnWMEvent(&event);
}
+#endif
if (!screen_locker_) {
ScreenLocker* locker =
// static
void ScreenLocker::Hide() {
-#if defined(USE_ATHENA)
- // crbug.com/413926
- return;
-#endif
-
DCHECK(base::MessageLoopForUI::IsCurrent());
// For a guest/demo user, screen_locker_ would have never been initialized.
if (user_manager::UserManager::Get()->IsLoggedInAsGuest() ||
DCHECK(screen_locker_);
base::Callback<void(void)> callback =
base::Bind(&ScreenLocker::ScheduleDeletion);
+#if !defined(USE_ATHENA)
ash::Shell::GetInstance()->lock_state_controller()->
OnLockScreenHide(callback);
+#else
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback);
+#endif
}
void ScreenLocker::ScheduleDeletion() {
return;
VLOG(1) << "Deleting ScreenLocker " << screen_locker_;
+#if !defined(USE_ATHENA)
ash::PlaySystemSoundIfSpokenFeedback(SOUND_UNLOCK);
+#endif
delete screen_locker_;
screen_locker_ = NULL;
authenticator_->SetConsumer(NULL);
ClearErrors();
+#if !defined(USE_ATHENA)
+ // TOOD(dpolukhin): we need to to something similar for Athena.
VLOG(1) << "Moving desktop background to unlocked container";
ash::Shell::GetInstance()->
desktop_background_controller()->MoveDesktopToUnlockedContainer();
+#endif
screen_locker_ = NULL;
bool state = false;
UMA_HISTOGRAM_TIMES("ScreenLocker.ScreenLockTime", delta);
VLOG(1) << "Moving desktop background to locked container";
+#if !defined(USE_ATHENA)
ash::Shell::GetInstance()->
desktop_background_controller()->MoveDesktopToLockedContainer();
-
- input_method::InputMethodManager::Get()
- ->GetActiveIMEState()
- ->EnableLockScreenLayouts();
+#endif
bool state = true;
VLOG(1) << "Emitting SCREEN_LOCK_STATE_CHANGED with state=" << state;
content::Details<bool>(&state));
VLOG(1) << "Calling session manager's HandleLockScreenShown D-Bus method";
DBusThreadManager::Get()->GetSessionManagerClient()->NotifyLockScreenShown();
+
+ input_method::InputMethodManager::Get()
+ ->GetActiveIMEState()
+ ->EnableLockScreenLayouts();
}
content::WebUI* ScreenLocker::GetAssociatedWebUI() {