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

Unified Diff: chrome/browser/ui/webui/signin/inline_login_handler_impl.cc

Issue 300523003: Fix some problems with new reauth: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/signin/inline_login_handler.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 ac7717e6c5b9a35d713d061238a320003490954f..a3d600e474a264d2e4b073d581ca1afeaad22ad5 100644
--- a/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
+++ b/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/about_signin_internals_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
+#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -106,7 +107,8 @@ void InlineSigninHelper::OnSigninOAuthInformationAvailable(
about_signin_internals->OnRefreshTokenReceived("Successful");
signin::Source source = signin::GetSourceForPromoURL(current_url_);
- if (source == signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT) {
+ if (source == signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT ||
+ source == signin::SOURCE_REAUTH) {
ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)->
UpdateCredentials(email, refresh_token);
@@ -137,18 +139,15 @@ void InlineSigninHelper::OnSigninOAuthInformationAvailable(
choose_what_to_sync_ ?
OneClickSigninSyncStarter::NO_CONFIRMATION :
OneClickSigninSyncStarter::CONFIRM_AFTER_SIGNIN;
- bool start_signin = true;
- if (source != signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT) {
- start_signin = !OneClickSigninHelper::HandleCrossAccountError(
+ bool start_signin =
+ !OneClickSigninHelper::HandleCrossAccountError(
contents, "",
email, password_, refresh_token,
OneClickSigninHelper::AUTO_ACCEPT_EXPLICIT,
source, start_mode,
base::Bind(&InlineLoginHandlerImpl::SyncStarterCallback,
handler_));
- }
-
if (start_signin) {
// Call OneClickSigninSyncStarter to exchange oauth code for tokens.
// OneClickSigninSyncStarter will delete itself once the job is done.
@@ -252,9 +251,24 @@ void InlineLoginHandlerImpl::CompleteLogin(const base::ListValue* args) {
one_click_signin::HISTOGRAM_WITH_DEFAULTS);
OneClickSigninHelper::CanOfferFor can_offer_for =
- source == signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT ?
- OneClickSigninHelper::CAN_OFFER_FOR_SECONDARY_ACCOUNT :
OneClickSigninHelper::CAN_OFFER_FOR_ALL;
+ switch (source) {
+ case signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT:
+ can_offer_for = OneClickSigninHelper::CAN_OFFER_FOR_SECONDARY_ACCOUNT;
+ break;
+ case signin::SOURCE_REAUTH: {
+ std::string primary_username =
+ SigninManagerFactory::GetForProfile(
+ Profile::FromWebUI(web_ui()))->GetAuthenticatedUsername();
+ if (!gaia::AreEmailsSame(default_email, primary_username))
+ can_offer_for = OneClickSigninHelper::CAN_OFFER_FOR_SECONDARY_ACCOUNT;
+ break;
+ }
+ default:
+ // No need to change |can_offer_for|.
+ break;
+ }
+
std::string error_msg;
bool can_offer = OneClickSigninHelper::CanOffer(
contents, can_offer_for, email_, &error_msg);
« no previous file with comments | « chrome/browser/ui/webui/signin/inline_login_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698