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

Side by Side Diff: chrome/browser/ui/webui/settings/people_handler.cc

Issue 1503333003: Settings People Rewrite: Make Sync/Sign-in naming consistent to People. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge upstream changes Created 5 years 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/settings/sync_handler.h" 5 #include "chrome/browser/ui/webui/settings/people_handler.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/i18n/time_formatting.h" 12 #include "base/i18n/time_formatting.h"
13 #include "base/json/json_reader.h" 13 #include "base/json/json_reader.h"
14 #include "base/json/json_writer.h" 14 #include "base/json/json_writer.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 bool sync_nothing; 76 bool sync_nothing;
77 syncer::ModelTypeSet data_types; 77 syncer::ModelTypeSet data_types;
78 std::string passphrase; 78 std::string passphrase;
79 bool passphrase_is_gaia; 79 bool passphrase_is_gaia;
80 }; 80 };
81 81
82 SyncConfigInfo::SyncConfigInfo() 82 SyncConfigInfo::SyncConfigInfo()
83 : encrypt_all(false), 83 : encrypt_all(false),
84 sync_everything(false), 84 sync_everything(false),
85 sync_nothing(false), 85 sync_nothing(false),
86 passphrase_is_gaia(false) { 86 passphrase_is_gaia(false) {}
87 }
88 87
89 SyncConfigInfo::~SyncConfigInfo() {} 88 SyncConfigInfo::~SyncConfigInfo() {}
90 89
91 bool GetConfiguration(const std::string& json, SyncConfigInfo* config) { 90 bool GetConfiguration(const std::string& json, SyncConfigInfo* config) {
92 scoped_ptr<base::Value> parsed_value = base::JSONReader::Read(json); 91 scoped_ptr<base::Value> parsed_value = base::JSONReader::Read(json);
93 base::DictionaryValue* result; 92 base::DictionaryValue* result;
94 if (!parsed_value || !parsed_value->GetAsDictionary(&result)) { 93 if (!parsed_value || !parsed_value->GetAsDictionary(&result)) {
95 DLOG(ERROR) << "GetConfiguration() not passed a Dictionary"; 94 DLOG(ERROR) << "GetConfiguration() not passed a Dictionary";
96 return false; 95 return false;
97 } 96 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 return false; 146 return false;
148 } 147 }
149 } 148 }
150 return true; 149 return true;
151 } 150 }
152 151
153 } // namespace 152 } // namespace
154 153
155 namespace settings { 154 namespace settings {
156 155
157 SyncHandler::SyncHandler(Profile* profile) 156 PeopleHandler::PeopleHandler(Profile* profile)
158 : profile_(profile), 157 : profile_(profile),
159 configuring_sync_(false), 158 configuring_sync_(false),
160 sync_service_observer_(this) { 159 sync_service_observer_(this) {
161 PrefService* prefs = profile_->GetPrefs(); 160 PrefService* prefs = profile_->GetPrefs();
162 profile_pref_registrar_.Init(prefs); 161 profile_pref_registrar_.Init(prefs);
163 profile_pref_registrar_.Add( 162 profile_pref_registrar_.Add(
164 prefs::kSigninAllowed, base::Bind(&SyncHandler::OnSigninAllowedPrefChange, 163 prefs::kSigninAllowed,
165 base::Unretained(this))); 164 base::Bind(&PeopleHandler::OnSigninAllowedPrefChange,
165 base::Unretained(this)));
166 166
167 ProfileSyncService* sync_service( 167 ProfileSyncService* sync_service(
168 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_)); 168 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_));
169 if (sync_service) 169 if (sync_service)
170 sync_service_observer_.Add(sync_service); 170 sync_service_observer_.Add(sync_service);
171 } 171 }
172 172
173 SyncHandler::~SyncHandler() { 173 PeopleHandler::~PeopleHandler() {
174 // Just exit if running unit tests (no actual WebUI is attached). 174 // Just exit if running unit tests (no actual WebUI is attached).
175 if (!web_ui()) 175 if (!web_ui())
176 return; 176 return;
177 177
178 // This case is hit when the user performs a back navigation. 178 // This case is hit when the user performs a back navigation.
179 CloseSyncSetup(); 179 CloseSyncSetup();
180 } 180 }
181 181
182 void SyncHandler::ConfigureSyncDone() { 182 void PeopleHandler::ConfigureSyncDone() {
183 base::StringValue page("done"); 183 base::StringValue page("done");
184 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage", 184 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage",
185 page); 185 page);
186 186
187 // Suppress the sign in promo once the user starts sync. This way the user 187 // Suppress the sign in promo once the user starts sync. This way the user
188 // doesn't see the sign in promo even if they sign out later on. 188 // doesn't see the sign in promo even if they sign out later on.
189 signin::SetUserSkippedPromo(profile_); 189 signin::SetUserSkippedPromo(profile_);
190 190
191 ProfileSyncService* service = GetSyncService(); 191 ProfileSyncService* service = GetSyncService();
192 DCHECK(service); 192 DCHECK(service);
193 if (!service->HasSyncSetupCompleted()) { 193 if (!service->HasSyncSetupCompleted()) {
194 // This is the first time configuring sync, so log it. 194 // This is the first time configuring sync, so log it.
195 base::FilePath profile_file_path = profile_->GetPath(); 195 base::FilePath profile_file_path = profile_->GetPath();
196 ProfileMetrics::LogProfileSyncSignIn(profile_file_path); 196 ProfileMetrics::LogProfileSyncSignIn(profile_file_path);
197 197
198 // We're done configuring, so notify ProfileSyncService that it is OK to 198 // We're done configuring, so notify ProfileSyncService that it is OK to
199 // start syncing. 199 // start syncing.
200 service->SetSetupInProgress(false); 200 service->SetSetupInProgress(false);
201 service->SetSyncSetupCompleted(); 201 service->SetSyncSetupCompleted();
202 } 202 }
203 } 203 }
204 204
205 bool SyncHandler::IsActiveLogin() const { 205 bool PeopleHandler::IsActiveLogin() const {
206 // LoginUIService can be nullptr if page is brought up in incognito mode 206 // LoginUIService can be nullptr if page is brought up in incognito mode
207 // (i.e. if the user is running in guest mode in cros and brings up settings). 207 // (i.e. if the user is running in guest mode in cros and brings up settings).
208 LoginUIService* service = GetLoginUIService(); 208 LoginUIService* service = GetLoginUIService();
209 return service && (service->current_login_ui() == this); 209 return service && (service->current_login_ui() == this);
210 } 210 }
211 211
212 void SyncHandler::RegisterMessages() { 212 void PeopleHandler::RegisterMessages() {
213 web_ui()->RegisterMessageCallback( 213 web_ui()->RegisterMessageCallback(
214 "SyncSetupDidClosePage", 214 "SyncSetupDidClosePage",
215 base::Bind(&SyncHandler::OnDidClosePage, 215 base::Bind(&PeopleHandler::OnDidClosePage, base::Unretained(this)));
216 base::Unretained(this)));
217 web_ui()->RegisterMessageCallback( 216 web_ui()->RegisterMessageCallback(
218 "SyncSetupConfigure", 217 "SyncSetupConfigure",
219 base::Bind(&SyncHandler::HandleConfigure, 218 base::Bind(&PeopleHandler::HandleConfigure, base::Unretained(this)));
220 base::Unretained(this)));
221 web_ui()->RegisterMessageCallback( 219 web_ui()->RegisterMessageCallback(
222 "SyncSetupShowSetupUI", 220 "SyncSetupShowSetupUI",
223 base::Bind(&SyncHandler::HandleShowSetupUI, 221 base::Bind(&PeopleHandler::HandleShowSetupUI, base::Unretained(this)));
224 base::Unretained(this)));
225 web_ui()->RegisterMessageCallback( 222 web_ui()->RegisterMessageCallback(
226 "SyncSetupCloseTimeout", 223 "SyncSetupCloseTimeout",
227 base::Bind(&SyncHandler::HandleCloseTimeout, base::Unretained(this))); 224 base::Bind(&PeopleHandler::HandleCloseTimeout, base::Unretained(this)));
228 web_ui()->RegisterMessageCallback( 225 web_ui()->RegisterMessageCallback(
229 "SyncSetupGetSyncStatus", 226 "SyncSetupGetSyncStatus",
230 base::Bind(&SyncHandler::HandleGetSyncStatus, base::Unretained(this))); 227 base::Bind(&PeopleHandler::HandleGetSyncStatus, base::Unretained(this)));
231 web_ui()->RegisterMessageCallback( 228 web_ui()->RegisterMessageCallback(
232 "SyncSetupManageOtherPeople", 229 "SyncSetupManageOtherPeople",
233 base::Bind(&SyncHandler::HandleManageOtherPeople, 230 base::Bind(&PeopleHandler::HandleManageOtherPeople,
234 base::Unretained(this))); 231 base::Unretained(this)));
235 #if defined(OS_CHROMEOS) 232 #if defined(OS_CHROMEOS)
236 web_ui()->RegisterMessageCallback( 233 web_ui()->RegisterMessageCallback(
237 "SyncSetupDoSignOutOnAuthError", 234 "SyncSetupDoSignOutOnAuthError",
238 base::Bind(&SyncHandler::HandleDoSignOutOnAuthError, 235 base::Bind(&PeopleHandler::HandleDoSignOutOnAuthError,
239 base::Unretained(this))); 236 base::Unretained(this)));
240 #else 237 #else
241 web_ui()->RegisterMessageCallback("SyncSetupStopSyncing", 238 web_ui()->RegisterMessageCallback(
242 base::Bind(&SyncHandler::HandleStopSyncing, 239 "SyncSetupStopSyncing",
243 base::Unretained(this))); 240 base::Bind(&PeopleHandler::HandleStopSyncing, base::Unretained(this)));
244 web_ui()->RegisterMessageCallback("SyncSetupStartSignIn", 241 web_ui()->RegisterMessageCallback(
245 base::Bind(&SyncHandler::HandleStartSignin, 242 "SyncSetupStartSignIn",
246 base::Unretained(this))); 243 base::Bind(&PeopleHandler::HandleStartSignin, base::Unretained(this)));
247 #endif 244 #endif
248 } 245 }
249 246
250 #if !defined(OS_CHROMEOS) 247 #if !defined(OS_CHROMEOS)
251 void SyncHandler::DisplayGaiaLogin(signin_metrics::AccessPoint access_point) { 248 void PeopleHandler::DisplayGaiaLogin(signin_metrics::AccessPoint access_point) {
252 DCHECK(!sync_startup_tracker_); 249 DCHECK(!sync_startup_tracker_);
253 // Advanced options are no longer being configured if the login screen is 250 // Advanced options are no longer being configured if the login screen is
254 // visible. If the user exits the signin wizard after this without 251 // visible. If the user exits the signin wizard after this without
255 // configuring sync, CloseSyncSetup() will ensure they are logged out. 252 // configuring sync, CloseSyncSetup() will ensure they are logged out.
256 configuring_sync_ = false; 253 configuring_sync_ = false;
257 DisplayGaiaLoginInNewTabOrWindow(access_point); 254 DisplayGaiaLoginInNewTabOrWindow(access_point);
258 } 255 }
259 256
260 void SyncHandler::DisplayGaiaLoginInNewTabOrWindow( 257 void PeopleHandler::DisplayGaiaLoginInNewTabOrWindow(
261 signin_metrics::AccessPoint access_point) { 258 signin_metrics::AccessPoint access_point) {
262 Browser* browser = chrome::FindBrowserWithWebContents( 259 Browser* browser =
263 web_ui()->GetWebContents()); 260 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents());
264 bool force_new_tab = false; 261 bool force_new_tab = false;
265 if (!browser) { 262 if (!browser) {
266 // Settings is not displayed in a browser window. Open a new window. 263 // Settings is not displayed in a browser window. Open a new window.
267 browser = new Browser(Browser::CreateParams(Browser::TYPE_TABBED, profile_, 264 browser = new Browser(Browser::CreateParams(Browser::TYPE_TABBED, profile_,
268 chrome::GetActiveDesktop())); 265 chrome::GetActiveDesktop()));
269 force_new_tab = true; 266 force_new_tab = true;
270 } 267 }
271 268
272 // If the signin manager already has an authenticated username, this is a 269 // If the signin manager already has an authenticated username, this is a
273 // re-auth scenario, and we need to ensure that the user signs in with the 270 // re-auth scenario, and we need to ensure that the user signs in with the
274 // same email address. 271 // same email address.
275 GURL url; 272 GURL url;
276 if (SigninManagerFactory::GetForProfile( 273 if (SigninManagerFactory::GetForProfile(browser->profile())
277 browser->profile())->IsAuthenticated()) { 274 ->IsAuthenticated()) {
278 UMA_HISTOGRAM_ENUMERATION("Signin.Reauth", 275 UMA_HISTOGRAM_ENUMERATION("Signin.Reauth",
279 signin_metrics::HISTOGRAM_REAUTH_SHOWN, 276 signin_metrics::HISTOGRAM_REAUTH_SHOWN,
280 signin_metrics::HISTOGRAM_REAUTH_MAX); 277 signin_metrics::HISTOGRAM_REAUTH_MAX);
281 278
282 SigninErrorController* error_controller = 279 SigninErrorController* error_controller =
283 SigninErrorControllerFactory::GetForProfile(browser->profile()); 280 SigninErrorControllerFactory::GetForProfile(browser->profile());
284 DCHECK(error_controller->HasError()); 281 DCHECK(error_controller->HasError());
285 if (!force_new_tab) { 282 if (!force_new_tab) {
286 browser->window()->ShowAvatarBubbleFromAvatarButton( 283 browser->window()->ShowAvatarBubbleFromAvatarButton(
287 BrowserWindow::AVATAR_BUBBLE_MODE_REAUTH, 284 BrowserWindow::AVATAR_BUBBLE_MODE_REAUTH,
(...skipping 13 matching lines...) Expand all
301 access_point, signin_metrics::Reason::REASON_SIGNIN_PRIMARY_ACCOUNT, 298 access_point, signin_metrics::Reason::REASON_SIGNIN_PRIMARY_ACCOUNT,
302 true); 299 true);
303 } 300 }
304 } 301 }
305 302
306 if (url.is_valid()) 303 if (url.is_valid())
307 chrome::ShowSingletonTab(browser, url); 304 chrome::ShowSingletonTab(browser, url);
308 } 305 }
309 #endif 306 #endif
310 307
311 bool SyncHandler::PrepareSyncSetup() { 308 bool PeopleHandler::PrepareSyncSetup() {
312 // If the wizard is already visible, just focus that one. 309 // If the wizard is already visible, just focus that one.
313 if (FocusExistingWizardIfPresent()) { 310 if (FocusExistingWizardIfPresent()) {
314 if (!IsActiveLogin()) 311 if (!IsActiveLogin())
315 CloseSyncSetup(); 312 CloseSyncSetup();
316 return false; 313 return false;
317 } 314 }
318 315
319 // Notify services that login UI is now active. 316 // Notify services that login UI is now active.
320 GetLoginUIService()->SetLoginUI(this); 317 GetLoginUIService()->SetLoginUI(this);
321 318
322 ProfileSyncService* service = GetSyncService(); 319 ProfileSyncService* service = GetSyncService();
323 if (service) 320 if (service)
324 service->SetSetupInProgress(true); 321 service->SetSetupInProgress(true);
325 322
326 return true; 323 return true;
327 } 324 }
328 325
329 void SyncHandler::DisplaySpinner() { 326 void PeopleHandler::DisplaySpinner() {
330 configuring_sync_ = true; 327 configuring_sync_ = true;
331 base::StringValue page("spinner"); 328 base::StringValue page("spinner");
332 base::DictionaryValue args; 329 base::DictionaryValue args;
333 330
334 const int kTimeoutSec = 30; 331 const int kTimeoutSec = 30;
335 DCHECK(!backend_start_timer_); 332 DCHECK(!backend_start_timer_);
336 backend_start_timer_.reset(new base::OneShotTimer()); 333 backend_start_timer_.reset(new base::OneShotTimer());
337 backend_start_timer_->Start(FROM_HERE, 334 backend_start_timer_->Start(FROM_HERE,
338 base::TimeDelta::FromSeconds(kTimeoutSec), 335 base::TimeDelta::FromSeconds(kTimeoutSec), this,
339 this, &SyncHandler::DisplayTimeout); 336 &PeopleHandler::DisplayTimeout);
340 337
341 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage", 338 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage",
342 page, args); 339 page, args);
343 } 340 }
344 341
345 // TODO(kochi): Handle error conditions other than timeout. 342 // TODO(kochi): Handle error conditions other than timeout.
346 // http://crbug.com/128692 343 // http://crbug.com/128692
347 void SyncHandler::DisplayTimeout() { 344 void PeopleHandler::DisplayTimeout() {
348 // Stop a timer to handle timeout in waiting for checking network connection. 345 // Stop a timer to handle timeout in waiting for checking network connection.
349 backend_start_timer_.reset(); 346 backend_start_timer_.reset();
350 347
351 // Do not listen to sync startup events. 348 // Do not listen to sync startup events.
352 sync_startup_tracker_.reset(); 349 sync_startup_tracker_.reset();
353 350
354 base::StringValue page("timeout"); 351 base::StringValue page("timeout");
355 base::DictionaryValue args; 352 base::DictionaryValue args;
356 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage", 353 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage",
357 page, args); 354 page, args);
358 } 355 }
359 356
360 void SyncHandler::OnDidClosePage(const base::ListValue* args) { 357 void PeopleHandler::OnDidClosePage(const base::ListValue* args) {
361 CloseSyncSetup(); 358 CloseSyncSetup();
362 } 359 }
363 360
364 void SyncHandler::SyncStartupFailed() { 361 void PeopleHandler::SyncStartupFailed() {
365 // Stop a timer to handle timeout in waiting for checking network connection. 362 // Stop a timer to handle timeout in waiting for checking network connection.
366 backend_start_timer_.reset(); 363 backend_start_timer_.reset();
367 364
368 // Just close the sync overlay (the idea is that the base settings page will 365 // Just close the sync overlay (the idea is that the base settings page will
369 // display the current error.) 366 // display the current error.)
370 CloseUI(); 367 CloseUI();
371 } 368 }
372 369
373 void SyncHandler::SyncStartupCompleted() { 370 void PeopleHandler::SyncStartupCompleted() {
374 ProfileSyncService* service = GetSyncService(); 371 ProfileSyncService* service = GetSyncService();
375 DCHECK(service->IsBackendInitialized()); 372 DCHECK(service->IsBackendInitialized());
376 373
377 // Stop a timer to handle timeout in waiting for checking network connection. 374 // Stop a timer to handle timeout in waiting for checking network connection.
378 backend_start_timer_.reset(); 375 backend_start_timer_.reset();
379 376
380 DisplayConfigureSync(false); 377 DisplayConfigureSync(false);
381 } 378 }
382 379
383 ProfileSyncService* SyncHandler::GetSyncService() const { 380 ProfileSyncService* PeopleHandler::GetSyncService() const {
384 return profile_->IsSyncAllowed() 381 return profile_->IsSyncAllowed()
385 ? ProfileSyncServiceFactory::GetForProfile(profile_) 382 ? ProfileSyncServiceFactory::GetForProfile(profile_)
386 : nullptr; 383 : nullptr;
387 } 384 }
388 385
389 void SyncHandler::HandleConfigure(const base::ListValue* args) { 386 void PeopleHandler::HandleConfigure(const base::ListValue* args) {
390 DCHECK(!sync_startup_tracker_); 387 DCHECK(!sync_startup_tracker_);
391 std::string json; 388 std::string json;
392 if (!args->GetString(0, &json)) { 389 if (!args->GetString(0, &json)) {
393 NOTREACHED() << "Could not read JSON argument"; 390 NOTREACHED() << "Could not read JSON argument";
394 return; 391 return;
395 } 392 }
396 if (json.empty()) { 393 if (json.empty()) {
397 NOTREACHED(); 394 NOTREACHED();
398 return; 395 return;
399 } 396 }
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 499
503 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_CUSTOMIZE); 500 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_CUSTOMIZE);
504 if (configuration.encrypt_all) 501 if (configuration.encrypt_all)
505 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_ENCRYPT); 502 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_ENCRYPT);
506 if (configuration.passphrase_is_gaia && !configuration.passphrase.empty()) 503 if (configuration.passphrase_is_gaia && !configuration.passphrase.empty())
507 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_PASSPHRASE); 504 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_PASSPHRASE);
508 if (!configuration.sync_everything) 505 if (!configuration.sync_everything)
509 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_CHOOSE); 506 ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_CHOOSE);
510 } 507 }
511 508
512 void SyncHandler::HandleShowSetupUI(const base::ListValue* args) { 509 void PeopleHandler::HandleShowSetupUI(const base::ListValue* args) {
513 if (!GetSyncService()) { 510 if (!GetSyncService()) {
514 CloseUI(); 511 CloseUI();
515 return; 512 return;
516 } 513 }
517 514
518 SigninManagerBase* signin = SigninManagerFactory::GetForProfile(profile_); 515 SigninManagerBase* signin = SigninManagerFactory::GetForProfile(profile_);
519 if (!signin->IsAuthenticated()) { 516 if (!signin->IsAuthenticated()) {
520 // For web-based signin, the signin page is not displayed in an overlay 517 // For web-based signin, the signin page is not displayed in an overlay
521 // on the settings page. So if we get here, it must be due to the user 518 // on the settings page. So if we get here, it must be due to the user
522 // cancelling signin (by reloading the sync settings page during initial 519 // cancelling signin (by reloading the sync settings page during initial
(...skipping 14 matching lines...) Expand all
537 534
538 // If a setup wizard is present on this page or another, bring it to focus. 535 // If a setup wizard is present on this page or another, bring it to focus.
539 // Otherwise, display a new one on this page. 536 // Otherwise, display a new one on this page.
540 if (!FocusExistingWizardIfPresent()) 537 if (!FocusExistingWizardIfPresent())
541 OpenSyncSetup(args); 538 OpenSyncSetup(args);
542 } 539 }
543 540
544 #if defined(OS_CHROMEOS) 541 #if defined(OS_CHROMEOS)
545 // On ChromeOS, we need to sign out the user session to fix an auth error, so 542 // On ChromeOS, we need to sign out the user session to fix an auth error, so
546 // the user goes through the real signin flow to generate a new auth token. 543 // the user goes through the real signin flow to generate a new auth token.
547 void SyncHandler::HandleDoSignOutOnAuthError(const base::ListValue* args) { 544 void PeopleHandler::HandleDoSignOutOnAuthError(const base::ListValue* args) {
548 DVLOG(1) << "Signing out the user to fix a sync error."; 545 DVLOG(1) << "Signing out the user to fix a sync error.";
549 chrome::AttemptUserExit(); 546 chrome::AttemptUserExit();
550 } 547 }
551 #endif 548 #endif
552 549
553 #if !defined(OS_CHROMEOS) 550 #if !defined(OS_CHROMEOS)
554 void SyncHandler::HandleStartSignin(const base::ListValue* args) { 551 void PeopleHandler::HandleStartSignin(const base::ListValue* args) {
555 // Should only be called if the user is not already signed in. 552 // Should only be called if the user is not already signed in.
556 DCHECK(!SigninManagerFactory::GetForProfile(profile_)->IsAuthenticated()); 553 DCHECK(!SigninManagerFactory::GetForProfile(profile_)->IsAuthenticated());
557 OpenSyncSetup(args); 554 OpenSyncSetup(args);
558 } 555 }
559 556
560 void SyncHandler::HandleStopSyncing(const base::ListValue* args) { 557 void PeopleHandler::HandleStopSyncing(const base::ListValue* args) {
561 if (GetSyncService()) 558 if (GetSyncService())
562 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); 559 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS);
563 SigninManagerFactory::GetForProfile(profile_) 560 SigninManagerFactory::GetForProfile(profile_)
564 ->SignOut(signin_metrics::USER_CLICKED_SIGNOUT_SETTINGS); 561 ->SignOut(signin_metrics::USER_CLICKED_SIGNOUT_SETTINGS);
565 562
566 bool delete_profile = false; 563 bool delete_profile = false;
567 if (args->GetBoolean(0, &delete_profile) && delete_profile) { 564 if (args->GetBoolean(0, &delete_profile) && delete_profile) {
568 // Do as BrowserOptionsHandler::DeleteProfile(). 565 // Do as BrowserOptionsHandler::DeleteProfile().
569 options::helper::DeleteProfileAtPath(profile_->GetPath(), web_ui()); 566 options::helper::DeleteProfileAtPath(profile_->GetPath(), web_ui());
570 } 567 }
571 } 568 }
572 #endif 569 #endif
573 570
574 void SyncHandler::HandleCloseTimeout(const base::ListValue* args) { 571 void PeopleHandler::HandleCloseTimeout(const base::ListValue* args) {
575 CloseSyncSetup(); 572 CloseSyncSetup();
576 } 573 }
577 574
578 void SyncHandler::HandleGetSyncStatus(const base::ListValue* /* args */) { 575 void PeopleHandler::HandleGetSyncStatus(const base::ListValue* /* args */) {
579 UpdateSyncState(); 576 UpdateSyncState();
580 } 577 }
581 578
582 void SyncHandler::HandleManageOtherPeople(const base::ListValue* /* args */) { 579 void PeopleHandler::HandleManageOtherPeople(const base::ListValue* /* args */) {
583 UserManager::Show(base::FilePath(), profiles::USER_MANAGER_NO_TUTORIAL, 580 UserManager::Show(base::FilePath(), profiles::USER_MANAGER_NO_TUTORIAL,
584 profiles::USER_MANAGER_SELECT_PROFILE_NO_ACTION); 581 profiles::USER_MANAGER_SELECT_PROFILE_NO_ACTION);
585 } 582 }
586 583
587 void SyncHandler::CloseSyncSetup() { 584 void PeopleHandler::CloseSyncSetup() {
588 // Stop a timer to handle timeout in waiting for checking network connection. 585 // Stop a timer to handle timeout in waiting for checking network connection.
589 backend_start_timer_.reset(); 586 backend_start_timer_.reset();
590 587
591 // Clear the sync startup tracker, since the setup wizard is being closed. 588 // Clear the sync startup tracker, since the setup wizard is being closed.
592 sync_startup_tracker_.reset(); 589 sync_startup_tracker_.reset();
593 590
594 ProfileSyncService* sync_service = GetSyncService(); 591 ProfileSyncService* sync_service = GetSyncService();
595 if (IsActiveLogin()) { 592 if (IsActiveLogin()) {
596 // Don't log a cancel event if the sync setup dialog is being 593 // Don't log a cancel event if the sync setup dialog is being
597 // automatically closed due to an auth error. 594 // automatically closed due to an auth error.
598 if (!sync_service || (!sync_service->HasSyncSetupCompleted() && 595 if (!sync_service || (!sync_service->HasSyncSetupCompleted() &&
599 sync_service->GetAuthError().state() == GoogleServiceAuthError::NONE)) { 596 sync_service->GetAuthError().state() ==
597 GoogleServiceAuthError::NONE)) {
600 if (configuring_sync_) { 598 if (configuring_sync_) {
601 ProfileSyncService::SyncEvent( 599 ProfileSyncService::SyncEvent(
602 ProfileSyncService::CANCEL_DURING_CONFIGURE); 600 ProfileSyncService::CANCEL_DURING_CONFIGURE);
603 601
604 // If the user clicked "Cancel" while setting up sync, disable sync 602 // If the user clicked "Cancel" while setting up sync, disable sync
605 // because we don't want the sync backend to remain in the 603 // because we don't want the sync backend to remain in the
606 // first-setup-incomplete state. 604 // first-setup-incomplete state.
607 // Note: In order to disable sync across restarts on Chrome OS, 605 // Note: In order to disable sync across restarts on Chrome OS,
608 // we must call RequestStop(CLEAR_DATA), which suppresses sync startup 606 // we must call RequestStop(CLEAR_DATA), which suppresses sync startup
609 // in addition to disabling it. 607 // in addition to disabling it.
610 if (sync_service) { 608 if (sync_service) {
611 DVLOG(1) << "Sync setup aborted by user action"; 609 DVLOG(1) << "Sync setup aborted by user action";
612 sync_service->RequestStop(ProfileSyncService::CLEAR_DATA); 610 sync_service->RequestStop(ProfileSyncService::CLEAR_DATA);
613 #if !defined(OS_CHROMEOS) 611 #if !defined(OS_CHROMEOS)
614 // Sign out the user on desktop Chrome if they click cancel during 612 // Sign out the user on desktop Chrome if they click cancel during
615 // initial setup. 613 // initial setup.
616 // TODO(rsimha): Revisit this for M30. See http://crbug.com/252049. 614 // TODO(rsimha): Revisit this for M30. See http://crbug.com/252049.
617 if (sync_service->IsFirstSetupInProgress()) { 615 if (sync_service->IsFirstSetupInProgress()) {
618 SigninManagerFactory::GetForProfile(profile_) 616 SigninManagerFactory::GetForProfile(profile_)
619 ->SignOut(signin_metrics::ABORT_SIGNIN); 617 ->SignOut(signin_metrics::ABORT_SIGNIN);
620 } 618 }
621 #endif 619 #endif
622 } 620 }
623 } 621 }
624 } 622 }
625 623
626 GetLoginUIService()->LoginUIClosed(this); 624 GetLoginUIService()->LoginUIClosed(this);
627 } 625 }
628 626
629 // Alert the sync service anytime the sync setup dialog is closed. This can 627 // Alert the sync service anytime the sync setup dialog is closed. This can
630 // happen due to the user clicking the OK or Cancel button, or due to the 628 // happen due to the user clicking the OK or Cancel button, or due to the
631 // dialog being closed by virtue of sync being disabled in the background. 629 // dialog being closed by virtue of sync being disabled in the background.
632 if (sync_service) 630 if (sync_service)
633 sync_service->SetSetupInProgress(false); 631 sync_service->SetSetupInProgress(false);
634 632
635 configuring_sync_ = false; 633 configuring_sync_ = false;
636 } 634 }
637 635
638 void SyncHandler::OpenSyncSetup(const base::ListValue* args) { 636 void PeopleHandler::OpenSyncSetup(const base::ListValue* args) {
639 if (!PrepareSyncSetup()) 637 if (!PrepareSyncSetup())
640 return; 638 return;
641 639
642 // There are several different UI flows that can bring the user here: 640 // There are several different UI flows that can bring the user here:
643 // 1) Signin promo. 641 // 1) Signin promo.
644 // 2) Normal signin through settings page (IsAuthenticated() is false). 642 // 2) Normal signin through settings page (IsAuthenticated() is false).
645 // 3) Previously working credentials have expired. 643 // 3) Previously working credentials have expired.
646 // 4) User is signed in, but has stopped sync via the google dashboard, and 644 // 4) User is signed in, but has stopped sync via the google dashboard, and
647 // signout is prohibited by policy so we need to force a re-auth. 645 // signout is prohibited by policy so we need to force a re-auth.
648 // 5) User clicks [Advanced Settings] button on options page while already 646 // 5) User clicks [Advanced Settings] button on options page while already
(...skipping 29 matching lines...) Expand all
678 CloseUI(); 676 CloseUI();
679 return; 677 return;
680 } 678 }
681 679
682 // User is already logged in. They must have brought up the config wizard 680 // User is already logged in. They must have brought up the config wizard
683 // via the "Advanced..." button or through One-Click signin (cases 4-6), or 681 // via the "Advanced..." button or through One-Click signin (cases 4-6), or
684 // they are re-enabling sync after having disabled it (case 7). 682 // they are re-enabling sync after having disabled it (case 7).
685 DisplayConfigureSync(false); 683 DisplayConfigureSync(false);
686 } 684 }
687 685
688 void SyncHandler::OpenConfigureSync() { 686 void PeopleHandler::OpenConfigureSync() {
689 if (!PrepareSyncSetup()) 687 if (!PrepareSyncSetup())
690 return; 688 return;
691 689
692 DisplayConfigureSync(false); 690 DisplayConfigureSync(false);
693 } 691 }
694 692
695 void SyncHandler::FocusUI() { 693 void PeopleHandler::FocusUI() {
696 DCHECK(IsActiveLogin()); 694 DCHECK(IsActiveLogin());
697 WebContents* web_contents = web_ui()->GetWebContents(); 695 WebContents* web_contents = web_ui()->GetWebContents();
698 web_contents->GetDelegate()->ActivateContents(web_contents); 696 web_contents->GetDelegate()->ActivateContents(web_contents);
699 } 697 }
700 698
701 void SyncHandler::CloseUI() { 699 void PeopleHandler::CloseUI() {
702 CloseSyncSetup(); 700 CloseSyncSetup();
703 base::StringValue page("done"); 701 base::StringValue page("done");
704 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage", 702 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage",
705 page); 703 page);
706 } 704 }
707 705
708 void SyncHandler::GoogleSigninSucceeded(const std::string& /* account_id */, 706 void PeopleHandler::GoogleSigninSucceeded(const std::string& /* account_id */,
709 const std::string& /* username */, 707 const std::string& /* username */,
710 const std::string& /* password */) { 708 const std::string& /* password */) {
711 UpdateSyncState(); 709 UpdateSyncState();
712 } 710 }
713 711
714 void SyncHandler::GoogleSignedOut(const std::string& /* account_id */, 712 void PeopleHandler::GoogleSignedOut(const std::string& /* account_id */,
715 const std::string& /* username */) { 713 const std::string& /* username */) {
716 UpdateSyncState(); 714 UpdateSyncState();
717 } 715 }
718 716
719 void SyncHandler::OnStateChanged() { 717 void PeopleHandler::OnStateChanged() {
720 UpdateSyncState(); 718 UpdateSyncState();
721 } 719 }
722 720
723 scoped_ptr<base::DictionaryValue> SyncHandler::GetSyncStateDictionary() { 721 scoped_ptr<base::DictionaryValue> PeopleHandler::GetSyncStateDictionary() {
724 // The items which are to be written into |sync_status| are also described in 722 // The items which are to be written into |sync_status| are also described in
725 // chrome/browser/resources/options/browser_options.js in @typedef 723 // chrome/browser/resources/options/browser_options.js in @typedef
726 // for SyncStatus. Please update it whenever you add or remove any keys here. 724 // for SyncStatus. Please update it whenever you add or remove any keys here.
727 scoped_ptr<base::DictionaryValue> sync_status(new base::DictionaryValue); 725 scoped_ptr<base::DictionaryValue> sync_status(new base::DictionaryValue);
728 if (profile_->IsGuestSession()) { 726 if (profile_->IsGuestSession()) {
729 // Cannot display signin status when running in guest mode on chromeos 727 // Cannot display signin status when running in guest mode on chromeos
730 // because there is no SigninManager. 728 // because there is no SigninManager.
731 sync_status->SetBoolean("signinAllowed", false); 729 sync_status->SetBoolean("signinAllowed", false);
732 return sync_status.Pass(); 730 return sync_status.Pass();
733 } 731 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 webui::GetBitmapDataUrl(icon.AsBitmap())); 781 webui::GetBitmapDataUrl(icon.AsBitmap()));
784 } else { 782 } else {
785 sync_status->SetString("iconURL", profiles::GetDefaultAvatarIconUrl( 783 sync_status->SetString("iconURL", profiles::GetDefaultAvatarIconUrl(
786 entry->GetAvatarIconIndex())); 784 entry->GetAvatarIconIndex()));
787 } 785 }
788 } 786 }
789 787
790 return sync_status.Pass(); 788 return sync_status.Pass();
791 } 789 }
792 790
793 bool SyncHandler::IsExistingWizardPresent() { 791 bool PeopleHandler::IsExistingWizardPresent() {
794 LoginUIService* service = GetLoginUIService(); 792 LoginUIService* service = GetLoginUIService();
795 DCHECK(service); 793 DCHECK(service);
796 return service->current_login_ui() != nullptr; 794 return service->current_login_ui() != nullptr;
797 } 795 }
798 796
799 bool SyncHandler::FocusExistingWizardIfPresent() { 797 bool PeopleHandler::FocusExistingWizardIfPresent() {
800 if (!IsExistingWizardPresent()) 798 if (!IsExistingWizardPresent())
801 return false; 799 return false;
802 800
803 LoginUIService* service = GetLoginUIService(); 801 LoginUIService* service = GetLoginUIService();
804 DCHECK(service); 802 DCHECK(service);
805 service->current_login_ui()->FocusUI(); 803 service->current_login_ui()->FocusUI();
806 return true; 804 return true;
807 } 805 }
808 806
809 void SyncHandler::DisplayConfigureSync(bool passphrase_failed) { 807 void PeopleHandler::DisplayConfigureSync(bool passphrase_failed) {
810 // Should never call this when we are not signed in. 808 // Should never call this when we are not signed in.
811 DCHECK(SigninManagerFactory::GetForProfile(profile_)->IsAuthenticated()); 809 DCHECK(SigninManagerFactory::GetForProfile(profile_)->IsAuthenticated());
812 ProfileSyncService* service = GetSyncService(); 810 ProfileSyncService* service = GetSyncService();
813 DCHECK(service); 811 DCHECK(service);
814 if (!service->IsBackendInitialized()) { 812 if (!service->IsBackendInitialized()) {
815 service->RequestStart(); 813 service->RequestStart();
816 814
817 // See if it's even possible to bring up the sync backend - if not 815 // See if it's even possible to bring up the sync backend - if not
818 // (unrecoverable error?), don't bother displaying a spinner that will be 816 // (unrecoverable error?), don't bother displaying a spinner that will be
819 // immediately closed because this leads to some ugly infinite UI loop (see 817 // immediately closed because this leads to some ugly infinite UI loop (see
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 876
879 // To distinguish between FROZEN_IMPLICIT_PASSPHRASE and CUSTOM_PASSPHRASE 877 // To distinguish between FROZEN_IMPLICIT_PASSPHRASE and CUSTOM_PASSPHRASE
880 // we only set usePassphrase for CUSTOM_PASSPHRASE. 878 // we only set usePassphrase for CUSTOM_PASSPHRASE.
881 args.SetBoolean("usePassphrase", 879 args.SetBoolean("usePassphrase",
882 service->GetPassphraseType() == syncer::CUSTOM_PASSPHRASE); 880 service->GetPassphraseType() == syncer::CUSTOM_PASSPHRASE);
883 base::Time passphrase_time = service->GetExplicitPassphraseTime(); 881 base::Time passphrase_time = service->GetExplicitPassphraseTime();
884 syncer::PassphraseType passphrase_type = service->GetPassphraseType(); 882 syncer::PassphraseType passphrase_type = service->GetPassphraseType();
885 if (!passphrase_time.is_null()) { 883 if (!passphrase_time.is_null()) {
886 base::string16 passphrase_time_str = 884 base::string16 passphrase_time_str =
887 base::TimeFormatShortDate(passphrase_time); 885 base::TimeFormatShortDate(passphrase_time);
888 args.SetString( 886 args.SetString("enterPassphraseBody",
889 "enterPassphraseBody", 887 GetStringFUTF16(IDS_SYNC_ENTER_PASSPHRASE_BODY_WITH_DATE,
890 GetStringFUTF16(IDS_SYNC_ENTER_PASSPHRASE_BODY_WITH_DATE, 888 passphrase_time_str));
891 passphrase_time_str));
892 args.SetString( 889 args.SetString(
893 "enterGooglePassphraseBody", 890 "enterGooglePassphraseBody",
894 GetStringFUTF16(IDS_SYNC_ENTER_GOOGLE_PASSPHRASE_BODY_WITH_DATE, 891 GetStringFUTF16(IDS_SYNC_ENTER_GOOGLE_PASSPHRASE_BODY_WITH_DATE,
895 passphrase_time_str)); 892 passphrase_time_str));
896 switch (passphrase_type) { 893 switch (passphrase_type) {
897 case syncer::FROZEN_IMPLICIT_PASSPHRASE: 894 case syncer::FROZEN_IMPLICIT_PASSPHRASE:
898 args.SetString( 895 args.SetString(
899 "fullEncryptionBody", 896 "fullEncryptionBody",
900 GetStringFUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_GOOGLE_WITH_DATE, 897 GetStringFUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_GOOGLE_WITH_DATE,
901 passphrase_time_str)); 898 passphrase_time_str));
902 break; 899 break;
903 case syncer::CUSTOM_PASSPHRASE: 900 case syncer::CUSTOM_PASSPHRASE:
904 args.SetString( 901 args.SetString(
905 "fullEncryptionBody", 902 "fullEncryptionBody",
906 GetStringFUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_CUSTOM_WITH_DATE, 903 GetStringFUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_CUSTOM_WITH_DATE,
907 passphrase_time_str)); 904 passphrase_time_str));
908 break; 905 break;
909 default: 906 default:
910 args.SetString( 907 args.SetString("fullEncryptionBody",
911 "fullEncryptionBody", 908 GetStringUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_CUSTOM));
912 GetStringUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_CUSTOM));
913 break; 909 break;
914 } 910 }
915 } else if (passphrase_type == syncer::CUSTOM_PASSPHRASE) { 911 } else if (passphrase_type == syncer::CUSTOM_PASSPHRASE) {
916 args.SetString( 912 args.SetString("fullEncryptionBody",
917 "fullEncryptionBody", 913 GetStringUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_CUSTOM));
918 GetStringUTF16(IDS_SYNC_FULL_ENCRYPTION_BODY_CUSTOM));
919 } else { 914 } else {
920 args.SetString( 915 args.SetString("fullEncryptionBody",
921 "fullEncryptionBody", 916 GetStringUTF16(IDS_SYNC_FULL_ENCRYPTION_DATA));
922 GetStringUTF16(IDS_SYNC_FULL_ENCRYPTION_DATA));
923 } 917 }
924 918
925 base::StringValue page("configure"); 919 base::StringValue page("configure");
926 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage", 920 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.showSyncSetupPage",
927 page, args); 921 page, args);
928 922
929 // Make sure the tab used for the Gaia sign in does not cover the settings 923 // Make sure the tab used for the Gaia sign in does not cover the settings
930 // tab. 924 // tab.
931 FocusUI(); 925 FocusUI();
932 } 926 }
933 927
934 LoginUIService* SyncHandler::GetLoginUIService() const { 928 LoginUIService* PeopleHandler::GetLoginUIService() const {
935 return LoginUIServiceFactory::GetForProfile(profile_); 929 return LoginUIServiceFactory::GetForProfile(profile_);
936 } 930 }
937 931
938 void SyncHandler::UpdateSyncState() { 932 void PeopleHandler::UpdateSyncState() {
939 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.sendSyncStatus", 933 web_ui()->CallJavascriptFunction("settings.SyncPrivateApi.sendSyncStatus",
940 *GetSyncStateDictionary()); 934 *GetSyncStateDictionary());
941 } 935 }
942 936
943 void SyncHandler::OnSigninAllowedPrefChange() { 937 void PeopleHandler::OnSigninAllowedPrefChange() {
944 UpdateSyncState(); 938 UpdateSyncState();
945 } 939 }
946 940
947 } // namespace settings 941 } // namespace settings
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/settings/people_handler.h ('k') | chrome/browser/ui/webui/settings/people_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698