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

Side by Side Diff: chrome/browser/ui/webui/signin/inline_login_handler_impl.cc

Issue 1473543002: Implement newly designed sign-in related histograms for desktop platorms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/signin/inline_login_handler_impl.h" 5 #include "chrome/browser/ui/webui/signin/inline_login_handler_impl.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 UMA_HISTOGRAM_ENUMERATION("Signin.AllAccessPointActions", action, 67 UMA_HISTOGRAM_ENUMERATION("Signin.AllAccessPointActions", action,
68 signin_metrics::HISTOGRAM_MAX); 68 signin_metrics::HISTOGRAM_MAX);
69 } 69 }
70 70
71 // Returns true if |profile| is a system profile or created from one. 71 // Returns true if |profile| is a system profile or created from one.
72 bool IsSystemProfile(Profile* profile) { 72 bool IsSystemProfile(Profile* profile) {
73 return profile->GetOriginalProfile()->IsSystemProfile(); 73 return profile->GetOriginalProfile()->IsSystemProfile();
74 } 74 }
75 75
76 void RedirectToNtpOrAppsPage(content::WebContents* contents, 76 void RedirectToNtpOrAppsPage(content::WebContents* contents,
77 signin_metrics::Source source) { 77 signin_metrics::AccessPoint access_point) {
78 // Do nothing if a navigation is pending, since this call can be triggered 78 // Do nothing if a navigation is pending, since this call can be triggered
79 // from DidStartLoading. This avoids deleting the pending entry while we are 79 // from DidStartLoading. This avoids deleting the pending entry while we are
80 // still navigating to it. See crbug/346632. 80 // still navigating to it. See crbug/346632.
81 if (contents->GetController().GetPendingEntry()) 81 if (contents->GetController().GetPendingEntry())
82 return; 82 return;
83 83
84 VLOG(1) << "RedirectToNtpOrAppsPage"; 84 VLOG(1) << "RedirectToNtpOrAppsPage";
85 // Redirect to NTP/Apps page and display a confirmation bubble 85 // Redirect to NTP/Apps page and display a confirmation bubble
86 GURL url(source == signin_metrics::SOURCE_APPS_PAGE_LINK ? 86 GURL url(access_point ==
87 chrome::kChromeUIAppsURL : chrome::kChromeUINewTabURL); 87 signin_metrics::AccessPoint::ACCESS_POINT_APPS_PAGE_LINK
88 ? chrome::kChromeUIAppsURL
89 : chrome::kChromeUINewTabURL);
88 content::OpenURLParams params(url, 90 content::OpenURLParams params(url,
89 content::Referrer(), 91 content::Referrer(),
90 CURRENT_TAB, 92 CURRENT_TAB,
91 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, 93 ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
92 false); 94 false);
93 contents->OpenURL(params); 95 contents->OpenURL(params);
94 } 96 }
95 97
96 void RedirectToNtpOrAppsPageIfNecessary(content::WebContents* contents, 98 void RedirectToNtpOrAppsPageIfNecessary(
97 signin_metrics::Source source) { 99 content::WebContents* contents,
98 if (source != signin_metrics::SOURCE_SETTINGS) 100 signin_metrics::AccessPoint access_point) {
99 RedirectToNtpOrAppsPage(contents, source); 101 if (access_point != signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS)
102 RedirectToNtpOrAppsPage(contents, access_point);
100 } 103 }
101 104
102 class ConfirmEmailDialogDelegate : public TabModalConfirmDialogDelegate { 105 class ConfirmEmailDialogDelegate : public TabModalConfirmDialogDelegate {
103 public: 106 public:
104 // Callback indicating action performed by the user. 107 // Callback indicating action performed by the user.
105 typedef base::Callback<void(InlineSigninHelper::Action)> Callback; 108 typedef base::Callback<void(InlineSigninHelper::Action)> Callback;
106 109
107 // Ask the user for confirmation before starting to sync. 110 // Ask the user for confirmation before starting to sync.
108 static void AskForConfirmation(content::WebContents* contents, 111 static void AskForConfirmation(content::WebContents* contents,
109 const std::string& last_email, 112 const std::string& last_email,
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 268
266 AboutSigninInternals* about_signin_internals = 269 AboutSigninInternals* about_signin_internals =
267 AboutSigninInternalsFactory::GetForProfile(profile_); 270 AboutSigninInternalsFactory::GetForProfile(profile_);
268 about_signin_internals->OnRefreshTokenReceived("Successful"); 271 about_signin_internals->OnRefreshTokenReceived("Successful");
269 272
270 // Prime the account tracker with this combination of gaia id/display email. 273 // Prime the account tracker with this combination of gaia id/display email.
271 std::string account_id = 274 std::string account_id =
272 AccountTrackerServiceFactory::GetForProfile(profile_) 275 AccountTrackerServiceFactory::GetForProfile(profile_)
273 ->SeedAccountInfo(gaia_id_, email_); 276 ->SeedAccountInfo(gaia_id_, email_);
274 277
275 signin_metrics::Source source = signin::GetSourceForPromoURL(current_url_); 278 signin_metrics::AccessPoint access_point =
279 signin::GetAccessPointForPromoURL(current_url_);
280 signin_metrics::Reason reason =
281 signin::GetSigninReasonForPromoURL(current_url_);
276 282
277 SigninManager* signin_manager = SigninManagerFactory::GetForProfile(profile_); 283 SigninManager* signin_manager = SigninManagerFactory::GetForProfile(profile_);
278 std::string primary_email = 284 std::string primary_email =
279 signin_manager->GetAuthenticatedAccountInfo().email; 285 signin_manager->GetAuthenticatedAccountInfo().email;
280 if (gaia::AreEmailsSame(email_, primary_email) && 286 if (gaia::AreEmailsSame(email_, primary_email) &&
281 source == signin_metrics::SOURCE_REAUTH && 287 (reason == signin_metrics::Reason::REASON_REAUTHENTICATION ||
282 switches::IsNewProfileManagement() && 288 reason == signin_metrics::Reason::REASON_UNLOCK) &&
283 !password_.empty() && 289 switches::IsNewProfileManagement() && !password_.empty() &&
284 profiles::IsLockAvailable(profile_)) { 290 profiles::IsLockAvailable(profile_)) {
285 LocalAuth::SetLocalAuthCredentials(profile_, password_); 291 LocalAuth::SetLocalAuthCredentials(profile_, password_);
286 } 292 }
287 293
288 if (source == signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT || 294 if (reason == signin_metrics::Reason::REASON_REAUTHENTICATION ||
289 source == signin_metrics::SOURCE_REAUTH) { 295 reason == signin_metrics::Reason::REASON_UNLOCK ||
296 reason == signin_metrics::Reason::REASON_ADD_SECONDARY_ACCOUNT) {
290 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)-> 297 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)->
291 UpdateCredentials(account_id, result.refresh_token); 298 UpdateCredentials(account_id, result.refresh_token);
292 299
293 if (signin::IsAutoCloseEnabledInURL(current_url_)) { 300 if (signin::IsAutoCloseEnabledInURL(current_url_)) {
294 // Close the gaia sign in tab via a task to make sure we aren't in the 301 // Close the gaia sign in tab via a task to make sure we aren't in the
295 // middle of any webui handler code. 302 // middle of any webui handler code.
296 base::ThreadTaskRunnerHandle::Get()->PostTask( 303 base::ThreadTaskRunnerHandle::Get()->PostTask(
297 FROM_HERE, 304 FROM_HERE,
298 base::Bind(&InlineLoginHandlerImpl::CloseTab, handler_, 305 base::Bind(&InlineLoginHandlerImpl::CloseTab, handler_,
299 signin::ShouldShowAccountManagement(current_url_))); 306 signin::ShouldShowAccountManagement(current_url_)));
300 } 307 }
301 308
302 if (source == signin_metrics::SOURCE_REAUTH) 309 if (reason == signin_metrics::Reason::REASON_REAUTHENTICATION ||
310 reason == signin_metrics::Reason::REASON_UNLOCK) {
303 signin_manager->MergeSigninCredentialIntoCookieJar(); 311 signin_manager->MergeSigninCredentialIntoCookieJar();
312 }
304 } else { 313 } else {
305 ProfileSyncService* sync_service = 314 ProfileSyncService* sync_service =
306 ProfileSyncServiceFactory::GetForProfile(profile_); 315 ProfileSyncServiceFactory::GetForProfile(profile_);
307 SigninErrorController* error_controller = 316 SigninErrorController* error_controller =
308 SigninErrorControllerFactory::GetForProfile(profile_); 317 SigninErrorControllerFactory::GetForProfile(profile_);
309 318
310 OneClickSigninSyncStarter::StartSyncMode start_mode = 319 OneClickSigninSyncStarter::StartSyncMode start_mode =
311 OneClickSigninSyncStarter::CONFIRM_SYNC_SETTINGS_FIRST; 320 OneClickSigninSyncStarter::CONFIRM_SYNC_SETTINGS_FIRST;
312 if (source == signin_metrics::SOURCE_SETTINGS || choose_what_to_sync_) { 321 if (access_point == signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS ||
322 choose_what_to_sync_) {
313 bool show_settings_without_configure = 323 bool show_settings_without_configure =
314 error_controller->HasError() && 324 error_controller->HasError() &&
315 sync_service && 325 sync_service &&
316 sync_service->HasSyncSetupCompleted(); 326 sync_service->HasSyncSetupCompleted();
317 start_mode = show_settings_without_configure ? 327 start_mode = show_settings_without_configure ?
318 OneClickSigninSyncStarter::SHOW_SETTINGS_WITHOUT_CONFIGURE : 328 OneClickSigninSyncStarter::SHOW_SETTINGS_WITHOUT_CONFIGURE :
319 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST; 329 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST;
320 } 330 }
321 331
322 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required = 332 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required =
323 confirm_untrusted_signin_ ? 333 confirm_untrusted_signin_ ?
324 OneClickSigninSyncStarter::CONFIRM_UNTRUSTED_SIGNIN : 334 OneClickSigninSyncStarter::CONFIRM_UNTRUSTED_SIGNIN :
325 OneClickSigninSyncStarter::CONFIRM_AFTER_SIGNIN; 335 OneClickSigninSyncStarter::CONFIRM_AFTER_SIGNIN;
326 336
327 bool start_signin = !HandleCrossAccountError(result.refresh_token, source, 337 bool start_signin = !HandleCrossAccountError(
328 confirmation_required, start_mode); 338 result.refresh_token, confirmation_required, start_mode);
329 if (start_signin) { 339 if (start_signin) {
330 CreateSyncStarter(browser, 340 CreateSyncStarter(browser, contents, current_url_,
331 contents,
332 signin::GetNextPageURLForPromoURL(current_url_), 341 signin::GetNextPageURLForPromoURL(current_url_),
333 result.refresh_token, 342 result.refresh_token, start_mode,
334 start_mode,
335 confirmation_required); 343 confirmation_required);
336 base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this); 344 base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
337 } 345 }
338 } 346 }
339 } 347 }
340 348
341 void InlineSigninHelper::CreateSyncStarter( 349 void InlineSigninHelper::CreateSyncStarter(
342 Browser* browser, 350 Browser* browser,
343 content::WebContents* contents, 351 content::WebContents* contents,
344 const GURL& url, 352 const GURL& current_url,
353 const GURL& continue_url,
345 const std::string& refresh_token, 354 const std::string& refresh_token,
346 OneClickSigninSyncStarter::StartSyncMode start_mode, 355 OneClickSigninSyncStarter::StartSyncMode start_mode,
347 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required) { 356 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required) {
348 // OneClickSigninSyncStarter will delete itself once the job is done. 357 // OneClickSigninSyncStarter will delete itself once the job is done.
349 new OneClickSigninSyncStarter( 358 new OneClickSigninSyncStarter(
350 profile_, browser, 359 profile_, browser, gaia_id_, email_, password_, refresh_token, start_mode,
351 gaia_id_, email_, password_, refresh_token, 360 contents, confirmation_required, current_url, continue_url,
352 start_mode,
353 contents,
354 confirmation_required,
355 url,
356 base::Bind(&InlineLoginHandlerImpl::SyncStarterCallback, handler_)); 361 base::Bind(&InlineLoginHandlerImpl::SyncStarterCallback, handler_));
357 } 362 }
358 363
359 bool InlineSigninHelper::HandleCrossAccountError( 364 bool InlineSigninHelper::HandleCrossAccountError(
360 const std::string& refresh_token, 365 const std::string& refresh_token,
361 signin_metrics::Source source,
362 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required, 366 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required,
363 OneClickSigninSyncStarter::StartSyncMode start_mode) { 367 OneClickSigninSyncStarter::StartSyncMode start_mode) {
364 std::string last_email = 368 std::string last_email =
365 profile_->GetPrefs()->GetString(prefs::kGoogleServicesLastUsername); 369 profile_->GetPrefs()->GetString(prefs::kGoogleServicesLastUsername);
366 370
367 if (last_email.empty() || gaia::AreEmailsSame(last_email, email_)) 371 if (last_email.empty() || gaia::AreEmailsSame(last_email, email_))
368 return false; 372 return false;
369 373
370 Browser* browser = chrome::FindLastActiveWithProfile( 374 Browser* browser = chrome::FindLastActiveWithProfile(
371 profile_, chrome::GetActiveDesktop()); 375 profile_, chrome::GetActiveDesktop());
372 content::WebContents* web_contents = 376 content::WebContents* web_contents =
373 browser->tab_strip_model()->GetActiveWebContents(); 377 browser->tab_strip_model()->GetActiveWebContents();
374 378
375 ConfirmEmailDialogDelegate::AskForConfirmation( 379 ConfirmEmailDialogDelegate::AskForConfirmation(
376 web_contents, 380 web_contents,
377 last_email, 381 last_email,
378 email_, 382 email_,
379 base::Bind(&InlineSigninHelper::ConfirmEmailAction, 383 base::Bind(&InlineSigninHelper::ConfirmEmailAction,
380 base::Unretained(this), 384 base::Unretained(this),
381 web_contents, 385 web_contents,
382 refresh_token, 386 refresh_token,
383 source,
384 confirmation_required, 387 confirmation_required,
385 start_mode)); 388 start_mode));
386 return true; 389 return true;
387 } 390 }
388 391
389 void InlineSigninHelper::ConfirmEmailAction( 392 void InlineSigninHelper::ConfirmEmailAction(
390 content::WebContents* web_contents, 393 content::WebContents* web_contents,
391 const std::string& refresh_token, 394 const std::string& refresh_token,
392 signin_metrics::Source source,
393 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required, 395 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required,
394 OneClickSigninSyncStarter::StartSyncMode start_mode, 396 OneClickSigninSyncStarter::StartSyncMode start_mode,
395 InlineSigninHelper::Action action) { 397 InlineSigninHelper::Action action) {
396 Browser* browser = chrome::FindLastActiveWithProfile( 398 Browser* browser = chrome::FindLastActiveWithProfile(
397 profile_, chrome::GetActiveDesktop()); 399 profile_, chrome::GetActiveDesktop());
398 switch (action) { 400 switch (action) {
399 case InlineSigninHelper::CREATE_NEW_USER: 401 case InlineSigninHelper::CREATE_NEW_USER:
400 if (handler_) { 402 if (handler_) {
401 handler_->SyncStarterCallback( 403 handler_->SyncStarterCallback(
402 OneClickSigninSyncStarter::SYNC_SETUP_FAILURE); 404 OneClickSigninSyncStarter::SYNC_SETUP_FAILURE);
403 } 405 }
404 chrome::ShowSettingsSubPage(browser, 406 chrome::ShowSettingsSubPage(browser,
405 std::string(chrome::kCreateProfileSubPage)); 407 std::string(chrome::kCreateProfileSubPage));
406 break; 408 break;
407 case InlineSigninHelper::START_SYNC: 409 case InlineSigninHelper::START_SYNC:
408 CreateSyncStarter(browser, web_contents, GURL(), refresh_token, 410 CreateSyncStarter(browser, web_contents, current_url_, GURL(),
409 start_mode, confirmation_required); 411 refresh_token, start_mode, confirmation_required);
410 break; 412 break;
411 case InlineSigninHelper::CLOSE: 413 case InlineSigninHelper::CLOSE:
412 if (handler_) { 414 if (handler_) {
413 handler_->SyncStarterCallback( 415 handler_->SyncStarterCallback(
414 OneClickSigninSyncStarter::SYNC_SETUP_FAILURE); 416 OneClickSigninSyncStarter::SYNC_SETUP_FAILURE);
415 } 417 }
416 break; 418 break;
417 default: 419 default:
418 DCHECK(false) << "Invalid action"; 420 DCHECK(false) << "Invalid action";
419 } 421 }
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 params.SetString("service", "chromiumsync"); 554 params.SetString("service", "chromiumsync");
553 555
554 // If this was called from the user manager to reauthenticate the profile, 556 // If this was called from the user manager to reauthenticate the profile,
555 // make sure the webui is aware. 557 // make sure the webui is aware.
556 Profile* profile = Profile::FromWebUI(web_ui()); 558 Profile* profile = Profile::FromWebUI(web_ui());
557 if (IsSystemProfile(profile)) 559 if (IsSystemProfile(profile))
558 params.SetBoolean("dontResizeNonEmbeddedPages", true); 560 params.SetBoolean("dontResizeNonEmbeddedPages", true);
559 561
560 content::WebContents* contents = web_ui()->GetWebContents(); 562 content::WebContents* contents = web_ui()->GetWebContents();
561 const GURL& current_url = contents->GetURL(); 563 const GURL& current_url = contents->GetURL();
562 signin_metrics::Source source = signin::GetSourceForPromoURL(current_url); 564 signin_metrics::Reason reason =
565 signin::GetSigninReasonForPromoURL(current_url);
563 566
564 std::string is_constrained; 567 std::string is_constrained;
565 net::GetValueForKeyInQuery(current_url, "constrained", &is_constrained); 568 net::GetValueForKeyInQuery(current_url, "constrained", &is_constrained);
566 569
567 // Use new embedded flow if in constrained window. 570 // Use new embedded flow if in constrained window.
568 if (is_constrained == "1") { 571 if (is_constrained == "1") {
569 const bool is_new_gaia_flow = switches::UsePasswordSeparatedSigninFlow(); 572 const bool is_new_gaia_flow = switches::UsePasswordSeparatedSigninFlow();
570 const GURL& url = is_new_gaia_flow 573 const GURL& url = is_new_gaia_flow
571 ? GaiaUrls::GetInstance()->embedded_signin_url() 574 ? GaiaUrls::GetInstance()->embedded_signin_url()
572 : GaiaUrls::GetInstance()->password_combined_embedded_signin_url(); 575 : GaiaUrls::GetInstance()->password_combined_embedded_signin_url();
573 params.SetBoolean("isNewGaiaFlow", is_new_gaia_flow); 576 params.SetBoolean("isNewGaiaFlow", is_new_gaia_flow);
574 params.SetString("clientId", 577 params.SetString("clientId",
575 GaiaUrls::GetInstance()->oauth2_chrome_client_id()); 578 GaiaUrls::GetInstance()->oauth2_chrome_client_id());
576 params.SetString("gaiaPath", url.path().substr(1)); 579 params.SetString("gaiaPath", url.path().substr(1));
577 580
578 std::string flow; 581 std::string flow;
579 switch (source) { 582 switch (reason) {
580 case signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT: 583 case signin_metrics::Reason::REASON_ADD_SECONDARY_ACCOUNT:
581 flow = "addaccount"; 584 flow = "addaccount";
582 break; 585 break;
583 case signin_metrics::SOURCE_REAUTH: 586 case signin_metrics::Reason::REASON_REAUTHENTICATION:
587 case signin_metrics::Reason::REASON_UNLOCK:
584 flow = "reauth"; 588 flow = "reauth";
585 break; 589 break;
586 default: 590 default:
587 flow = "signin"; 591 flow = "signin";
588 break; 592 break;
589 } 593 }
590 params.SetString("flow", flow); 594 params.SetString("flow", flow);
591 } 595 }
592 596
593 content::WebContentsObserver::Observe(contents); 597 content::WebContentsObserver::Observe(contents);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 if (!gaia::AreEmailsSame(params.email, default_email)) { 736 if (!gaia::AreEmailsSame(params.email, default_email)) {
733 if (params.handler) { 737 if (params.handler) {
734 params.handler->HandleLoginError( 738 params.handler->HandleLoginError(
735 l10n_util::GetStringFUTF8(IDS_SYNC_WRONG_EMAIL, 739 l10n_util::GetStringFUTF8(IDS_SYNC_WRONG_EMAIL,
736 base::UTF8ToUTF16(default_email))); 740 base::UTF8ToUTF16(default_email)));
737 } 741 }
738 return; 742 return;
739 } 743 }
740 } 744 }
741 745
742 signin_metrics::Source source = signin::GetSourceForPromoURL(params.url); 746 signin_metrics::AccessPoint access_point =
747 signin::GetAccessPointForPromoURL(params.url);
748 signin_metrics::Reason reason =
749 signin::GetSigninReasonForPromoURL(params.url);
743 LogHistogramValue(signin_metrics::HISTOGRAM_ACCEPTED); 750 LogHistogramValue(signin_metrics::HISTOGRAM_ACCEPTED);
744 bool switch_to_advanced = 751 bool switch_to_advanced =
745 params.choose_what_to_sync && (source != signin_metrics::SOURCE_SETTINGS); 752 params.choose_what_to_sync &&
753 (access_point != signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS);
746 LogHistogramValue( 754 LogHistogramValue(
747 switch_to_advanced ? signin_metrics::HISTOGRAM_WITH_ADVANCED : 755 switch_to_advanced ? signin_metrics::HISTOGRAM_WITH_ADVANCED :
748 signin_metrics::HISTOGRAM_WITH_DEFAULTS); 756 signin_metrics::HISTOGRAM_WITH_DEFAULTS);
749 757
750 CanOfferFor can_offer_for = CAN_OFFER_FOR_ALL; 758 CanOfferFor can_offer_for = CAN_OFFER_FOR_ALL;
751 switch (source) { 759 switch (reason) {
752 case signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT: 760 case signin_metrics::Reason::REASON_ADD_SECONDARY_ACCOUNT:
753 can_offer_for = CAN_OFFER_FOR_SECONDARY_ACCOUNT; 761 can_offer_for = CAN_OFFER_FOR_SECONDARY_ACCOUNT;
754 break; 762 break;
755 case signin_metrics::SOURCE_REAUTH: { 763 case signin_metrics::Reason::REASON_REAUTHENTICATION:
764 case signin_metrics::Reason::REASON_UNLOCK: {
756 std::string primary_username = 765 std::string primary_username =
757 SigninManagerFactory::GetForProfile(profile) 766 SigninManagerFactory::GetForProfile(profile)
758 ->GetAuthenticatedAccountInfo() 767 ->GetAuthenticatedAccountInfo()
759 .email; 768 .email;
760 if (!gaia::AreEmailsSame(default_email, primary_username)) 769 if (!gaia::AreEmailsSame(default_email, primary_username))
761 can_offer_for = CAN_OFFER_FOR_SECONDARY_ACCOUNT; 770 can_offer_for = CAN_OFFER_FOR_SECONDARY_ACCOUNT;
762 break; 771 break;
763 } 772 }
764 default: 773 default:
765 // No need to change |can_offer_for|. 774 // No need to change |can_offer_for|.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 content::WebContents* contents = web_ui()->GetWebContents(); 850 content::WebContents* contents = web_ui()->GetWebContents();
842 851
843 if (contents->GetController().GetPendingEntry()) { 852 if (contents->GetController().GetPendingEntry()) {
844 // Do nothing if a navigation is pending, since this call can be triggered 853 // Do nothing if a navigation is pending, since this call can be triggered
845 // from DidStartLoading. This avoids deleting the pending entry while we are 854 // from DidStartLoading. This avoids deleting the pending entry while we are
846 // still navigating to it. See crbug/346632. 855 // still navigating to it. See crbug/346632.
847 return; 856 return;
848 } 857 }
849 858
850 const GURL& current_url = contents->GetLastCommittedURL(); 859 const GURL& current_url = contents->GetLastCommittedURL();
851 signin_metrics::Source source = signin::GetSourceForPromoURL(current_url); 860 signin_metrics::AccessPoint access_point =
861 signin::GetAccessPointForPromoURL(current_url);
852 bool auto_close = signin::IsAutoCloseEnabledInURL(current_url); 862 bool auto_close = signin::IsAutoCloseEnabledInURL(current_url);
853 863
854 if (result == OneClickSigninSyncStarter::SYNC_SETUP_FAILURE) { 864 if (result == OneClickSigninSyncStarter::SYNC_SETUP_FAILURE) {
855 RedirectToNtpOrAppsPage(contents, source); 865 RedirectToNtpOrAppsPage(contents, access_point);
856 } else if (auto_close) { 866 } else if (auto_close) {
857 base::ThreadTaskRunnerHandle::Get()->PostTask( 867 base::ThreadTaskRunnerHandle::Get()->PostTask(
858 FROM_HERE, 868 FROM_HERE,
859 base::Bind(&InlineLoginHandlerImpl::CloseTab, 869 base::Bind(&InlineLoginHandlerImpl::CloseTab,
860 weak_factory_.GetWeakPtr(), 870 weak_factory_.GetWeakPtr(),
861 signin::ShouldShowAccountManagement(current_url))); 871 signin::ShouldShowAccountManagement(current_url)));
862 } else { 872 } else {
863 RedirectToNtpOrAppsPageIfNecessary(contents, source); 873 RedirectToNtpOrAppsPageIfNecessary(contents, access_point);
864 } 874 }
865 } 875 }
866 876
867 void InlineLoginHandlerImpl::CloseTab(bool show_account_management) { 877 void InlineLoginHandlerImpl::CloseTab(bool show_account_management) {
868 content::WebContents* tab = web_ui()->GetWebContents(); 878 content::WebContents* tab = web_ui()->GetWebContents();
869 Browser* browser = chrome::FindBrowserWithWebContents(tab); 879 Browser* browser = chrome::FindBrowserWithWebContents(tab);
870 if (browser) { 880 if (browser) {
871 TabStripModel* tab_strip_model = browser->tab_strip_model(); 881 TabStripModel* tab_strip_model = browser->tab_strip_model();
872 if (tab_strip_model) { 882 if (tab_strip_model) {
873 int index = tab_strip_model->GetIndexOfWebContents(tab); 883 int index = tab_strip_model->GetIndexOfWebContents(tab);
874 if (index != TabStripModel::kNoTab) { 884 if (index != TabStripModel::kNoTab) {
875 tab_strip_model->ExecuteContextMenuCommand( 885 tab_strip_model->ExecuteContextMenuCommand(
876 index, TabStripModel::CommandCloseTab); 886 index, TabStripModel::CommandCloseTab);
877 } 887 }
878 } 888 }
879 889
880 if (show_account_management) { 890 if (show_account_management) {
881 browser->window()->ShowAvatarBubbleFromAvatarButton( 891 browser->window()->ShowAvatarBubbleFromAvatarButton(
882 BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT, 892 BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT,
883 signin::ManageAccountsParams()); 893 signin::ManageAccountsParams(),
894 signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN);
884 } 895 }
885 } 896 }
886 } 897 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698