| Index: chrome/browser/chromeos/login/webui_screen_locker.cc
|
| diff --git a/chrome/browser/chromeos/login/webui_screen_locker.cc b/chrome/browser/chromeos/login/webui_screen_locker.cc
|
| deleted file mode 100644
|
| index b653e3f34a8fc3738845f5fdfa251ebe6920901a..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/login/webui_screen_locker.cc
|
| +++ /dev/null
|
| @@ -1,361 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/chromeos/login/webui_screen_locker.h"
|
| -
|
| -#include "ash/shell.h"
|
| -#include "ash/wm/lock_state_controller.h"
|
| -#include "ash/wm/lock_state_observer.h"
|
| -#include "base/command_line.h"
|
| -#include "base/metrics/histogram.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/browser_shutdown.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/chromeos/accessibility/accessibility_util.h"
|
| -#include "chrome/browser/chromeos/login/helper.h"
|
| -#include "chrome/browser/chromeos/login/screen_locker.h"
|
| -#include "chrome/browser/chromeos/login/user_manager.h"
|
| -#include "chrome/browser/chromeos/login/webui_login_display.h"
|
| -#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
|
| -#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "chromeos/dbus/dbus_thread_manager.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/browser/notification_types.h"
|
| -#include "content/public/browser/render_widget_host_view.h"
|
| -#include "content/public/browser/web_ui.h"
|
| -#include "ui/aura/client/capture_client.h"
|
| -#include "ui/aura/window_event_dispatcher.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/x/x11_util.h"
|
| -#include "ui/gfx/screen.h"
|
| -#include "ui/views/controls/webview/webview.h"
|
| -
|
| -namespace {
|
| -
|
| -// URL which corresponds to the login WebUI.
|
| -const char kLoginURL[] = "chrome://oobe/lock";
|
| -
|
| -} // namespace
|
| -
|
| -namespace chromeos {
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// WebUIScreenLocker implementation.
|
| -
|
| -WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker)
|
| - : ScreenLockerDelegate(screen_locker),
|
| - lock_ready_(false),
|
| - webui_ready_(false),
|
| - network_state_helper_(new login::NetworkStateHelper),
|
| - weak_factory_(this) {
|
| - set_should_emit_login_prompt_visible(false);
|
| - ash::Shell::GetInstance()->lock_state_controller()->AddObserver(this);
|
| - DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
|
| -}
|
| -
|
| -void WebUIScreenLocker::LockScreen() {
|
| - gfx::Rect bounds(ash::Shell::GetScreen()->GetPrimaryDisplay().bounds());
|
| -
|
| - lock_time_ = base::TimeTicks::Now();
|
| - LockWindow* lock_window = LockWindow::Create();
|
| - lock_window->set_observer(this);
|
| - lock_window_ = lock_window->GetWidget();
|
| - lock_window_->AddObserver(this);
|
| - WebUILoginView::Init();
|
| - lock_window_->SetContentsView(this);
|
| - lock_window_->Show();
|
| - LoadURL(GURL(kLoginURL));
|
| - lock_window->Grab();
|
| -
|
| - login_display_.reset(new WebUILoginDisplay(this));
|
| - login_display_->set_background_bounds(bounds);
|
| - login_display_->set_parent_window(GetNativeWindow());
|
| - login_display_->Init(screen_locker()->users(), false, true, false);
|
| -
|
| - static_cast<OobeUI*>(GetWebUI()->GetController())->ShowSigninScreen(
|
| - LoginScreenContext(), login_display_.get(), login_display_.get());
|
| -
|
| - registrar_.Add(this,
|
| - chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
|
| - content::NotificationService::AllSources());
|
| -}
|
| -
|
| -void WebUIScreenLocker::ScreenLockReady() {
|
| - UMA_HISTOGRAM_TIMES("LockScreen.LockReady",
|
| - base::TimeTicks::Now() - lock_time_);
|
| - ScreenLockerDelegate::ScreenLockReady();
|
| - SetInputEnabled(true);
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnAuthenticate() {
|
| -}
|
| -
|
| -void WebUIScreenLocker::SetInputEnabled(bool enabled) {
|
| - login_display_->SetUIEnabled(enabled);
|
| -}
|
| -
|
| -void WebUIScreenLocker::ShowBannerMessage(const std::string& message) {
|
| - if (!webui_ready_)
|
| - return;
|
| - login_display_->ShowBannerMessage(message);
|
| -}
|
| -
|
| -void WebUIScreenLocker::ShowUserPodButton(
|
| - const std::string& username,
|
| - const std::string& iconURL,
|
| - const base::Closure& click_callback) {
|
| - if (!webui_ready_)
|
| - return;
|
| - login_display_->ShowUserPodButton(username, iconURL, click_callback);
|
| -}
|
| -
|
| -void WebUIScreenLocker::HideUserPodButton(const std::string& username) {
|
| - if (!webui_ready_)
|
| - return;
|
| - login_display_->HideUserPodButton(username);
|
| -}
|
| -
|
| -void WebUIScreenLocker::SetAuthType(const std::string& username,
|
| - LoginDisplay::AuthType auth_type,
|
| - const std::string& initial_value) {
|
| - if (!webui_ready_)
|
| - return;
|
| - login_display_->SetAuthType(username, auth_type, initial_value);
|
| -}
|
| -
|
| -LoginDisplay::AuthType WebUIScreenLocker::GetAuthType(
|
| - const std::string& username) const {
|
| - // Return default auth type if login display is not ready.
|
| - if (!webui_ready_)
|
| - return LoginDisplay::OFFLINE_PASSWORD;
|
| - return login_display_->GetAuthType(username);
|
| -}
|
| -
|
| -void WebUIScreenLocker::ShowErrorMessage(
|
| - int error_msg_id,
|
| - HelpAppLauncher::HelpTopic help_topic_id) {
|
| - login_display_->ShowError(error_msg_id,
|
| - 0 /* login_attempts */,
|
| - help_topic_id);
|
| -}
|
| -
|
| -void WebUIScreenLocker::AnimateAuthenticationSuccess() {
|
| - GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.animateAuthenticationSuccess");
|
| -}
|
| -
|
| -void WebUIScreenLocker::ClearErrors() {
|
| - GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.clearErrors");
|
| -}
|
| -
|
| -gfx::NativeWindow WebUIScreenLocker::GetNativeWindow() const {
|
| - return lock_window_->GetNativeWindow();
|
| -}
|
| -
|
| -content::WebUI* WebUIScreenLocker::GetAssociatedWebUI() {
|
| - return GetWebUI();
|
| -}
|
| -
|
| -void WebUIScreenLocker::FocusUserPod() {
|
| - if (!webui_ready_)
|
| - return;
|
| - webui_login_->RequestFocus();
|
| - GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.forceLockedUserPodFocus");
|
| -}
|
| -
|
| -WebUIScreenLocker::~WebUIScreenLocker() {
|
| - DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
|
| - ash::Shell::GetInstance()->
|
| - lock_state_controller()->RemoveObserver(this);
|
| - // In case of shutdown, lock_window_ may be deleted before WebUIScreenLocker.
|
| - if (lock_window_) {
|
| - lock_window_->RemoveObserver(this);
|
| - lock_window_->Close();
|
| - }
|
| - // If LockScreen() was called, we need to clear the signin screen handler
|
| - // delegate set in ShowSigninScreen so that it no longer points to us.
|
| - if (login_display_.get()) {
|
| - static_cast<OobeUI*>(GetWebUI()->GetController())->
|
| - ResetSigninScreenHandlerDelegate();
|
| - }
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnLockWebUIReady() {
|
| - VLOG(1) << "WebUI ready; lock window is "
|
| - << (lock_ready_ ? "too" : "not");
|
| - webui_ready_ = true;
|
| - if (lock_ready_)
|
| - ScreenLockReady();
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnLockBackgroundDisplayed() {
|
| - UMA_HISTOGRAM_TIMES("LockScreen.BackgroundReady",
|
| - base::TimeTicks::Now() - lock_time_);
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// WebUIScreenLocker, content::NotificationObserver implementation:
|
| -
|
| -void WebUIScreenLocker::Observe(
|
| - int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) {
|
| - switch (type) {
|
| - case chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED: {
|
| - const User& user = *content::Details<User>(details).ptr();
|
| - login_display_->OnUserImageChanged(user);
|
| - break;
|
| - }
|
| - default:
|
| - WebUILoginView::Observe(type, source, details);
|
| - }
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// WebUIScreenLocker, LoginDisplay::Delegate implementation:
|
| -
|
| -void WebUIScreenLocker::CancelPasswordChangedFlow() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::CreateAccount() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::CompleteLogin(const UserContext& user_context) {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -base::string16 WebUIScreenLocker::GetConnectedNetworkName() {
|
| - return network_state_helper_->GetCurrentNetworkName();
|
| -}
|
| -
|
| -bool WebUIScreenLocker::IsSigninInProgress() const {
|
| - // The way how screen locker is implemented right now there's no
|
| - // GAIA sign in in progress in any case.
|
| - return false;
|
| -}
|
| -
|
| -void WebUIScreenLocker::Login(const UserContext& user_context) {
|
| - chromeos::ScreenLocker::default_screen_locker()->Authenticate(user_context);
|
| -}
|
| -
|
| -void WebUIScreenLocker::LoginAsRetailModeUser() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::LoginAsGuest() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::MigrateUserData(const std::string& old_password) {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::LoginAsPublicAccount(const std::string& username) {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnSigninScreenReady() {
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnUserSelected(const std::string& username) {
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnStartEnterpriseEnrollment() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnStartKioskEnableScreen() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::OnStartKioskAutolaunchScreen() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::ShowWrongHWIDScreen() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::ResetPublicSessionAutoLoginTimer() {
|
| -}
|
| -
|
| -void WebUIScreenLocker::ResyncUserData() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::SetDisplayEmail(const std::string& email) {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void WebUIScreenLocker::Signout() {
|
| - chromeos::ScreenLocker::default_screen_locker()->Signout();
|
| -}
|
| -
|
| -void WebUIScreenLocker::LoginAsKioskApp(const std::string& app_id,
|
| - bool diagnostic_mode) {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// LockWindow::Observer implementation:
|
| -
|
| -void WebUIScreenLocker::OnLockWindowReady() {
|
| - VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not");
|
| - lock_ready_ = true;
|
| - if (webui_ready_)
|
| - ScreenLockReady();
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// SessionLockStateObserver override.
|
| -
|
| -void WebUIScreenLocker::OnLockStateEvent(
|
| - ash::LockStateObserver::EventType event) {
|
| - if (event == ash::LockStateObserver::EVENT_LOCK_ANIMATION_FINISHED) {
|
| - // Release capture if any.
|
| - aura::client::GetCaptureClient(GetNativeWindow()->GetRootWindow())->
|
| - SetCapture(NULL);
|
| - GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.animateOnceFullyDisplayed");
|
| - }
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// WidgetObserver override.
|
| -
|
| -void WebUIScreenLocker::OnWidgetDestroying(views::Widget* widget) {
|
| - lock_window_->RemoveObserver(this);
|
| - lock_window_ = NULL;
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// PowerManagerClient::Observer overrides.
|
| -
|
| -void WebUIScreenLocker::LidEventReceived(bool open,
|
| - const base::TimeTicks& time) {
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(&WebUIScreenLocker::FocusUserPod, weak_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void WebUIScreenLocker::SuspendDone(const base::TimeDelta& sleep_duration) {
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(&WebUIScreenLocker::FocusUserPod, weak_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void WebUIScreenLocker::RenderProcessGone(base::TerminationStatus status) {
|
| - if (browser_shutdown::GetShutdownType() == browser_shutdown::NOT_VALID &&
|
| - status != base::TERMINATION_STATUS_NORMAL_TERMINATION) {
|
| - LOG(ERROR) << "Renderer crash on lock screen";
|
| - Signout();
|
| - }
|
| -}
|
| -
|
| -} // namespace chromeos
|
|
|