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

Unified Diff: chrome/browser/ui/webui/inline_login_ui.cc

Issue 136553003: Cleanup: remove unused inline login file (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
deleted file mode 100644
index f28050f044a7690424ca84fe828904a7ea9b00ba..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/inline_login_ui.cc
+++ /dev/null
@@ -1,417 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/inline_login_ui.h"
-
-#include "base/atomic_sequence_num.h"
-#include "base/bind.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/values.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/extensions/tab_helper.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/signin/profile_oauth2_token_service.h"
-#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
-#include "chrome/browser/signin/signin_global_error.h"
-#include "chrome/browser/signin/signin_names_io_thread.h"
-#include "chrome/browser/signin/signin_oauth_helper.h"
-#include "chrome/browser/signin/signin_promo.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"
-#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/url_constants.h"
-#include "content/public/browser/storage_partition.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_ui.h"
-#include "content/public/browser/web_ui_data_source.h"
-#include "content/public/browser/web_ui_message_handler.h"
-#include "google_apis/gaia/gaia_auth_consumer.h"
-#include "google_apis/gaia/gaia_auth_fetcher.h"
-#include "google_apis/gaia/gaia_constants.h"
-#include "google_apis/gaia/gaia_switches.h"
-#include "google_apis/gaia/gaia_urls.h"
-#include "grit/browser_resources.h"
-#include "net/base/escape.h"
-#include "net/base/url_util.h"
-
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/login/oauth2_token_fetcher.h"
-#endif
-
-namespace {
-
-content::WebUIDataSource* CreateWebUIDataSource() {
- content::WebUIDataSource* source =
- content::WebUIDataSource::Create(chrome::kChromeUIChromeSigninHost);
- source->SetUseJsonJSFormatV2();
- source->SetJsonPath("strings.js");
-
- source->SetDefaultResource(IDR_INLINE_LOGIN_HTML);
- source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
- source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
- return source;
-};
-
-#if defined(OS_CHROMEOS)
-class InlineLoginUIOAuth2Delegate
- : public chromeos::OAuth2TokenFetcher::Delegate {
- public:
- explicit InlineLoginUIOAuth2Delegate(content::WebUI* web_ui)
- : web_ui_(web_ui) {}
- virtual ~InlineLoginUIOAuth2Delegate() {}
-
- // OAuth2TokenFetcher::Delegate overrides:
- virtual void OnOAuth2TokensAvailable(
- const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens) OVERRIDE {
- // Closes sign-in dialog before update token service. Token service update
- // might trigger a permission dialog and if this dialog does not close,
- // a DCHECK would be triggered because attempting to activate a window
- // while there is a modal dialog.
- web_ui_->CallJavascriptFunction("inline.login.closeDialog");
-
- Profile* profile = Profile::FromWebUI(web_ui_);
- ProfileOAuth2TokenService* token_service =
- ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
- token_service->UpdateCredentials(token_service->GetPrimaryAccountId(),
- oauth2_tokens.refresh_token);
- }
-
- virtual void OnOAuth2TokensFetchFailed() OVERRIDE {
- LOG(ERROR) << "Failed to fetch oauth2 token with inline login.";
- web_ui_->CallJavascriptFunction("inline.login.handleOAuth2TokenFailure");
- }
-
- private:
- content::WebUI* web_ui_;
-};
-#else
-// Global SequenceNumber used for generating unique webview partition IDs.
-base::StaticAtomicSequenceNumber next_partition_id;
-#endif // OS_CHROMEOS
-
-class InlineLoginUIHandler : public GaiaAuthConsumer,
- public content::WebUIMessageHandler {
- public:
- explicit InlineLoginUIHandler(Profile* profile)
- : profile_(profile), weak_factory_(this), choose_what_to_sync_(false),
- partition_id_("") {}
- virtual ~InlineLoginUIHandler() {}
-
- // content::WebUIMessageHandler overrides:
- virtual void RegisterMessages() OVERRIDE {
- web_ui()->RegisterMessageCallback("initialize",
- base::Bind(&InlineLoginUIHandler::HandleInitialize,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback("completeLogin",
- base::Bind(&InlineLoginUIHandler::HandleCompleteLogin,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback("switchToFullTab",
- base::Bind(&InlineLoginUIHandler::HandleSwitchToFullTab,
- base::Unretained(this)));
- }
-
- private:
- // Enum for gaia auth mode, must match AuthMode defined in
- // chrome/browser/resources/gaia_auth_host/gaia_auth_host.js.
- enum AuthMode {
- kDefaultAuthMode = 0,
- kOfflineAuthMode = 1,
- kInlineAuthMode = 2
- };
-
- void LoadAuthExtension() {
- base::DictionaryValue params;
-
- const std::string& app_locale = g_browser_process->GetApplicationLocale();
- params.SetString("hl", app_locale);
-
- GaiaUrls* gaiaUrls = GaiaUrls::GetInstance();
- params.SetString("gaiaUrl", gaiaUrls->gaia_url().spec());
-
-
-#if defined(OS_CHROMEOS)
- params.SetInteger("authMode", kDefaultAuthMode);
-#else
- params.SetInteger("authMode", kInlineAuthMode);
-
- const GURL& current_url = web_ui()->GetWebContents()->GetURL();
- signin::Source source = signin::GetSourceForPromoURL(current_url);
- DCHECK(source != signin::SOURCE_UNKNOWN);
- if (source == signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT ||
- source == signin::SOURCE_AVATAR_BUBBLE_SIGN_IN) {
- // Drop the leading slash in the path.
- params.SetString("gaiaPath",
- gaiaUrls->embedded_signin_url().path().substr(1));
- }
-
- params.SetString("service", "chromiumsync");
- params.SetString("continueUrl",
- signin::GetLandingURL("source", static_cast<int>(source)).spec());
-
- std::string email;
- net::GetValueForKeyInQuery(current_url, "Email", &email);
- if (!email.empty())
- params.SetString("email", email);
-
- std::string frame_url;
- net::GetValueForKeyInQuery(current_url, "frameUrl", &frame_url);
- if (!frame_url.empty())
- params.SetString("frameUrl", frame_url);
-
- std::string is_constrained;
- net::GetValueForKeyInQuery(current_url, "constrained", &is_constrained);
- if (!is_constrained.empty())
- params.SetString("constrained", is_constrained);
-
- net::GetValueForKeyInQuery(current_url, "partitionId", &partition_id_);
- if (partition_id_.empty()) {
- partition_id_ =
- "gaia-webview-" + base::IntToString(next_partition_id.GetNext());
- }
- params.SetString("partitionId", partition_id_);
-#endif // OS_CHROMEOS
-
- web_ui()->CallJavascriptFunction("inline.login.loadAuthExtension", params);
- }
-
- // JS callback:
- void HandleInitialize(const base::ListValue* args) {
- LoadAuthExtension();
- }
-
- // JS callback:
- void HandleSwitchToFullTab(const base::ListValue* args) {
- base::string16 url_str;
- CHECK(args->GetString(0, &url_str));
-
- content::WebContents* web_contents = web_ui()->GetWebContents();
- GURL main_frame_url(web_contents->GetURL());
- main_frame_url = net::AppendOrReplaceQueryParameter(
- main_frame_url, "frameUrl", UTF16ToASCII(url_str));
- main_frame_url = net::AppendOrReplaceQueryParameter(
- main_frame_url, "partitionId", partition_id_);
- chrome::NavigateParams params(
- profile_,
- net::AppendOrReplaceQueryParameter(main_frame_url, "constrained", "0"),
- content::PAGE_TRANSITION_AUTO_TOPLEVEL);
- chrome::Navigate(&params);
-
- web_ui()->CallJavascriptFunction("inline.login.closeDialog");
- }
-
- void HandleCompleteLogin(const base::ListValue* args) {
- // TODO(guohui, xiyuan): we should investigate if it is possible to unify
- // the signin-with-cookies flow across ChromeOS and Chrome.
- DCHECK(email_.empty() && password_.empty());
-
-#if defined(OS_CHROMEOS)
- oauth2_delegate_.reset(new InlineLoginUIOAuth2Delegate(web_ui()));
- oauth2_token_fetcher_.reset(new chromeos::OAuth2TokenFetcher(
- oauth2_delegate_.get(), profile_->GetRequestContext()));
- oauth2_token_fetcher_->StartExchangeFromCookies();
-#else
- const base::DictionaryValue* dict = NULL;
- base::string16 email;
- if (!args->GetDictionary(0, &dict) || !dict ||
- !dict->GetString("email", &email)) {
- // User cancelled the signin by clicking 'skip for now'.
- bool skip_for_now = false;
- DCHECK(dict->GetBoolean("skipForNow", &skip_for_now) && skip_for_now);
-
- signin::SetUserSkippedPromo(profile_);
- SyncStarterCallback(OneClickSigninSyncStarter::SYNC_SETUP_FAILURE);
- return;
- }
-
- email_ = UTF16ToASCII(email);
- base::string16 password;
- dict->GetString("password", &password);
- password_ = UTF16ToASCII(password);
-
- dict->GetBoolean("chooseWhatToSync", &choose_what_to_sync_);
-
- content::WebContents* contents = web_ui()->GetWebContents();
- signin::Source source = signin::GetSourceForPromoURL(contents->GetURL());
- OneClickSigninHelper::CanOfferFor can_offer =
- source == signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT ?
- OneClickSigninHelper::CAN_OFFER_FOR_SECONDARY_ACCOUNT :
- OneClickSigninHelper::CAN_OFFER_FOR_ALL;
- std::string error_msg;
- OneClickSigninHelper::CanOffer(
- contents, can_offer, email_, &error_msg);
- if (!error_msg.empty()) {
- HandleLoginError(error_msg);
- return;
- }
-
- content::StoragePartition* partition =
- content::BrowserContext::GetStoragePartitionForSite(
- contents->GetBrowserContext(),
- GURL("chrome-guest://mfffpogegjflfpflabcdkioaeobkgjik/?" +
- partition_id_));
-
- auth_fetcher_.reset(new GaiaAuthFetcher(this,
- GaiaConstants::kChromeSource,
- partition->GetURLRequestContext()));
- auth_fetcher_->StartCookieForOAuthCodeExchange("0");
-#endif // OS_CHROMEOS
- }
-
- // GaiaAuthConsumer override.
- virtual void OnClientOAuthCodeSuccess(
- const std::string& oauth_code) OVERRIDE {
-#if !defined(OS_CHROMEOS)
- DCHECK(!oauth_code.empty());
-
- content::WebContents* contents = web_ui()->GetWebContents();
- ProfileSyncService* sync_service =
- ProfileSyncServiceFactory::GetForProfile(profile_);
- const GURL& current_url = contents->GetURL();
- signin::Source source = signin::GetSourceForPromoURL(current_url);
-
- if (source == signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT) {
- // SigninOAuthHelper will delete itself.
- SigninOAuthHelper* helper = new SigninOAuthHelper(profile_);
- helper->StartAddingAccount(oauth_code);
- } else {
- OneClickSigninSyncStarter::StartSyncMode start_mode =
- source == signin::SOURCE_SETTINGS || choose_what_to_sync_ ?
- (SigninGlobalError::GetForProfile(profile_)->HasMenuItem() &&
- sync_service && sync_service->HasSyncSetupCompleted()) ?
- OneClickSigninSyncStarter::SHOW_SETTINGS_WITHOUT_CONFIGURE :
- OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST :
- OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS;
- OneClickSigninSyncStarter::ConfirmationRequired confirmation_required =
- source == signin::SOURCE_SETTINGS ||
- source == signin::SOURCE_WEBSTORE_INSTALL ||
- choose_what_to_sync_?
- OneClickSigninSyncStarter::NO_CONFIRMATION :
- OneClickSigninSyncStarter::CONFIRM_AFTER_SIGNIN;
- OneClickSigninSyncStarter::Callback sync_callback = base::Bind(
- &InlineLoginUIHandler::SyncStarterCallback,
- weak_factory_.GetWeakPtr());
-
- bool cross_account_error_handled =
- OneClickSigninHelper::HandleCrossAccountError(
- contents, "" /* session_index, not used */,
- email_, password_, oauth_code,
- OneClickSigninHelper::AUTO_ACCEPT_EXPLICIT,
- source, start_mode, sync_callback);
-
- if (!cross_account_error_handled) {
- // Call OneClickSigninSyncStarter to exchange oauth code for tokens.
- // OneClickSigninSyncStarter will delete itself once the job is done.
- new OneClickSigninSyncStarter(
- profile_, NULL, "" /* session_index, not used */,
- email_, password_, oauth_code,
- start_mode,
- contents,
- confirmation_required,
- sync_callback);
- }
- }
-
- email_.clear();
- password_.clear();
- web_ui()->CallJavascriptFunction("inline.login.closeDialog");
-#endif // OS_CHROMEOS
- }
-
- // GaiaAuthConsumer override.
- virtual void OnClientOAuthCodeFailure(const GoogleServiceAuthError& error)
- OVERRIDE {
-#if !defined(OS_CHROMEOS)
- LOG(ERROR) << "InlineLoginUI::OnClientOAuthCodeFailure";
- HandleLoginError(error.ToString());
-#endif // OS_CHROMEOS
- }
-
- void HandleLoginError(const std::string& error_msg) {
- SyncStarterCallback(
- OneClickSigninSyncStarter::SYNC_SETUP_FAILURE);
-
- Browser* browser = chrome::FindBrowserWithWebContents(
- web_ui()->GetWebContents());
- if (!browser) {
- browser = chrome::FindLastActiveWithProfile(
- profile_, chrome::GetActiveDesktop());
- }
- if (browser)
- OneClickSigninHelper::ShowSigninErrorBubble(browser, error_msg);
-
- email_.clear();
- password_.clear();
- }
-
- void SyncStarterCallback(OneClickSigninSyncStarter::SyncSetupResult result) {
- content::WebContents* contents = web_ui()->GetWebContents();
- const GURL& current_url = contents->GetURL();
-
- if (signin::IsAutoCloseEnabledInURL(current_url)) {
- base::MessageLoop::current()->PostTask(
- FROM_HERE,
- base::Bind(
- &InlineLoginUIHandler::CloseTab, weak_factory_.GetWeakPtr()));
- } else {
- signin::Source source = signin::GetSourceForPromoURL(current_url);
- DCHECK(source != signin::SOURCE_UNKNOWN);
- OneClickSigninHelper::RedirectToNtpOrAppsPageIfNecessary(
- contents, source);
- }
- }
-
- void CloseTab() {
- content::WebContents* tab = web_ui()->GetWebContents();
- Browser* browser = chrome::FindBrowserWithWebContents(tab);
- if (browser) {
- TabStripModel* tab_strip_model = browser->tab_strip_model();
- if (tab_strip_model) {
- int index = tab_strip_model->GetIndexOfWebContents(tab);
- if (index != TabStripModel::kNoTab) {
- tab_strip_model->ExecuteContextMenuCommand(
- index, TabStripModel::CommandCloseTab);
- }
- }
- }
- }
-
- Profile* profile_;
- base::WeakPtrFactory<InlineLoginUIHandler> weak_factory_;
- scoped_ptr<GaiaAuthFetcher> auth_fetcher_;
- std::string email_;
- std::string password_;
- bool choose_what_to_sync_;
- // Partition id for the gaia webview;
- std::string partition_id_;
-
-#if defined(OS_CHROMEOS)
- scoped_ptr<chromeos::OAuth2TokenFetcher> oauth2_token_fetcher_;
- scoped_ptr<InlineLoginUIOAuth2Delegate> oauth2_delegate_;
-#endif
-
- DISALLOW_COPY_AND_ASSIGN(InlineLoginUIHandler);
-};
-
-} // namespace
-
-InlineLoginUI::InlineLoginUI(content::WebUI* web_ui)
- : WebDialogUI(web_ui),
- auth_extension_(Profile::FromWebUI(web_ui)) {
- Profile* profile = Profile::FromWebUI(web_ui);
- content::WebUIDataSource::Add(profile, CreateWebUIDataSource());
-
- web_ui->AddMessageHandler(new InlineLoginUIHandler(profile));
- // Required for intercepting extension function calls when the page is loaded
- // in a bubble (not a full tab, thus tab helpers are not registered
- // automatically).
- extensions::TabHelper::CreateForWebContents(web_ui->GetWebContents());
-}
-
-InlineLoginUI::~InlineLoginUI() {}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698