Index: chrome/browser/ui/webui/inline_login_ui.cc |
diff --git a/chrome/browser/ui/webui/inline_login_ui.cc b/chrome/browser/ui/webui/inline_login_ui.cc |
index d973be72cee0154e10236815dbeb48bad968adf6..afa1bf6977f0ff9fba8b3e27fcb2c301674c7d8b 100644 |
--- a/chrome/browser/ui/webui/inline_login_ui.cc |
+++ b/chrome/browser/ui/webui/inline_login_ui.cc |
@@ -25,6 +25,7 @@ |
#include "chrome/browser/sync/profile_sync_service.h" |
#include "chrome/browser/sync/profile_sync_service_factory.h" |
#include "chrome/browser/ui/browser_finder.h" |
+#include "chrome/browser/ui/sync/one_click_signin_helper.h" |
#include "chrome/browser/ui/sync/one_click_signin_sync_starter.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/common/chrome_switches.h" |
@@ -90,10 +91,10 @@ class InlineLoginUIOAuth2Delegate |
private: |
content::WebUI* web_ui_; |
}; |
-#elif !defined(OS_ANDROID) |
+#else |
// Global SequenceNumber used for generating unique webview partition IDs. |
base::StaticAtomicSequenceNumber next_partition_id; |
-#endif |
+#endif // OS_CHROMEOS |
class InlineLoginUIHandler : public content::WebUIMessageHandler { |
public: |
@@ -136,7 +137,7 @@ class InlineLoginUIHandler : public content::WebUIMessageHandler { |
enable_inline ? kInlineAuthMode : kDefaultAuthMode); |
// Set parameters specific for inline signin flow. |
-#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) |
+#if !defined(OS_CHROMEOS) |
if (enable_inline) { |
// Set continueUrl param for the inline sign in flow. It should point to |
// the oauth2 auth code URL so that later we can grab the auth code from |
@@ -176,7 +177,7 @@ class InlineLoginUIHandler : public content::WebUIMessageHandler { |
"gaia-webview-" + base::IntToString(next_partition_id.GetNext()); |
params.SetString("partitionId", partition_id_); |
} |
-#endif |
+#endif // OS_CHROMEOS |
web_ui()->CallJavascriptFunction("inline.login.loadAuthExtension", params); |
} |
@@ -194,7 +195,7 @@ class InlineLoginUIHandler : public content::WebUIMessageHandler { |
oauth2_token_fetcher_.reset(new chromeos::OAuth2TokenFetcher( |
oauth2_delegate_.get(), profile_->GetRequestContext())); |
oauth2_token_fetcher_->StartExchangeFromCookies(); |
-#elif !defined(OS_ANDROID) |
+#else |
const base::DictionaryValue* dict = NULL; |
string16 email; |
string16 password; |
@@ -207,6 +208,18 @@ class InlineLoginUIHandler : public content::WebUIMessageHandler { |
dict->GetBoolean("chooseWhatToSync", &choose_what_to_sync_); |
content::WebContents* web_contents = web_ui()->GetWebContents(); |
+ std::string error_msg; |
+ OneClickSigninHelper::CanOffer( |
+ web_contents, OneClickSigninHelper::CAN_OFFER_FOR_ALL, |
+ UTF16ToASCII(email), &error_msg); |
+ if (!error_msg.empty()) { |
+ SyncStarterCallback( |
+ OneClickSigninSyncStarter::SYNC_SETUP_FAILURE); |
+ Browser* browser = chrome::FindBrowserWithWebContents(web_contents); |
+ OneClickSigninHelper::ShowSigninErrorBubble(browser, error_msg); |
+ return; |
+ } |
+ |
content::StoragePartition* partition = |
content::BrowserContext::GetStoragePartitionForSite( |
web_contents->GetBrowserContext(), |
@@ -219,7 +232,7 @@ class InlineLoginUIHandler : public content::WebUIMessageHandler { |
GURL(GaiaUrls::GetInstance()->client_login_to_oauth2_url()), |
base::Bind(&InlineLoginUIHandler::OnGaiaCookiesFetched, |
weak_factory_.GetWeakPtr(), email, password)); |
-#endif |
+#endif // OS_CHROMEOS |
} |
void OnGaiaCookiesFetched( |
@@ -285,21 +298,10 @@ class InlineLoginUIHandler : public content::WebUIMessageHandler { |
FROM_HERE, |
base::Bind( |
&InlineLoginUIHandler::CloseTab, weak_factory_.GetWeakPtr())); |
- } else if (source != signin::SOURCE_UNKNOWN && |
- source != signin::SOURCE_SETTINGS && |
- source != signin::SOURCE_WEBSTORE_INSTALL) { |
- // Redirect to NTP/Apps page and display a confirmation bubble. |
- // TODO(guohui): should redirect to the given continue url for webstore |
- // install flows. |
- GURL url(source == signin::SOURCE_APPS_PAGE_LINK ? |
- chrome::kChromeUIAppsURL : chrome::kChromeUINewTabURL); |
- content::OpenURLParams params(url, |
- content::Referrer(), |
- CURRENT_TAB, |
- content::PAGE_TRANSITION_AUTO_TOPLEVEL, |
- false); |
- contents->OpenURL(params); |
+ return; |
} |
+ |
+ OneClickSigninHelper::RedirectToNtpOrAppsPageIfNecessary(contents, source); |
} |
void CloseTab() { |