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

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

Issue 1806353002: Enhanced Sync Confirmation modal (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 4 years, 9 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_observer.h" 5 #include "chrome/browser/ui/sync/one_click_signin_sync_observer.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
(...skipping 10 matching lines...) Expand all
21 content::WebContentsDelegate* tab_delegate = tab->GetDelegate(); 21 content::WebContentsDelegate* tab_delegate = tab->GetDelegate();
22 if (tab_delegate) 22 if (tab_delegate)
23 tab_delegate->CloseContents(tab); 23 tab_delegate->CloseContents(tab);
24 } 24 }
25 25
26 } // namespace 26 } // namespace
27 27
28 28
29 OneClickSigninSyncObserver::OneClickSigninSyncObserver( 29 OneClickSigninSyncObserver::OneClickSigninSyncObserver(
30 content::WebContents* web_contents, 30 content::WebContents* web_contents,
31 Profile* profile,
32 Browser* browser,
33 const GURL& activity_controls_url,
31 const GURL& continue_url) 34 const GURL& continue_url)
32 : content::WebContentsObserver(web_contents), 35 : content::WebContentsObserver(web_contents),
36 profile_(profile),
37 browser_(browser),
38 activity_controls_url_(activity_controls_url),
33 continue_url_(continue_url), 39 continue_url_(continue_url),
34 weak_ptr_factory_(this) { 40 weak_ptr_factory_(this) {
35 DCHECK(!continue_url_.is_empty()); 41 DCHECK(!continue_url_.is_empty() || !activity_controls_url.is_empty());
Roger Tawa OOO till Jul 10th 2016/03/23 01:14:15 This DCHECK verifies that both URLs are not empty,
Moe 2016/03/24 00:02:40 Right now, OneClickSigninSyncObserver is used for
36 42
37 ProfileSyncService* sync_service = GetSyncService(web_contents); 43 ProfileSyncService* sync_service = GetSyncService(web_contents);
38 if (sync_service) { 44 if (sync_service) {
39 sync_service->AddObserver(this); 45 sync_service->AddObserver(this);
40 } else { 46 } else {
41 LoadContinueUrl(); 47 LoadContinueUrl();
42 // Post a task rather than calling |delete this| here, so that the 48 // Post a task rather than calling |delete this| here, so that the
43 // destructor is not called directly from the constructor. Note that it's 49 // destructor is not called directly from the constructor. Note that it's
44 // important to pass a weak pointer rather than base::Unretained(this) 50 // important to pass a weak pointer rather than base::Unretained(this)
45 // because it's possible for e.g. WebContentsDestroyed() to be called 51 // because it's possible for e.g. WebContentsDestroyed() to be called
(...skipping 25 matching lines...) Expand all
71 // Close the Gaia sign-in tab via a task to make sure we aren't in the 77 // Close the Gaia sign-in tab via a task to make sure we aren't in the
72 // middle of any WebUI handler code. 78 // middle of any WebUI handler code.
73 base::ThreadTaskRunnerHandle::Get()->PostTask( 79 base::ThreadTaskRunnerHandle::Get()->PostTask(
74 FROM_HERE, base::Bind(&CloseTab, base::Unretained(web_contents()))); 80 FROM_HERE, base::Bind(&CloseTab, base::Unretained(web_contents())));
75 } else { 81 } else {
76 if (sync_service->IsFirstSetupInProgress()) { 82 if (sync_service->IsFirstSetupInProgress()) {
77 // Sync setup has not completed yet. Wait for it to complete. 83 // Sync setup has not completed yet. Wait for it to complete.
78 return; 84 return;
79 } 85 }
80 86
87 if (!activity_controls_url_.is_empty()) {
88 // Open the 'Activity controls' section of the privacy settings.
89 content::OpenURLParams params(activity_controls_url_,
90 content::Referrer(),
91 NEW_FOREGROUND_TAB,
92 ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
93 false);
94 browser_->OpenURL(params);
95 }
96
81 if (sync_service->IsSyncActive() && 97 if (sync_service->IsSyncActive() &&
82 signin::GetAccessPointForPromoURL(continue_url_) != 98 signin::GetAccessPointForPromoURL(continue_url_) !=
83 signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS) { 99 signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS) {
84 // TODO(isherman): Having multiple settings pages open can cause issues 100 // TODO(isherman): Having multiple settings pages open can cause issues
85 // redirecting after Sync is set up: http://crbug.com/355885 101 // redirecting after Sync is set up: http://crbug.com/355885
86 LoadContinueUrl(); 102 LoadContinueUrl();
87 } 103 }
88 } 104 }
89 105
90 sync_service->RemoveObserver(this); 106 sync_service->RemoveObserver(this);
91 delete this; 107 delete this;
92 } 108 }
93 109
94 void OneClickSigninSyncObserver::LoadContinueUrl() { 110 void OneClickSigninSyncObserver::LoadContinueUrl() {
95 web_contents()->GetController().LoadURL( 111 web_contents()->GetController().LoadURL(
96 continue_url_, 112 continue_url_,
97 content::Referrer(), 113 content::Referrer(),
98 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, 114 ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
99 std::string()); 115 std::string());
100 } 116 }
101 117
102 ProfileSyncService* OneClickSigninSyncObserver::GetSyncService( 118 ProfileSyncService* OneClickSigninSyncObserver::GetSyncService(
103 content::WebContents* web_contents) { 119 content::WebContents* web_contents) {
104 Profile* profile = 120 return ProfileSyncServiceFactory::GetForProfile(profile_);
105 Profile::FromBrowserContext(web_contents->GetBrowserContext());
106 return ProfileSyncServiceFactory::GetForProfile(profile);
107 } 121 }
108 122
109 // static 123 // static
110 void OneClickSigninSyncObserver::DeleteObserver( 124 void OneClickSigninSyncObserver::DeleteObserver(
111 base::WeakPtr<OneClickSigninSyncObserver> observer) { 125 base::WeakPtr<OneClickSigninSyncObserver> observer) {
112 if (observer) 126 if (observer)
113 delete observer.get(); 127 delete observer.get();
114 } 128 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698