| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/inline_login_ui.h" | 5 #include "chrome/browser/ui/webui/inline_login_ui.h" |
| 6 | 6 |
| 7 #include "base/atomic_sequence_num.h" | 7 #include "base/atomic_sequence_num.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 sync_service && sync_service->HasSyncSetupCompleted()) ? | 293 sync_service && sync_service->HasSyncSetupCompleted()) ? |
| 294 OneClickSigninSyncStarter::SHOW_SETTINGS_WITHOUT_CONFIGURE : | 294 OneClickSigninSyncStarter::SHOW_SETTINGS_WITHOUT_CONFIGURE : |
| 295 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST : | 295 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST : |
| 296 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS; | 296 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS; |
| 297 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required = | 297 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required = |
| 298 source == signin::SOURCE_SETTINGS || | 298 source == signin::SOURCE_SETTINGS || |
| 299 source == signin::SOURCE_WEBSTORE_INSTALL || | 299 source == signin::SOURCE_WEBSTORE_INSTALL || |
| 300 choose_what_to_sync_? | 300 choose_what_to_sync_? |
| 301 OneClickSigninSyncStarter::NO_CONFIRMATION : | 301 OneClickSigninSyncStarter::NO_CONFIRMATION : |
| 302 OneClickSigninSyncStarter::CONFIRM_AFTER_SIGNIN; | 302 OneClickSigninSyncStarter::CONFIRM_AFTER_SIGNIN; |
| 303 // Call OneClickSigninSyncStarter to exchange oauth code for tokens. | 303 OneClickSigninSyncStarter::Callback sync_callback = base::Bind( |
| 304 // OneClickSigninSyncStarter will delete itself once the job is done. | 304 &InlineLoginUIHandler::SyncStarterCallback, |
| 305 new OneClickSigninSyncStarter( | 305 weak_factory_.GetWeakPtr()); |
| 306 profile_, NULL, "" /* session_index, not used */, | 306 |
| 307 email_, password_, oauth_code, | 307 bool cross_account_error_handled = |
| 308 start_mode, | 308 OneClickSigninHelper::HandleCrossAccountError( |
| 309 contents, | 309 contents, "" /* session_index, not used */, |
| 310 confirmation_required, | 310 email_, password_, oauth_code, |
| 311 base::Bind(&InlineLoginUIHandler::SyncStarterCallback, | 311 OneClickSigninHelper::AUTO_ACCEPT_EXPLICIT, |
| 312 weak_factory_.GetWeakPtr())); | 312 source, start_mode, sync_callback); |
| 313 |
| 314 if (!cross_account_error_handled) { |
| 315 // Call OneClickSigninSyncStarter to exchange oauth code for tokens. |
| 316 // OneClickSigninSyncStarter will delete itself once the job is done. |
| 317 new OneClickSigninSyncStarter( |
| 318 profile_, NULL, "" /* session_index, not used */, |
| 319 email_, password_, oauth_code, |
| 320 start_mode, |
| 321 contents, |
| 322 confirmation_required, |
| 323 sync_callback); |
| 324 } |
| 313 } | 325 } |
| 314 | 326 |
| 315 email_.clear(); | 327 email_.clear(); |
| 316 password_.clear(); | 328 password_.clear(); |
| 317 web_ui()->CallJavascriptFunction("inline.login.closeDialog"); | 329 web_ui()->CallJavascriptFunction("inline.login.closeDialog"); |
| 318 #endif // OS_CHROMEOS | 330 #endif // OS_CHROMEOS |
| 319 } | 331 } |
| 320 | 332 |
| 321 // GaiaAuthConsumer override. | 333 // GaiaAuthConsumer override. |
| 322 virtual void OnClientOAuthCodeFailure(const GoogleServiceAuthError& error) | 334 virtual void OnClientOAuthCodeFailure(const GoogleServiceAuthError& error) |
| (...skipping 17 matching lines...) Expand all Loading... |
| 340 if (browser) | 352 if (browser) |
| 341 OneClickSigninHelper::ShowSigninErrorBubble(browser, error_msg); | 353 OneClickSigninHelper::ShowSigninErrorBubble(browser, error_msg); |
| 342 | 354 |
| 343 email_.clear(); | 355 email_.clear(); |
| 344 password_.clear(); | 356 password_.clear(); |
| 345 } | 357 } |
| 346 | 358 |
| 347 void SyncStarterCallback(OneClickSigninSyncStarter::SyncSetupResult result) { | 359 void SyncStarterCallback(OneClickSigninSyncStarter::SyncSetupResult result) { |
| 348 content::WebContents* contents = web_ui()->GetWebContents(); | 360 content::WebContents* contents = web_ui()->GetWebContents(); |
| 349 const GURL& current_url = contents->GetURL(); | 361 const GURL& current_url = contents->GetURL(); |
| 350 bool auto_close = signin::IsAutoCloseEnabledInURL(current_url); | 362 |
| 351 signin::Source source = signin::GetSourceForPromoURL(current_url); | 363 if (signin::IsAutoCloseEnabledInURL(current_url)) { |
| 352 if (auto_close) { | |
| 353 base::MessageLoop::current()->PostTask( | 364 base::MessageLoop::current()->PostTask( |
| 354 FROM_HERE, | 365 FROM_HERE, |
| 355 base::Bind( | 366 base::Bind( |
| 356 &InlineLoginUIHandler::CloseTab, weak_factory_.GetWeakPtr())); | 367 &InlineLoginUIHandler::CloseTab, weak_factory_.GetWeakPtr())); |
| 357 return; | 368 } else { |
| 369 signin::Source source = signin::GetSourceForPromoURL(current_url); |
| 370 DCHECK(source != signin::SOURCE_UNKNOWN); |
| 371 OneClickSigninHelper::RedirectToNtpOrAppsPageIfNecessary( |
| 372 contents, source); |
| 358 } | 373 } |
| 359 | |
| 360 OneClickSigninHelper::RedirectToNtpOrAppsPageIfNecessary(contents, source); | |
| 361 } | 374 } |
| 362 | 375 |
| 363 void CloseTab() { | 376 void CloseTab() { |
| 364 content::WebContents* tab = web_ui()->GetWebContents(); | 377 content::WebContents* tab = web_ui()->GetWebContents(); |
| 365 Browser* browser = chrome::FindBrowserWithWebContents(tab); | 378 Browser* browser = chrome::FindBrowserWithWebContents(tab); |
| 366 if (browser) { | 379 if (browser) { |
| 367 TabStripModel* tab_strip_model = browser->tab_strip_model(); | 380 TabStripModel* tab_strip_model = browser->tab_strip_model(); |
| 368 if (tab_strip_model) { | 381 if (tab_strip_model) { |
| 369 int index = tab_strip_model->GetIndexOfWebContents(tab); | 382 int index = tab_strip_model->GetIndexOfWebContents(tab); |
| 370 if (index != TabStripModel::kNoTab) { | 383 if (index != TabStripModel::kNoTab) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 401 content::WebUIDataSource::Add(profile, CreateWebUIDataSource()); | 414 content::WebUIDataSource::Add(profile, CreateWebUIDataSource()); |
| 402 | 415 |
| 403 web_ui->AddMessageHandler(new InlineLoginUIHandler(profile)); | 416 web_ui->AddMessageHandler(new InlineLoginUIHandler(profile)); |
| 404 // Required for intercepting extension function calls when the page is loaded | 417 // Required for intercepting extension function calls when the page is loaded |
| 405 // in a bubble (not a full tab, thus tab helpers are not registered | 418 // in a bubble (not a full tab, thus tab helpers are not registered |
| 406 // automatically). | 419 // automatically). |
| 407 extensions::TabHelper::CreateForWebContents(web_ui->GetWebContents()); | 420 extensions::TabHelper::CreateForWebContents(web_ui->GetWebContents()); |
| 408 } | 421 } |
| 409 | 422 |
| 410 InlineLoginUI::~InlineLoginUI() {} | 423 InlineLoginUI::~InlineLoginUI() {} |
| OLD | NEW |