OLD | NEW |
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/startup/default_browser_prompt.h" | 5 #include "chrome/browser/ui/startup/default_browser_prompt.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 } | 195 } |
196 | 196 |
197 // A shell_integration::DefaultWebClientObserver that handles the check to | 197 // A shell_integration::DefaultWebClientObserver that handles the check to |
198 // determine whether or not to show the default browser prompt. If Chrome is the | 198 // determine whether or not to show the default browser prompt. If Chrome is the |
199 // default browser, then the kCheckDefaultBrowser pref is reset. Otherwise, the | 199 // default browser, then the kCheckDefaultBrowser pref is reset. Otherwise, the |
200 // prompt is shown. | 200 // prompt is shown. |
201 class CheckDefaultBrowserObserver | 201 class CheckDefaultBrowserObserver |
202 : public shell_integration::DefaultWebClientObserver { | 202 : public shell_integration::DefaultWebClientObserver { |
203 public: | 203 public: |
204 CheckDefaultBrowserObserver(const base::FilePath& profile_path, | 204 CheckDefaultBrowserObserver(const base::FilePath& profile_path, |
205 bool show_prompt, | 205 bool show_prompt); |
206 chrome::HostDesktopType desktop_type); | |
207 ~CheckDefaultBrowserObserver() override; | 206 ~CheckDefaultBrowserObserver() override; |
208 | 207 |
209 private: | 208 private: |
210 void SetDefaultWebClientUIState( | 209 void SetDefaultWebClientUIState( |
211 shell_integration::DefaultWebClientUIState state) override; | 210 shell_integration::DefaultWebClientUIState state) override; |
212 bool IsOwnedByWorker() override; | 211 bool IsOwnedByWorker() override; |
213 | 212 |
214 void ResetCheckDefaultBrowserPref(); | 213 void ResetCheckDefaultBrowserPref(); |
215 void ShowPrompt(); | 214 void ShowPrompt(); |
216 | 215 |
217 // The path to the profile for which the prompt is to be shown. | 216 // The path to the profile for which the prompt is to be shown. |
218 base::FilePath profile_path_; | 217 base::FilePath profile_path_; |
219 | 218 |
220 // True if the prompt is to be shown if Chrome is not the default browser. | 219 // True if the prompt is to be shown if Chrome is not the default browser. |
221 bool show_prompt_; | 220 bool show_prompt_; |
222 chrome::HostDesktopType desktop_type_; | |
223 | 221 |
224 DISALLOW_COPY_AND_ASSIGN(CheckDefaultBrowserObserver); | 222 DISALLOW_COPY_AND_ASSIGN(CheckDefaultBrowserObserver); |
225 }; | 223 }; |
226 | 224 |
227 CheckDefaultBrowserObserver::CheckDefaultBrowserObserver( | 225 CheckDefaultBrowserObserver::CheckDefaultBrowserObserver( |
228 const base::FilePath& profile_path, | 226 const base::FilePath& profile_path, |
229 bool show_prompt, | 227 bool show_prompt) |
230 chrome::HostDesktopType desktop_type) | 228 : profile_path_(profile_path), show_prompt_(show_prompt) {} |
231 : profile_path_(profile_path), | |
232 show_prompt_(show_prompt), | |
233 desktop_type_(desktop_type) {} | |
234 | 229 |
235 CheckDefaultBrowserObserver::~CheckDefaultBrowserObserver() {} | 230 CheckDefaultBrowserObserver::~CheckDefaultBrowserObserver() {} |
236 | 231 |
237 void CheckDefaultBrowserObserver::SetDefaultWebClientUIState( | 232 void CheckDefaultBrowserObserver::SetDefaultWebClientUIState( |
238 shell_integration::DefaultWebClientUIState state) { | 233 shell_integration::DefaultWebClientUIState state) { |
239 if (state == shell_integration::STATE_IS_DEFAULT) { | 234 if (state == shell_integration::STATE_IS_DEFAULT) { |
240 // Notify the user in the future if Chrome ceases to be the user's chosen | 235 // Notify the user in the future if Chrome ceases to be the user's chosen |
241 // default browser. | 236 // default browser. |
242 ResetCheckDefaultBrowserPref(); | 237 ResetCheckDefaultBrowserPref(); |
243 } else if (show_prompt_ && state == shell_integration::STATE_NOT_DEFAULT && | 238 } else if (show_prompt_ && state == shell_integration::STATE_NOT_DEFAULT && |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 | 274 |
280 } // namespace | 275 } // namespace |
281 | 276 |
282 namespace chrome { | 277 namespace chrome { |
283 | 278 |
284 void RegisterDefaultBrowserPromptPrefs(PrefRegistrySimple* registry) { | 279 void RegisterDefaultBrowserPromptPrefs(PrefRegistrySimple* registry) { |
285 registry->RegisterStringPref( | 280 registry->RegisterStringPref( |
286 prefs::kBrowserSuppressDefaultBrowserPrompt, std::string()); | 281 prefs::kBrowserSuppressDefaultBrowserPrompt, std::string()); |
287 } | 282 } |
288 | 283 |
289 void ShowDefaultBrowserPrompt(Profile* profile, HostDesktopType desktop_type) { | 284 void ShowDefaultBrowserPrompt(Profile* profile) { |
290 // Do not check if Chrome is the default browser if there is a policy in | 285 // Do not check if Chrome is the default browser if there is a policy in |
291 // control of this setting. | 286 // control of this setting. |
292 if (g_browser_process->local_state()->IsManagedPreference( | 287 if (g_browser_process->local_state()->IsManagedPreference( |
293 prefs::kDefaultBrowserSettingEnabled)) { | 288 prefs::kDefaultBrowserSettingEnabled)) { |
294 // Handling of the browser.default_browser_setting_enabled policy setting is | 289 // Handling of the browser.default_browser_setting_enabled policy setting is |
295 // taken care of in BrowserProcessImpl. | 290 // taken care of in BrowserProcessImpl. |
296 return; | 291 return; |
297 } | 292 } |
298 | 293 |
299 PrefService* prefs = profile->GetPrefs(); | 294 PrefService* prefs = profile->GetPrefs(); |
(...skipping 15 matching lines...) Expand all Loading... |
315 const Version disable_version(disable_version_string); | 310 const Version disable_version(disable_version_string); |
316 DCHECK(disable_version_string.empty() || disable_version.IsValid()); | 311 DCHECK(disable_version_string.empty() || disable_version.IsValid()); |
317 if (disable_version.IsValid() && | 312 if (disable_version.IsValid() && |
318 disable_version == Version(version_info::GetVersionNumber())) { | 313 disable_version == Version(version_info::GetVersionNumber())) { |
319 show_prompt = false; | 314 show_prompt = false; |
320 } | 315 } |
321 } | 316 } |
322 | 317 |
323 scoped_refptr<shell_integration::DefaultBrowserWorker>( | 318 scoped_refptr<shell_integration::DefaultBrowserWorker>( |
324 new shell_integration::DefaultBrowserWorker( | 319 new shell_integration::DefaultBrowserWorker( |
325 new CheckDefaultBrowserObserver(profile->GetPath(), show_prompt, | 320 new CheckDefaultBrowserObserver(profile->GetPath(), show_prompt))) |
326 desktop_type))) | |
327 ->StartCheckIsDefault(); | 321 ->StartCheckIsDefault(); |
328 } | 322 } |
329 | 323 |
330 #if !defined(OS_WIN) | 324 #if !defined(OS_WIN) |
331 bool ShowFirstRunDefaultBrowserPrompt(Profile* profile) { | 325 bool ShowFirstRunDefaultBrowserPrompt(Profile* profile) { |
332 return false; | 326 return false; |
333 } | 327 } |
334 #endif | 328 #endif |
335 | 329 |
336 } // namespace chrome | 330 } // namespace chrome |
OLD | NEW |