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..350905e92a3fe2876c84266882eec3ab55911204 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,10 @@ 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::AccessPoint::ACCESS_POINT_APPS_PAGE_LINK |
+ ? chrome::kChromeUIAppsURL |
+ : chrome::kChromeUINewTabURL); |
content::OpenURLParams params(url, |
content::Referrer(), |
CURRENT_TAB, |
@@ -93,10 +95,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::AccessPoint::ACCESS_POINT_SETTINGS) |
+ RedirectToNtpOrAppsPage(contents, access_point); |
} |
class ConfirmEmailDialogDelegate : public TabModalConfirmDialogDelegate { |
@@ -272,21 +275,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::REASON_REAUTHENTICATION || |
+ reason == signin_metrics::Reason::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::REASON_REAUTHENTICATION || |
+ reason == signin_metrics::Reason::REASON_UNLOCK || |
+ reason == signin_metrics::Reason::REASON_ADD_SECONDARY_ACCOUNT) { |
ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)-> |
UpdateCredentials(account_id, result.refresh_token); |
@@ -299,8 +306,10 @@ void InlineSigninHelper::OnClientOAuthSuccess(const ClientOAuthResult& result) { |
signin::ShouldShowAccountManagement(current_url_))); |
} |
- if (source == signin_metrics::SOURCE_REAUTH) |
+ if (reason == signin_metrics::Reason::REASON_REAUTHENTICATION || |
+ reason == signin_metrics::Reason::REASON_UNLOCK) { |
signin_manager->MergeSigninCredentialIntoCookieJar(); |
+ } |
} else { |
ProfileSyncService* sync_service = |
ProfileSyncServiceFactory::GetForProfile(profile_); |
@@ -309,7 +318,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::AccessPoint::ACCESS_POINT_SETTINGS || |
+ choose_what_to_sync_) { |
bool show_settings_without_configure = |
error_controller->HasError() && |
sync_service && |
@@ -324,14 +334,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 +349,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 +384,6 @@ bool InlineSigninHelper::HandleCrossAccountError( |
base::Unretained(this), |
web_contents, |
refresh_token, |
- source, |
confirmation_required, |
start_mode)); |
return true; |
@@ -389,7 +392,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 +407,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 +561,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 +579,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::REASON_ADD_SECONDARY_ACCOUNT: |
flow = "addaccount"; |
break; |
- case signin_metrics::SOURCE_REAUTH: |
+ case signin_metrics::Reason::REASON_REAUTHENTICATION: |
+ case signin_metrics::Reason::REASON_UNLOCK: |
flow = "reauth"; |
break; |
default: |
@@ -739,20 +743,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::AccessPoint::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::REASON_ADD_SECONDARY_ACCOUNT: |
can_offer_for = CAN_OFFER_FOR_SECONDARY_ACCOUNT; |
break; |
- case signin_metrics::SOURCE_REAUTH: { |
+ case signin_metrics::Reason::REASON_REAUTHENTICATION: |
+ case signin_metrics::Reason::REASON_UNLOCK: { |
std::string primary_username = |
SigninManagerFactory::GetForProfile(profile) |
->GetAuthenticatedAccountInfo() |
@@ -848,11 +857,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 +870,7 @@ void InlineLoginHandlerImpl::SyncStarterCallback( |
weak_factory_.GetWeakPtr(), |
signin::ShouldShowAccountManagement(current_url))); |
} else { |
- RedirectToNtpOrAppsPageIfNecessary(contents, source); |
+ RedirectToNtpOrAppsPageIfNecessary(contents, access_point); |
} |
} |
@@ -879,8 +889,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::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN); |
} |
} |
} |