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

Side by Side Diff: chrome/browser/ui/sync/one_click_signin_sync_starter.cc

Issue 1686833003: Remove HostDesktopType from profiles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@metro-mode-16
Patch Set: desktop linux and mac Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/sync/one_click_signin_sync_starter.h" 5 #include "chrome/browser/ui/sync/one_click_signin_sync_starter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 const std::string& refresh_token, 83 const std::string& refresh_token,
84 StartSyncMode start_mode, 84 StartSyncMode start_mode,
85 content::WebContents* web_contents, 85 content::WebContents* web_contents,
86 ConfirmationRequired confirmation_required, 86 ConfirmationRequired confirmation_required,
87 const GURL& current_url, 87 const GURL& current_url,
88 const GURL& continue_url, 88 const GURL& continue_url,
89 Callback sync_setup_completed_callback) 89 Callback sync_setup_completed_callback)
90 : content::WebContentsObserver(web_contents), 90 : content::WebContentsObserver(web_contents),
91 profile_(NULL), 91 profile_(NULL),
92 start_mode_(start_mode), 92 start_mode_(start_mode),
93 desktop_type_(chrome::HOST_DESKTOP_TYPE_NATIVE),
94 confirmation_required_(confirmation_required), 93 confirmation_required_(confirmation_required),
95 current_url_(current_url), 94 current_url_(current_url),
96 continue_url_(continue_url), 95 continue_url_(continue_url),
97 sync_setup_completed_callback_(sync_setup_completed_callback), 96 sync_setup_completed_callback_(sync_setup_completed_callback),
98 weak_pointer_factory_(this) { 97 weak_pointer_factory_(this) {
99 DCHECK(profile); 98 DCHECK(profile);
100 DCHECK(web_contents || continue_url.is_empty()); 99 DCHECK(web_contents || continue_url.is_empty());
101 BrowserList::AddObserver(this); 100 BrowserList::AddObserver(this);
102 Initialize(profile, browser); 101 Initialize(profile, browser);
103 102
(...skipping 20 matching lines...) Expand all
124 DCHECK(profile); 123 DCHECK(profile);
125 124
126 if (profile_) 125 if (profile_)
127 LoginUIServiceFactory::GetForProfile(profile_)->RemoveObserver(this); 126 LoginUIServiceFactory::GetForProfile(profile_)->RemoveObserver(this);
128 127
129 profile_ = profile; 128 profile_ = profile;
130 browser_ = browser; 129 browser_ = browser;
131 130
132 LoginUIServiceFactory::GetForProfile(profile_)->AddObserver(this); 131 LoginUIServiceFactory::GetForProfile(profile_)->AddObserver(this);
133 132
134 // Cache the parent desktop for the browser, so we can reuse that same
135 // desktop for any UI we want to display.
136 if (browser) {
137 desktop_type_ = browser->host_desktop_type();
138 } else {
139 desktop_type_ = chrome::GetActiveDesktop();
140 }
141
142 signin_tracker_ = SigninTrackerFactory::CreateForProfile(profile_, this); 133 signin_tracker_ = SigninTrackerFactory::CreateForProfile(profile_, this);
143 134
144 // Let the sync service know that setup is in progress so it doesn't start 135 // Let the sync service know that setup is in progress so it doesn't start
145 // syncing until the user has finished any configuration. 136 // syncing until the user has finished any configuration.
146 ProfileSyncService* profile_sync_service = GetProfileSyncService(); 137 ProfileSyncService* profile_sync_service = GetProfileSyncService();
147 if (profile_sync_service) 138 if (profile_sync_service)
148 profile_sync_service->SetSetupInProgress(true); 139 profile_sync_service->SetSetupInProgress(true);
149 140
150 // Make sure the syncing is requested, otherwise the SigninManager 141 // Make sure the syncing is requested, otherwise the SigninManager
151 // will not be able to complete successfully. 142 // will not be able to complete successfully.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 217
227 DVLOG(1) << "Policy registration succeeded: dm_token=" << dm_token; 218 DVLOG(1) << "Policy registration succeeded: dm_token=" << dm_token;
228 219
229 // Stash away a copy of our CloudPolicyClient (should not already have one). 220 // Stash away a copy of our CloudPolicyClient (should not already have one).
230 DCHECK(dm_token_.empty()); 221 DCHECK(dm_token_.empty());
231 DCHECK(client_id_.empty()); 222 DCHECK(client_id_.empty());
232 dm_token_ = dm_token; 223 dm_token_ = dm_token;
233 client_id_ = client_id; 224 client_id_ = client_id;
234 225
235 // Allow user to create a new profile before continuing with sign-in. 226 // Allow user to create a new profile before continuing with sign-in.
236 browser_ = EnsureBrowser(browser_, profile_, desktop_type_); 227 browser_ = EnsureBrowser(browser_, profile_);
237 content::WebContents* web_contents = 228 content::WebContents* web_contents =
238 browser_->tab_strip_model()->GetActiveWebContents(); 229 browser_->tab_strip_model()->GetActiveWebContents();
239 if (!web_contents) { 230 if (!web_contents) {
240 CancelSigninAndDelete(); 231 CancelSigninAndDelete();
241 return; 232 return;
242 } 233 }
243 234
244 content::RecordAction( 235 content::RecordAction(
245 base::UserMetricsAction("Signin_Show_EnterpriseAccountPrompt")); 236 base::UserMetricsAction("Signin_Show_EnterpriseAccountPrompt"));
246 TabDialogs::FromWebContents(web_contents)->ShowProfileSigninConfirmation( 237 TabDialogs::FromWebContents(web_contents)->ShowProfileSigninConfirmation(
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 DCHECK(!dm_token_.empty()); 271 DCHECK(!dm_token_.empty());
281 DCHECK(!client_id_.empty()); 272 DCHECK(!client_id_.empty());
282 // Create a new profile and have it call back when done so we can inject our 273 // Create a new profile and have it call back when done so we can inject our
283 // signin credentials. 274 // signin credentials.
284 size_t icon_index = g_browser_process->profile_manager()-> 275 size_t icon_index = g_browser_process->profile_manager()->
285 GetProfileInfoCache().ChooseAvatarIconIndexForNewProfile(); 276 GetProfileInfoCache().ChooseAvatarIconIndexForNewProfile();
286 ProfileManager::CreateMultiProfileAsync( 277 ProfileManager::CreateMultiProfileAsync(
287 base::UTF8ToUTF16(signin->GetUsernameForAuthInProgress()), 278 base::UTF8ToUTF16(signin->GetUsernameForAuthInProgress()),
288 profiles::GetDefaultAvatarIconUrl(icon_index), 279 profiles::GetDefaultAvatarIconUrl(icon_index),
289 base::Bind(&OneClickSigninSyncStarter::CompleteInitForNewProfile, 280 base::Bind(&OneClickSigninSyncStarter::CompleteInitForNewProfile,
290 weak_pointer_factory_.GetWeakPtr(), desktop_type_), 281 weak_pointer_factory_.GetWeakPtr()),
291 std::string()); 282 std::string());
292 } 283 }
293 284
294 void OneClickSigninSyncStarter::CompleteInitForNewProfile( 285 void OneClickSigninSyncStarter::CompleteInitForNewProfile(
295 chrome::HostDesktopType desktop_type,
296 Profile* new_profile, 286 Profile* new_profile,
297 Profile::CreateStatus status) { 287 Profile::CreateStatus status) {
298 DCHECK_NE(profile_, new_profile); 288 DCHECK_NE(profile_, new_profile);
299 289
300 // TODO(atwilson): On error, unregister the client to release the DMToken 290 // TODO(atwilson): On error, unregister the client to release the DMToken
301 // and surface a better error for the user. 291 // and surface a better error for the user.
302 switch (status) { 292 switch (status) {
303 case Profile::CREATE_STATUS_LOCAL_FAIL: { 293 case Profile::CREATE_STATUS_LOCAL_FAIL: {
304 NOTREACHED() << "Error creating new profile"; 294 NOTREACHED() << "Error creating new profile";
305 CancelSigninAndDelete(); 295 CancelSigninAndDelete();
(...skipping 30 matching lines...) Expand all
336 326
337 // Load policy for the just-created profile - once policy has finished 327 // Load policy for the just-created profile - once policy has finished
338 // loading the signin process will complete. 328 // loading the signin process will complete.
339 LoadPolicyWithCachedCredentials(); 329 LoadPolicyWithCachedCredentials();
340 330
341 // Open the profile's first window, after all initialization. 331 // Open the profile's first window, after all initialization.
342 profiles::FindOrCreateNewWindowForProfile( 332 profiles::FindOrCreateNewWindowForProfile(
343 new_profile, 333 new_profile,
344 chrome::startup::IS_PROCESS_STARTUP, 334 chrome::startup::IS_PROCESS_STARTUP,
345 chrome::startup::IS_FIRST_RUN, 335 chrome::startup::IS_FIRST_RUN,
346 desktop_type,
347 false); 336 false);
348 break; 337 break;
349 } 338 }
350 case Profile::CREATE_STATUS_REMOTE_FAIL: 339 case Profile::CREATE_STATUS_REMOTE_FAIL:
351 case Profile::CREATE_STATUS_CANCELED: 340 case Profile::CREATE_STATUS_CANCELED:
352 case Profile::MAX_CREATE_STATUS: { 341 case Profile::MAX_CREATE_STATUS: {
353 NOTREACHED() << "Invalid profile creation status"; 342 NOTREACHED() << "Invalid profile creation status";
354 CancelSigninAndDelete(); 343 CancelSigninAndDelete();
355 return; 344 return;
356 } 345 }
357 } 346 }
358 } 347 }
359 #endif 348 #endif
360 349
361 void OneClickSigninSyncStarter::CancelSigninAndDelete() { 350 void OneClickSigninSyncStarter::CancelSigninAndDelete() {
362 SigninManagerFactory::GetForProfile(profile_) 351 SigninManagerFactory::GetForProfile(profile_)
363 ->SignOut(signin_metrics::ABORT_SIGNIN, 352 ->SignOut(signin_metrics::ABORT_SIGNIN,
364 signin_metrics::SignoutDelete::IGNORE_METRIC); 353 signin_metrics::SignoutDelete::IGNORE_METRIC);
365 // The statement above results in a call to SigninFailed() which will free 354 // The statement above results in a call to SigninFailed() which will free
366 // this object, so do not refer to the OneClickSigninSyncStarter object 355 // this object, so do not refer to the OneClickSigninSyncStarter object
367 // after this point. 356 // after this point.
368 } 357 }
369 358
370 void OneClickSigninSyncStarter::ConfirmAndSignin() { 359 void OneClickSigninSyncStarter::ConfirmAndSignin() {
371 SigninManager* signin = SigninManagerFactory::GetForProfile(profile_); 360 SigninManager* signin = SigninManagerFactory::GetForProfile(profile_);
372 if (confirmation_required_ == CONFIRM_UNTRUSTED_SIGNIN) { 361 if (confirmation_required_ == CONFIRM_UNTRUSTED_SIGNIN) {
373 browser_ = EnsureBrowser(browser_, profile_, desktop_type_); 362 browser_ = EnsureBrowser(browser_, profile_);
374 content::RecordAction( 363 content::RecordAction(
375 base::UserMetricsAction("Signin_Show_UntrustedSigninPrompt")); 364 base::UserMetricsAction("Signin_Show_UntrustedSigninPrompt"));
376 // Display a confirmation dialog to the user. 365 // Display a confirmation dialog to the user.
377 browser_->window()->ShowOneClickSigninBubble( 366 browser_->window()->ShowOneClickSigninBubble(
378 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_SAML_MODAL_DIALOG, 367 BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_SAML_MODAL_DIALOG,
379 base::UTF8ToUTF16(signin->GetUsernameForAuthInProgress()), 368 base::UTF8ToUTF16(signin->GetUsernameForAuthInProgress()),
380 base::string16(), // No error message to display. 369 base::string16(), // No error message to display.
381 base::Bind(&OneClickSigninSyncStarter::UntrustedSigninConfirmed, 370 base::Bind(&OneClickSigninSyncStarter::UntrustedSigninConfirmed,
382 weak_pointer_factory_.GetWeakPtr())); 371 weak_pointer_factory_.GetWeakPtr()));
383 LoginUIServiceFactory::GetForProfile(profile_)->UntrustedLoginUIShown(); 372 LoginUIServiceFactory::GetForProfile(profile_)->UntrustedLoginUIShown();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 if (web_contents() && !continue_url_.is_empty() && 508 if (web_contents() && !continue_url_.is_empty() &&
520 start_mode_ != CONFIGURE_SYNC_FIRST) { 509 start_mode_ != CONFIGURE_SYNC_FIRST) {
521 LoadContinueUrl(); 510 LoadContinueUrl();
522 } 511 }
523 512
524 delete this; 513 delete this;
525 } 514 }
526 515
527 void OneClickSigninSyncStarter::DisplayFinalConfirmationBubble( 516 void OneClickSigninSyncStarter::DisplayFinalConfirmationBubble(
528 const base::string16& custom_message) { 517 const base::string16& custom_message) {
529 browser_ = EnsureBrowser(browser_, profile_, desktop_type_); 518 browser_ = EnsureBrowser(browser_, profile_);
530 LoginUIServiceFactory::GetForProfile(browser_->profile())-> 519 LoginUIServiceFactory::GetForProfile(browser_->profile())->
531 DisplayLoginResult(browser_, custom_message); 520 DisplayLoginResult(browser_, custom_message);
532 } 521 }
533 522
534 void OneClickSigninSyncStarter::DisplayModalSyncConfirmationWindow() { 523 void OneClickSigninSyncStarter::DisplayModalSyncConfirmationWindow() {
535 browser_ = EnsureBrowser(browser_, profile_, desktop_type_); 524 browser_ = EnsureBrowser(browser_, profile_);
536 browser_->ShowModalSyncConfirmationWindow(); 525 browser_->ShowModalSyncConfirmationWindow();
537 } 526 }
538 527
539 // static 528 // static
540 Browser* OneClickSigninSyncStarter::EnsureBrowser( 529 Browser* OneClickSigninSyncStarter::EnsureBrowser(Browser* browser,
541 Browser* browser, 530 Profile* profile) {
542 Profile* profile,
543 chrome::HostDesktopType desktop_type) {
544 if (!browser) { 531 if (!browser) {
545 // The user just created a new profile or has closed the browser that 532 // The user just created a new profile or has closed the browser that
546 // we used previously. Grab the most recently active browser or else 533 // we used previously. Grab the most recently active browser or else
547 // create a new one. 534 // create a new one.
548 browser = chrome::FindLastActiveWithProfile(profile); 535 browser = chrome::FindLastActiveWithProfile(profile);
549 if (!browser) { 536 if (!browser) {
550 browser = new Browser(Browser::CreateParams(profile)); 537 browser = new Browser(Browser::CreateParams(profile));
551 chrome::AddTabAt(browser, GURL(), -1, true); 538 chrome::AddTabAt(browser, GURL(), -1, true);
552 } 539 }
553 browser->window()->Show(); 540 browser->window()->Show();
554 } 541 }
555 return browser; 542 return browser;
556 } 543 }
557 544
558 void OneClickSigninSyncStarter::ShowSettingsPage(bool configure_sync) { 545 void OneClickSigninSyncStarter::ShowSettingsPage(bool configure_sync) {
559 // Give the user a chance to configure things. We don't clear the 546 // Give the user a chance to configure things. We don't clear the
560 // ProfileSyncService::setup_in_progress flag because we don't want sync 547 // ProfileSyncService::setup_in_progress flag because we don't want sync
561 // to start up until after the configure UI is displayed (the configure UI 548 // to start up until after the configure UI is displayed (the configure UI
562 // will clear the flag when the user is done setting up sync). 549 // will clear the flag when the user is done setting up sync).
563 ProfileSyncService* profile_sync_service = GetProfileSyncService(); 550 ProfileSyncService* profile_sync_service = GetProfileSyncService();
564 LoginUIService* login_ui = LoginUIServiceFactory::GetForProfile(profile_); 551 LoginUIService* login_ui = LoginUIServiceFactory::GetForProfile(profile_);
565 if (login_ui->current_login_ui()) { 552 if (login_ui->current_login_ui()) {
566 login_ui->current_login_ui()->FocusUI(); 553 login_ui->current_login_ui()->FocusUI();
567 } else { 554 } else {
568 browser_ = EnsureBrowser(browser_, profile_, desktop_type_); 555 browser_ = EnsureBrowser(browser_, profile_);
569 556
570 // If the sign in tab is showing the native signin page or the blank page 557 // If the sign in tab is showing the native signin page or the blank page
571 // for web-based flow, and is not about to be closed, use it to show the 558 // for web-based flow, and is not about to be closed, use it to show the
572 // settings UI. 559 // settings UI.
573 bool use_same_tab = false; 560 bool use_same_tab = false;
574 if (web_contents()) { 561 if (web_contents()) {
575 GURL current_url = web_contents()->GetLastCommittedURL(); 562 GURL current_url = web_contents()->GetLastCommittedURL();
576 std::string constrained_key; 563 std::string constrained_key;
577 net::GetValueForKeyInQuery(current_url, "constrained", &constrained_key); 564 net::GetValueForKeyInQuery(current_url, "constrained", &constrained_key);
578 bool is_constrained = (constrained_key == "1"); 565 bool is_constrained = (constrained_key == "1");
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 false /* user_gesture */); 641 false /* user_gesture */);
655 } 642 }
656 643
657 void OneClickSigninSyncStarter::LoadContinueUrl() { 644 void OneClickSigninSyncStarter::LoadContinueUrl() {
658 web_contents()->GetController().LoadURL( 645 web_contents()->GetController().LoadURL(
659 continue_url_, 646 continue_url_,
660 content::Referrer(), 647 content::Referrer(),
661 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, 648 ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
662 std::string()); 649 std::string());
663 } 650 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/sync/one_click_signin_sync_starter.h ('k') | chrome/browser/ui/views/frame/global_menu_bar_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698