Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: chrome/browser/chromeos/login/login_screen.cc

Issue 5809001: Removed old login screen from source. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed comments Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/login/login_screen.h"
6
7 #include "app/l10n_util.h"
8 #include "app/resource_bundle.h"
9 #include "base/callback.h"
10 #include "base/command_line.h"
11 #include "base/logging.h"
12 #include "base/process_util.h"
13 #include "base/utf_string_conversions.h"
14 #include "chrome/browser/browser_process.h"
15 #include "chrome/browser/browser_thread.h"
16 #include "chrome/browser/chromeos/boot_times_loader.h"
17 #include "chrome/browser/chromeos/cros/cros_library.h"
18 #include "chrome/browser/chromeos/cros/network_library.h"
19 #include "chrome/browser/chromeos/login/authentication_notification_details.h"
20 #include "chrome/browser/chromeos/login/helper.h"
21 #include "chrome/browser/chromeos/login/login_utils.h"
22 #include "chrome/browser/chromeos/login/message_bubble.h"
23 #include "chrome/browser/chromeos/login/screen_observer.h"
24 #include "chrome/browser/profiles/profile.h"
25 #include "chrome/browser/profiles/profile_manager.h"
26 #include "grit/generated_resources.h"
27 #include "grit/theme_resources.h"
28
29 namespace chromeos {
30
31 LoginScreen::LoginScreen(WizardScreenDelegate* delegate)
32 : ViewScreen<NewUserView>(delegate,
33 kNewUserPodFullWidth, kNewUserPodFullHeight),
34 bubble_(NULL),
35 authenticator_(NULL) {
36 if (CrosLibrary::Get()->EnsureLoaded()) {
37 authenticator_ = LoginUtils::Get()->CreateAuthenticator(this);
38 }
39 }
40
41 LoginScreen::~LoginScreen() {
42 ClearErrors();
43 }
44
45 NewUserView* LoginScreen::AllocateView() {
46 return new NewUserView(this, true, true);
47 }
48
49 void LoginScreen::OnLogin(const std::string& username,
50 const std::string& password) {
51 BootTimesLoader::Get()->RecordLoginAttempted();
52 Profile* profile = g_browser_process->profile_manager()->GetDefaultProfile();
53 BrowserThread::PostTask(
54 BrowserThread::UI, FROM_HERE,
55 NewRunnableMethod(authenticator_.get(),
56 &Authenticator::AuthenticateToLogin,
57 profile, username, password,
58 std::string(), std::string()));
59 }
60
61 void LoginScreen::OnLoginOffTheRecord() {
62 BrowserThread::PostTask(
63 BrowserThread::UI, FROM_HERE,
64 NewRunnableMethod(authenticator_.get(),
65 &Authenticator::LoginOffTheRecord));
66 }
67
68 void LoginScreen::OnCreateAccount() {
69 delegate()->GetObserver(this)->OnExit(ScreenObserver::LOGIN_CREATE_ACCOUNT);
70 }
71
72 void LoginScreen::ClearErrors() {
73 // bubble_ will be set to NULL in InfoBubbleClosing callback.
74 if (bubble_)
75 bubble_->Close();
76 }
77
78 void LoginScreen::OnLoginFailure(const LoginFailure& failure) {
79 const std::string error = failure.GetErrorString();
80 VLOG(1) << "LoginManagerView: OnLoginFailure() " << error;
81 NetworkLibrary* network = CrosLibrary::Get()->GetNetworkLibrary();
82
83 // Check networking after trying to login in case user is
84 // cached locally or the local admin account.
85 if (!network || !CrosLibrary::Get()->EnsureLoaded()) {
86 ShowError(IDS_LOGIN_ERROR_NO_NETWORK_LIBRARY, error);
87 } else if (!network->Connected()) {
88 ShowError(IDS_LOGIN_ERROR_OFFLINE_FAILED_NETWORK_NOT_CONNECTED, error);
89 } else {
90 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING_NEW, error);
91 }
92
93 view()->ClearAndFocusPassword();
94 view()->EnableInputControls(true);
95 }
96
97 void LoginScreen::OnLoginSuccess(
98 const std::string& username,
99 const std::string& password,
100 const GaiaAuthConsumer::ClientLoginResult& credentials,
101 bool pending_requests) {
102
103 delegate()->GetObserver(this)->OnExit(ScreenObserver::LOGIN_SIGN_IN_SELECTED);
104 AppendStartUrlToCmdline();
105 LoginUtils::Get()->CompleteLogin(username,
106 password,
107 credentials,
108 pending_requests);
109 }
110
111 void LoginScreen::OnOffTheRecordLoginSuccess() {
112 LoginUtils::Get()->CompleteOffTheRecordLogin(start_url_);
113 }
114
115 void LoginScreen::OnHelpLinkActivated() {
116 AddStartUrl(GetAccountRecoveryHelpUrl());
117 OnLoginOffTheRecord();
118 }
119
120 void LoginScreen::AppendStartUrlToCmdline() {
121 if (start_url_.is_valid())
122 CommandLine::ForCurrentProcess()->AppendArg(start_url_.spec());
123 }
124
125 void LoginScreen::ShowError(int error_id, const std::string& details) {
126 ClearErrors();
127 std::wstring error_text = UTF16ToWide(l10n_util::GetStringUTF16(error_id));
128 // TODO(dpolukhin): show detailed error info. |details| string contains
129 // low level error info that is not localized and even is not user friendly.
130 // For now just ignore it because error_text contains all required information
131 // for end users, developers can see details string in Chrome logs.
132 bubble_ = MessageBubble::Show(
133 view()->GetWidget(),
134 view()->GetPasswordBounds(),
135 BubbleBorder::LEFT_TOP,
136 ResourceBundle::GetSharedInstance().GetBitmapNamed(IDR_WARNING),
137 error_text,
138 UTF16ToWide(l10n_util::GetStringUTF16(IDS_CANT_ACCESS_ACCOUNT_BUTTON)),
139 this);
140 }
141
142 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/login_screen.h ('k') | chrome/browser/chromeos/login/login_screen_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698