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

Side by Side Diff: chrome/browser/ui/webui/settings/settings_default_browser_handler.cc

Issue 1988463002: MD Settings: Convert C++ handlers to be JavaScript-lifecycle aware. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/settings/settings_default_browser_handler.h" 5 #include "chrome/browser/ui/webui/settings/settings_default_browser_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/metrics/user_metrics.h" 9 #include "base/metrics/user_metrics.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 10 matching lines...) Expand all
21 return pref.IsManaged() && !pref.GetValue(); 21 return pref.IsManaged() && !pref.GetValue();
22 } 22 }
23 23
24 } // namespace 24 } // namespace
25 25
26 DefaultBrowserHandler::DefaultBrowserHandler(content::WebUI* webui) 26 DefaultBrowserHandler::DefaultBrowserHandler(content::WebUI* webui)
27 : weak_ptr_factory_(this) { 27 : weak_ptr_factory_(this) {
28 default_browser_worker_ = new shell_integration::DefaultBrowserWorker( 28 default_browser_worker_ = new shell_integration::DefaultBrowserWorker(
29 base::Bind(&DefaultBrowserHandler::OnDefaultBrowserWorkerFinished, 29 base::Bind(&DefaultBrowserHandler::OnDefaultBrowserWorkerFinished,
30 weak_ptr_factory_.GetWeakPtr())); 30 weak_ptr_factory_.GetWeakPtr()));
31 default_browser_policy_.Init(
32 prefs::kDefaultBrowserSettingEnabled, g_browser_process->local_state(),
33 base::Bind(&DefaultBrowserHandler::RequestDefaultBrowserState,
34 base::Unretained(this), nullptr));
35 } 31 }
36 32
37 DefaultBrowserHandler::~DefaultBrowserHandler() {} 33 DefaultBrowserHandler::~DefaultBrowserHandler() {}
38 34
39 void DefaultBrowserHandler::RegisterMessages() { 35 void DefaultBrowserHandler::RegisterMessages() {
40 web_ui()->RegisterMessageCallback( 36 web_ui()->RegisterMessageCallback(
41 "SettingsDefaultBrowser.requestDefaultBrowserState", 37 "SettingsDefaultBrowser.requestDefaultBrowserState",
42 base::Bind(&DefaultBrowserHandler::RequestDefaultBrowserState, 38 base::Bind(&DefaultBrowserHandler::RequestDefaultBrowserState,
43 base::Unretained(this))); 39 base::Unretained(this)));
44 web_ui()->RegisterMessageCallback( 40 web_ui()->RegisterMessageCallback(
45 "SettingsDefaultBrowser.setAsDefaultBrowser", 41 "SettingsDefaultBrowser.setAsDefaultBrowser",
46 base::Bind(&DefaultBrowserHandler::SetAsDefaultBrowser, 42 base::Bind(&DefaultBrowserHandler::SetAsDefaultBrowser,
47 base::Unretained(this))); 43 base::Unretained(this)));
48 } 44 }
49 45
46 void DefaultBrowserHandler::OnJavascriptAllowed() {
47 default_browser_policy_.Init(
48 prefs::kDefaultBrowserSettingEnabled, g_browser_process->local_state(),
49 base::Bind(&DefaultBrowserHandler::RequestDefaultBrowserState,
50 base::Unretained(this), nullptr));
51 }
52
53 void DefaultBrowserHandler::OnJavascriptDisallowed() {
54 default_browser_policy_.Destroy();
55 }
56
50 void DefaultBrowserHandler::RequestDefaultBrowserState( 57 void DefaultBrowserHandler::RequestDefaultBrowserState(
51 const base::ListValue* /*args*/) { 58 const base::ListValue* /*args*/) {
59 AllowJavascript();
60
52 default_browser_worker_->StartCheckIsDefault(); 61 default_browser_worker_->StartCheckIsDefault();
53 } 62 }
54 63
55 void DefaultBrowserHandler::SetAsDefaultBrowser(const base::ListValue* args) { 64 void DefaultBrowserHandler::SetAsDefaultBrowser(const base::ListValue* args) {
56 CHECK(!IsDisabledByPolicy(default_browser_policy_)); 65 CHECK(!IsDisabledByPolicy(default_browser_policy_));
57 66
58 base::RecordAction(base::UserMetricsAction("Options_SetAsDefaultBrowser")); 67 base::RecordAction(base::UserMetricsAction("Options_SetAsDefaultBrowser"));
59 UMA_HISTOGRAM_COUNTS("Settings.StartSetAsDefault", true); 68 UMA_HISTOGRAM_COUNTS("Settings.StartSetAsDefault", true);
60 69
61 default_browser_worker_->StartSetAsDefault(); 70 default_browser_worker_->StartSetAsDefault();
(...skipping 10 matching lines...) Expand all
72 // default browser. 81 // default browser.
73 chrome::ResetDefaultBrowserPrompt(Profile::FromWebUI(web_ui())); 82 chrome::ResetDefaultBrowserPrompt(Profile::FromWebUI(web_ui()));
74 } 83 }
75 84
76 base::FundamentalValue is_default(state == shell_integration::IS_DEFAULT); 85 base::FundamentalValue is_default(state == shell_integration::IS_DEFAULT);
77 base::FundamentalValue can_be_default( 86 base::FundamentalValue can_be_default(
78 state != shell_integration::UNKNOWN_DEFAULT && 87 state != shell_integration::UNKNOWN_DEFAULT &&
79 !IsDisabledByPolicy(default_browser_policy_) && 88 !IsDisabledByPolicy(default_browser_policy_) &&
80 shell_integration::CanSetAsDefaultBrowser()); 89 shell_integration::CanSetAsDefaultBrowser());
81 90
82 web_ui()->CallJavascriptFunction("Settings.updateDefaultBrowserState", 91 CallJavascriptFunction("Settings.updateDefaultBrowserState", is_default,
83 is_default, can_be_default); 92 can_be_default);
84 } 93 }
85 94
86 } // namespace settings 95 } // namespace settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698