| Index: chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
|
| diff --git a/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc b/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
|
| index 9ec70e8788a55d4d0fa92ae77d77b1f4149332b3..c76df160459c289d844be455236dde7bbc1429b7 100644
|
| --- a/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
|
| +++ b/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
|
| @@ -74,7 +74,7 @@ bool IsSystemProfile(Profile* profile) {
|
| }
|
|
|
| void RedirectToNtpOrAppsPage(content::WebContents* contents,
|
| - signin_metrics::Source source) {
|
| + signin_metrics::AccessPoint access_point) {
|
| // Do nothing if a navigation is pending, since this call can be triggered
|
| // from DidStartLoading. This avoids deleting the pending entry while we are
|
| // still navigating to it. See crbug/346632.
|
| @@ -83,8 +83,9 @@ void RedirectToNtpOrAppsPage(content::WebContents* contents,
|
|
|
| VLOG(1) << "RedirectToNtpOrAppsPage";
|
| // Redirect to NTP/Apps page and display a confirmation bubble
|
| - GURL url(source == signin_metrics::SOURCE_APPS_PAGE_LINK ?
|
| - chrome::kChromeUIAppsURL : chrome::kChromeUINewTabURL);
|
| + GURL url(access_point == signin_metrics::ACCESS_POINT_APPS_PAGE_LINK
|
| + ? chrome::kChromeUIAppsURL
|
| + : chrome::kChromeUINewTabURL);
|
| content::OpenURLParams params(url,
|
| content::Referrer(),
|
| CURRENT_TAB,
|
| @@ -93,10 +94,11 @@ void RedirectToNtpOrAppsPage(content::WebContents* contents,
|
| contents->OpenURL(params);
|
| }
|
|
|
| -void RedirectToNtpOrAppsPageIfNecessary(content::WebContents* contents,
|
| - signin_metrics::Source source) {
|
| - if (source != signin_metrics::SOURCE_SETTINGS)
|
| - RedirectToNtpOrAppsPage(contents, source);
|
| +void RedirectToNtpOrAppsPageIfNecessary(
|
| + content::WebContents* contents,
|
| + signin_metrics::AccessPoint access_point) {
|
| + if (access_point != signin_metrics::ACCESS_POINT_SETTINGS)
|
| + RedirectToNtpOrAppsPage(contents, access_point);
|
| }
|
|
|
| class ConfirmEmailDialogDelegate : public TabModalConfirmDialogDelegate {
|
| @@ -272,21 +274,25 @@ void InlineSigninHelper::OnClientOAuthSuccess(const ClientOAuthResult& result) {
|
| AccountTrackerServiceFactory::GetForProfile(profile_)
|
| ->SeedAccountInfo(gaia_id_, email_);
|
|
|
| - signin_metrics::Source source = signin::GetSourceForPromoURL(current_url_);
|
| + signin_metrics::AccessPoint access_point =
|
| + signin::GetAccessPointForPromoURL(current_url_);
|
| + signin_metrics::Reason reason =
|
| + signin::GetSigninReasonForPromoURL(current_url_);
|
|
|
| SigninManager* signin_manager = SigninManagerFactory::GetForProfile(profile_);
|
| std::string primary_email =
|
| signin_manager->GetAuthenticatedAccountInfo().email;
|
| if (gaia::AreEmailsSame(email_, primary_email) &&
|
| - source == signin_metrics::SOURCE_REAUTH &&
|
| - switches::IsNewProfileManagement() &&
|
| - !password_.empty() &&
|
| + (reason == signin_metrics::REASON_REAUTHENTICATION ||
|
| + reason == signin_metrics::REASON_UNLOCK) &&
|
| + switches::IsNewProfileManagement() && !password_.empty() &&
|
| profiles::IsLockAvailable(profile_)) {
|
| LocalAuth::SetLocalAuthCredentials(profile_, password_);
|
| }
|
|
|
| - if (source == signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT ||
|
| - source == signin_metrics::SOURCE_REAUTH) {
|
| + if (reason == signin_metrics::REASON_REAUTHENTICATION ||
|
| + reason == signin_metrics::REASON_UNLOCK ||
|
| + reason == signin_metrics::REASON_ADD_SECONDARY_ACCOUNT) {
|
| ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)->
|
| UpdateCredentials(account_id, result.refresh_token);
|
|
|
| @@ -299,8 +305,10 @@ void InlineSigninHelper::OnClientOAuthSuccess(const ClientOAuthResult& result) {
|
| signin::ShouldShowAccountManagement(current_url_)));
|
| }
|
|
|
| - if (source == signin_metrics::SOURCE_REAUTH)
|
| + if (reason == signin_metrics::REASON_REAUTHENTICATION ||
|
| + reason == signin_metrics::REASON_UNLOCK) {
|
| signin_manager->MergeSigninCredentialIntoCookieJar();
|
| + }
|
| } else {
|
| ProfileSyncService* sync_service =
|
| ProfileSyncServiceFactory::GetForProfile(profile_);
|
| @@ -309,7 +317,8 @@ void InlineSigninHelper::OnClientOAuthSuccess(const ClientOAuthResult& result) {
|
|
|
| OneClickSigninSyncStarter::StartSyncMode start_mode =
|
| OneClickSigninSyncStarter::CONFIRM_SYNC_SETTINGS_FIRST;
|
| - if (source == signin_metrics::SOURCE_SETTINGS || choose_what_to_sync_) {
|
| + if (access_point == signin_metrics::ACCESS_POINT_SETTINGS ||
|
| + choose_what_to_sync_) {
|
| bool show_settings_without_configure =
|
| error_controller->HasError() &&
|
| sync_service &&
|
| @@ -324,14 +333,12 @@ void InlineSigninHelper::OnClientOAuthSuccess(const ClientOAuthResult& result) {
|
| OneClickSigninSyncStarter::CONFIRM_UNTRUSTED_SIGNIN :
|
| OneClickSigninSyncStarter::CONFIRM_AFTER_SIGNIN;
|
|
|
| - bool start_signin = !HandleCrossAccountError(result.refresh_token, source,
|
| - confirmation_required, start_mode);
|
| + bool start_signin = !HandleCrossAccountError(
|
| + result.refresh_token, confirmation_required, start_mode);
|
| if (start_signin) {
|
| - CreateSyncStarter(browser,
|
| - contents,
|
| + CreateSyncStarter(browser, contents, current_url_,
|
| signin::GetNextPageURLForPromoURL(current_url_),
|
| - result.refresh_token,
|
| - start_mode,
|
| + result.refresh_token, start_mode,
|
| confirmation_required);
|
| base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
|
| }
|
| @@ -341,24 +348,20 @@ void InlineSigninHelper::OnClientOAuthSuccess(const ClientOAuthResult& result) {
|
| void InlineSigninHelper::CreateSyncStarter(
|
| Browser* browser,
|
| content::WebContents* contents,
|
| - const GURL& url,
|
| + const GURL& current_url,
|
| + const GURL& continue_url,
|
| const std::string& refresh_token,
|
| OneClickSigninSyncStarter::StartSyncMode start_mode,
|
| OneClickSigninSyncStarter::ConfirmationRequired confirmation_required) {
|
| // OneClickSigninSyncStarter will delete itself once the job is done.
|
| new OneClickSigninSyncStarter(
|
| - profile_, browser,
|
| - gaia_id_, email_, password_, refresh_token,
|
| - start_mode,
|
| - contents,
|
| - confirmation_required,
|
| - url,
|
| + profile_, browser, gaia_id_, email_, password_, refresh_token, start_mode,
|
| + contents, confirmation_required, current_url, continue_url,
|
| base::Bind(&InlineLoginHandlerImpl::SyncStarterCallback, handler_));
|
| }
|
|
|
| bool InlineSigninHelper::HandleCrossAccountError(
|
| const std::string& refresh_token,
|
| - signin_metrics::Source source,
|
| OneClickSigninSyncStarter::ConfirmationRequired confirmation_required,
|
| OneClickSigninSyncStarter::StartSyncMode start_mode) {
|
| std::string last_email =
|
| @@ -380,7 +383,6 @@ bool InlineSigninHelper::HandleCrossAccountError(
|
| base::Unretained(this),
|
| web_contents,
|
| refresh_token,
|
| - source,
|
| confirmation_required,
|
| start_mode));
|
| return true;
|
| @@ -389,7 +391,6 @@ bool InlineSigninHelper::HandleCrossAccountError(
|
| void InlineSigninHelper::ConfirmEmailAction(
|
| content::WebContents* web_contents,
|
| const std::string& refresh_token,
|
| - signin_metrics::Source source,
|
| OneClickSigninSyncStarter::ConfirmationRequired confirmation_required,
|
| OneClickSigninSyncStarter::StartSyncMode start_mode,
|
| InlineSigninHelper::Action action) {
|
| @@ -405,8 +406,8 @@ void InlineSigninHelper::ConfirmEmailAction(
|
| std::string(chrome::kCreateProfileSubPage));
|
| break;
|
| case InlineSigninHelper::START_SYNC:
|
| - CreateSyncStarter(browser, web_contents, GURL(), refresh_token,
|
| - start_mode, confirmation_required);
|
| + CreateSyncStarter(browser, web_contents, current_url_, GURL(),
|
| + refresh_token, start_mode, confirmation_required);
|
| break;
|
| case InlineSigninHelper::CLOSE:
|
| if (handler_) {
|
| @@ -559,7 +560,8 @@ void InlineLoginHandlerImpl::SetExtraInitParams(base::DictionaryValue& params) {
|
|
|
| content::WebContents* contents = web_ui()->GetWebContents();
|
| const GURL& current_url = contents->GetURL();
|
| - signin_metrics::Source source = signin::GetSourceForPromoURL(current_url);
|
| + signin_metrics::Reason reason =
|
| + signin::GetSigninReasonForPromoURL(current_url);
|
|
|
| std::string is_constrained;
|
| net::GetValueForKeyInQuery(current_url, "constrained", &is_constrained);
|
| @@ -576,11 +578,12 @@ void InlineLoginHandlerImpl::SetExtraInitParams(base::DictionaryValue& params) {
|
| params.SetString("gaiaPath", url.path().substr(1));
|
|
|
| std::string flow;
|
| - switch (source) {
|
| - case signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT:
|
| + switch (reason) {
|
| + case signin_metrics::REASON_ADD_SECONDARY_ACCOUNT:
|
| flow = "addaccount";
|
| break;
|
| - case signin_metrics::SOURCE_REAUTH:
|
| + case signin_metrics::REASON_REAUTHENTICATION:
|
| + case signin_metrics::REASON_UNLOCK:
|
| flow = "reauth";
|
| break;
|
| default:
|
| @@ -739,20 +742,25 @@ void InlineLoginHandlerImpl::FinishCompleteLogin(
|
| }
|
| }
|
|
|
| - signin_metrics::Source source = signin::GetSourceForPromoURL(params.url);
|
| + signin_metrics::AccessPoint access_point =
|
| + signin::GetAccessPointForPromoURL(params.url);
|
| + signin_metrics::Reason reason =
|
| + signin::GetSigninReasonForPromoURL(params.url);
|
| LogHistogramValue(signin_metrics::HISTOGRAM_ACCEPTED);
|
| bool switch_to_advanced =
|
| - params.choose_what_to_sync && (source != signin_metrics::SOURCE_SETTINGS);
|
| + params.choose_what_to_sync &&
|
| + (access_point != signin_metrics::ACCESS_POINT_SETTINGS);
|
| LogHistogramValue(
|
| switch_to_advanced ? signin_metrics::HISTOGRAM_WITH_ADVANCED :
|
| signin_metrics::HISTOGRAM_WITH_DEFAULTS);
|
|
|
| CanOfferFor can_offer_for = CAN_OFFER_FOR_ALL;
|
| - switch (source) {
|
| - case signin_metrics::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT:
|
| + switch (reason) {
|
| + case signin_metrics::REASON_ADD_SECONDARY_ACCOUNT:
|
| can_offer_for = CAN_OFFER_FOR_SECONDARY_ACCOUNT;
|
| break;
|
| - case signin_metrics::SOURCE_REAUTH: {
|
| + case signin_metrics::REASON_REAUTHENTICATION:
|
| + case signin_metrics::REASON_UNLOCK: {
|
| std::string primary_username =
|
| SigninManagerFactory::GetForProfile(profile)
|
| ->GetAuthenticatedAccountInfo()
|
| @@ -848,11 +856,12 @@ void InlineLoginHandlerImpl::SyncStarterCallback(
|
| }
|
|
|
| const GURL& current_url = contents->GetLastCommittedURL();
|
| - signin_metrics::Source source = signin::GetSourceForPromoURL(current_url);
|
| + signin_metrics::AccessPoint access_point =
|
| + signin::GetAccessPointForPromoURL(current_url);
|
| bool auto_close = signin::IsAutoCloseEnabledInURL(current_url);
|
|
|
| if (result == OneClickSigninSyncStarter::SYNC_SETUP_FAILURE) {
|
| - RedirectToNtpOrAppsPage(contents, source);
|
| + RedirectToNtpOrAppsPage(contents, access_point);
|
| } else if (auto_close) {
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| FROM_HERE,
|
| @@ -860,7 +869,7 @@ void InlineLoginHandlerImpl::SyncStarterCallback(
|
| weak_factory_.GetWeakPtr(),
|
| signin::ShouldShowAccountManagement(current_url)));
|
| } else {
|
| - RedirectToNtpOrAppsPageIfNecessary(contents, source);
|
| + RedirectToNtpOrAppsPageIfNecessary(contents, access_point);
|
| }
|
| }
|
|
|
| @@ -879,8 +888,9 @@ void InlineLoginHandlerImpl::CloseTab(bool show_account_management) {
|
|
|
| if (show_account_management) {
|
| browser->window()->ShowAvatarBubbleFromAvatarButton(
|
| - BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT,
|
| - signin::ManageAccountsParams());
|
| + BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT,
|
| + signin::ManageAccountsParams(),
|
| + signin_metrics::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN);
|
| }
|
| }
|
| }
|
|
|