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

Side by Side Diff: chrome/browser/ui/webui/set_as_default_browser_ui.cc

Issue 1657933003: Fixes the interactive default browser UX for policy setting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix merge issue 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/webui/set_as_default_browser_ui.h" 5 #include "chrome/browser/ui/webui/set_as_default_browser_ui.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 const base::WeakPtr<ResponseDelegate>& response_delegate); 102 const base::WeakPtr<ResponseDelegate>& response_delegate);
103 ~SetAsDefaultBrowserHandler() override; 103 ~SetAsDefaultBrowserHandler() override;
104 104
105 // WebUIMessageHandler implementation. 105 // WebUIMessageHandler implementation.
106 void RegisterMessages() override; 106 void RegisterMessages() override;
107 107
108 // shell_integration::DefaultWebClientObserver implementation. 108 // shell_integration::DefaultWebClientObserver implementation.
109 void SetDefaultWebClientUIState( 109 void SetDefaultWebClientUIState(
110 shell_integration::DefaultWebClientUIState state) override; 110 shell_integration::DefaultWebClientUIState state) override;
111 void OnSetAsDefaultConcluded(bool close_chrome) override; 111 void OnSetAsDefaultConcluded(bool close_chrome) override;
112 bool IsInteractiveSetDefaultPermitted() override;
113 112
114 private: 113 private:
115 // Handler for the 'Next' (or 'make Chrome the Metro browser') button. 114 // Handler for the 'Next' (or 'make Chrome the Metro browser') button.
116 void HandleLaunchSetDefaultBrowserFlow(const base::ListValue* args); 115 void HandleLaunchSetDefaultBrowserFlow(const base::ListValue* args);
117 116
118 // Close this web ui. 117 // Close this web ui.
119 void ConcludeInteraction(MakeChromeDefaultResult interaction_result); 118 void ConcludeInteraction(MakeChromeDefaultResult interaction_result);
120 119
120 // The worker pointer is reference counted. While it is running, the
121 // message loops of the FILE and UI thread will hold references to it
122 // and it will be automatically freed once all its tasks have finished.
121 scoped_refptr<shell_integration::DefaultBrowserWorker> 123 scoped_refptr<shell_integration::DefaultBrowserWorker>
122 default_browser_worker_; 124 default_browser_worker_;
123 bool set_default_returned_; 125 bool set_default_returned_;
124 bool set_default_result_; 126 bool set_default_result_;
125 base::WeakPtr<ResponseDelegate> response_delegate_; 127 base::WeakPtr<ResponseDelegate> response_delegate_;
126 128
127 DISALLOW_COPY_AND_ASSIGN(SetAsDefaultBrowserHandler); 129 DISALLOW_COPY_AND_ASSIGN(SetAsDefaultBrowserHandler);
128 }; 130 };
129 131
130 SetAsDefaultBrowserHandler::SetAsDefaultBrowserHandler( 132 SetAsDefaultBrowserHandler::SetAsDefaultBrowserHandler(
131 const base::WeakPtr<ResponseDelegate>& response_delegate) 133 const base::WeakPtr<ResponseDelegate>& response_delegate)
132 : default_browser_worker_( 134 : default_browser_worker_(new shell_integration::DefaultBrowserWorker(
133 new shell_integration::DefaultBrowserWorker(this)), 135 this,
136 /*delete_observer=*/false)),
134 set_default_returned_(false), 137 set_default_returned_(false),
135 set_default_result_(false), 138 set_default_result_(false),
136 response_delegate_(response_delegate) {} 139 response_delegate_(response_delegate) {}
137 140
138 SetAsDefaultBrowserHandler::~SetAsDefaultBrowserHandler() { 141 SetAsDefaultBrowserHandler::~SetAsDefaultBrowserHandler() {
139 default_browser_worker_->ObserverDestroyed(); 142 default_browser_worker_->ObserverDestroyed();
140 } 143 }
141 144
142 void SetAsDefaultBrowserHandler::RegisterMessages() { 145 void SetAsDefaultBrowserHandler::RegisterMessages() {
143 web_ui()->RegisterMessageCallback( 146 web_ui()->RegisterMessageCallback(
(...skipping 20 matching lines...) Expand all
164 167
165 // Otherwise, keep the dialog open since the user probably didn't make a 168 // Otherwise, keep the dialog open since the user probably didn't make a
166 // choice. 169 // choice.
167 } 170 }
168 171
169 void SetAsDefaultBrowserHandler::OnSetAsDefaultConcluded(bool call_result) { 172 void SetAsDefaultBrowserHandler::OnSetAsDefaultConcluded(bool call_result) {
170 set_default_returned_ = true; 173 set_default_returned_ = true;
171 set_default_result_ = call_result; 174 set_default_result_ = call_result;
172 } 175 }
173 176
174 bool SetAsDefaultBrowserHandler::IsInteractiveSetDefaultPermitted() {
175 return true;
176 }
177
178 void SetAsDefaultBrowserHandler::HandleLaunchSetDefaultBrowserFlow( 177 void SetAsDefaultBrowserHandler::HandleLaunchSetDefaultBrowserFlow(
179 const base::ListValue* args) { 178 const base::ListValue* args) {
180 set_default_returned_ = false; 179 set_default_returned_ = false;
181 set_default_result_ = false; 180 set_default_result_ = false;
182 default_browser_worker_->StartSetAsDefault(); 181 default_browser_worker_->StartSetAsDefault();
183 } 182 }
184 183
185 void SetAsDefaultBrowserHandler::ConcludeInteraction( 184 void SetAsDefaultBrowserHandler::ConcludeInteraction(
186 MakeChromeDefaultResult interaction_result) { 185 MakeChromeDefaultResult interaction_result) {
187 DCHECK_CURRENTLY_ON(BrowserThread::UI); 186 DCHECK_CURRENTLY_ON(BrowserThread::UI);
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 Profile::FromWebUI(web_ui), CreateSetAsDefaultBrowserUIHTMLSource()); 364 Profile::FromWebUI(web_ui), CreateSetAsDefaultBrowserUIHTMLSource());
366 } 365 }
367 366
368 // static 367 // static
369 void SetAsDefaultBrowserUI::Show(Profile* profile, Browser* browser) { 368 void SetAsDefaultBrowserUI::Show(Profile* profile, Browser* browser) {
370 DCHECK_CURRENTLY_ON(BrowserThread::UI); 369 DCHECK_CURRENTLY_ON(BrowserThread::UI);
371 SetAsDefaultBrowserDialogImpl* dialog = 370 SetAsDefaultBrowserDialogImpl* dialog =
372 new SetAsDefaultBrowserDialogImpl(profile, browser); 371 new SetAsDefaultBrowserDialogImpl(profile, browser);
373 dialog->ShowDialog(); 372 dialog->ShowDialog();
374 } 373 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698