OLD | NEW |
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/supervised_user_internals_message_handler.h" | 5 #include "chrome/browser/ui/webui/supervised_user_internals_message_handler.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
13 #include "base/strings/stringprintf.h" | 13 #include "base/strings/stringprintf.h" |
14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
15 #include "base/values.h" | 15 #include "base/values.h" |
16 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
17 #include "chrome/browser/signin/account_tracker_service_factory.h" | 17 #include "chrome/browser/signin/account_tracker_service_factory.h" |
18 #include "chrome/browser/supervised_user/supervised_user_service.h" | 18 #include "chrome/browser/supervised_user/supervised_user_service.h" |
19 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" | 19 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
20 #include "chrome/browser/supervised_user/supervised_user_settings_service.h" | 20 #include "chrome/browser/supervised_user/supervised_user_settings_service.h" |
21 #include "chrome/browser/supervised_user/supervised_user_settings_service_factor
y.h" | 21 #include "chrome/browser/supervised_user/supervised_user_settings_service_factor
y.h" |
22 #include "components/signin/core/browser/account_tracker_service.h" | 22 #include "components/signin/core/browser/account_tracker_service.h" |
| 23 #include "components/supervised_user_error_page/supervised_user_error_page.h" |
23 #include "components/url_formatter/url_fixer.h" | 24 #include "components/url_formatter/url_fixer.h" |
24 #include "content/public/browser/browser_thread.h" | 25 #include "content/public/browser/browser_thread.h" |
25 #include "content/public/browser/web_ui.h" | 26 #include "content/public/browser/web_ui.h" |
26 | 27 |
27 using content::BrowserThread; | 28 using content::BrowserThread; |
28 | 29 |
29 namespace { | 30 namespace { |
30 | 31 |
31 // Creates a 'section' for display on about:supervised-user-internals, | 32 // Creates a 'section' for display on about:supervised-user-internals, |
32 // consisting of a title and a list of fields. Returns a pointer to the new | 33 // consisting of a title and a list of fields. Returns a pointer to the new |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 | 84 |
84 std::string FilteringBehaviorToString( | 85 std::string FilteringBehaviorToString( |
85 SupervisedUserURLFilter::FilteringBehavior behavior, bool uncertain) { | 86 SupervisedUserURLFilter::FilteringBehavior behavior, bool uncertain) { |
86 std::string result = FilteringBehaviorToString(behavior); | 87 std::string result = FilteringBehaviorToString(behavior); |
87 if (uncertain) | 88 if (uncertain) |
88 result += " (Uncertain)"; | 89 result += " (Uncertain)"; |
89 return result; | 90 return result; |
90 } | 91 } |
91 | 92 |
92 std::string FilteringBehaviorReasonToString( | 93 std::string FilteringBehaviorReasonToString( |
93 SupervisedUserURLFilter::FilteringBehaviorReason reason) { | 94 supervised_user_error_page::FilteringBehaviorReason reason) { |
94 switch (reason) { | 95 switch (reason) { |
95 case SupervisedUserURLFilter::DEFAULT: | 96 case supervised_user_error_page::DEFAULT: |
96 return "Default"; | 97 return "Default"; |
97 case SupervisedUserURLFilter::ASYNC_CHECKER: | 98 case supervised_user_error_page::ASYNC_CHECKER: |
98 return "AsyncChecker"; | 99 return "AsyncChecker"; |
99 case SupervisedUserURLFilter::BLACKLIST: | 100 case supervised_user_error_page::BLACKLIST: |
100 return "Blacklist"; | 101 return "Blacklist"; |
101 case SupervisedUserURLFilter::MANUAL: | 102 case supervised_user_error_page::MANUAL: |
102 return "Manual"; | 103 return "Manual"; |
103 case SupervisedUserURLFilter::WHITELIST: | 104 case supervised_user_error_page::WHITELIST: |
104 return "Whitelist"; | 105 return "Whitelist"; |
105 } | 106 } |
106 return "Unknown/invalid"; | 107 return "Unknown/invalid"; |
107 } | 108 } |
108 | 109 |
109 } // namespace | 110 } // namespace |
110 | 111 |
111 // Helper class that lives on the IO thread, listens to the | 112 // Helper class that lives on the IO thread, listens to the |
112 // SupervisedUserURLFilter there, and posts results back to the UI thread. | 113 // SupervisedUserURLFilter there, and posts results back to the UI thread. |
113 class SupervisedUserInternalsMessageHandler::IOThreadHelper | 114 class SupervisedUserInternalsMessageHandler::IOThreadHelper |
114 : public base::RefCountedThreadSafe<IOThreadHelper, | 115 : public base::RefCountedThreadSafe<IOThreadHelper, |
115 BrowserThread::DeleteOnIOThread>, | 116 BrowserThread::DeleteOnIOThread>, |
116 public SupervisedUserURLFilter::Observer { | 117 public SupervisedUserURLFilter::Observer { |
117 public: | 118 public: |
118 using OnURLCheckedCallback = | 119 using OnURLCheckedCallback = |
119 base::Callback<void(const GURL&, | 120 base::Callback<void(const GURL&, |
120 SupervisedUserURLFilter::FilteringBehavior, | 121 SupervisedUserURLFilter::FilteringBehavior, |
121 SupervisedUserURLFilter::FilteringBehaviorReason, | 122 supervised_user_error_page::FilteringBehaviorReason, |
122 bool uncertain)>; | 123 bool uncertain)>; |
123 | 124 |
124 IOThreadHelper(scoped_refptr<const SupervisedUserURLFilter> filter, | 125 IOThreadHelper(scoped_refptr<const SupervisedUserURLFilter> filter, |
125 const OnURLCheckedCallback& callback) | 126 const OnURLCheckedCallback& callback) |
126 : filter_(filter), callback_(callback) { | 127 : filter_(filter), callback_(callback) { |
127 BrowserThread::PostTask(BrowserThread::IO, | 128 BrowserThread::PostTask(BrowserThread::IO, |
128 FROM_HERE, | 129 FROM_HERE, |
129 base::Bind(&IOThreadHelper::InitOnIOThread, this)); | 130 base::Bind(&IOThreadHelper::InitOnIOThread, this)); |
130 } | 131 } |
131 | 132 |
132 private: | 133 private: |
133 friend class base::DeleteHelper<IOThreadHelper>; | 134 friend class base::DeleteHelper<IOThreadHelper>; |
134 friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>; | 135 friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>; |
135 virtual ~IOThreadHelper() { | 136 virtual ~IOThreadHelper() { |
136 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 137 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
137 filter_->RemoveObserver(this); | 138 filter_->RemoveObserver(this); |
138 } | 139 } |
139 | 140 |
140 // SupervisedUserURLFilter::Observer: | 141 // SupervisedUserURLFilter::Observer: |
141 void OnSiteListUpdated() override {} | 142 void OnSiteListUpdated() override {} |
142 void OnURLChecked(const GURL& url, | 143 void OnURLChecked(const GURL& url, |
143 SupervisedUserURLFilter::FilteringBehavior behavior, | 144 SupervisedUserURLFilter::FilteringBehavior behavior, |
144 SupervisedUserURLFilter::FilteringBehaviorReason reason, | 145 supervised_user_error_page::FilteringBehaviorReason reason, |
145 bool uncertain) override { | 146 bool uncertain) override { |
146 BrowserThread::PostTask(BrowserThread::UI, | 147 BrowserThread::PostTask(BrowserThread::UI, |
147 FROM_HERE, | 148 FROM_HERE, |
148 base::Bind(callback_, | 149 base::Bind(callback_, |
149 url, behavior, reason, uncertain)); | 150 url, behavior, reason, uncertain)); |
150 } | 151 } |
151 | 152 |
152 void InitOnIOThread() { | 153 void InitOnIOThread() { |
153 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 154 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
154 filter_->AddObserver(this); | 155 filter_->AddObserver(this); |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 void SupervisedUserInternalsMessageHandler::SendSupervisedUserSettings( | 288 void SupervisedUserInternalsMessageHandler::SendSupervisedUserSettings( |
288 const base::DictionaryValue* settings) { | 289 const base::DictionaryValue* settings) { |
289 web_ui()->CallJavascriptFunction( | 290 web_ui()->CallJavascriptFunction( |
290 "chrome.supervised_user_internals.receiveUserSettings", | 291 "chrome.supervised_user_internals.receiveUserSettings", |
291 *(settings ? settings : base::Value::CreateNullValue().get())); | 292 *(settings ? settings : base::Value::CreateNullValue().get())); |
292 } | 293 } |
293 | 294 |
294 void SupervisedUserInternalsMessageHandler::OnTryURLResult( | 295 void SupervisedUserInternalsMessageHandler::OnTryURLResult( |
295 const std::map<std::string, base::string16>& whitelists, | 296 const std::map<std::string, base::string16>& whitelists, |
296 SupervisedUserURLFilter::FilteringBehavior behavior, | 297 SupervisedUserURLFilter::FilteringBehavior behavior, |
297 SupervisedUserURLFilter::FilteringBehaviorReason reason, | 298 supervised_user_error_page::FilteringBehaviorReason reason, |
298 bool uncertain) { | 299 bool uncertain) { |
299 std::vector<std::string> whitelists_list; | 300 std::vector<std::string> whitelists_list; |
300 for (const auto& whitelist : whitelists) { | 301 for (const auto& whitelist : whitelists) { |
301 whitelists_list.push_back( | 302 whitelists_list.push_back( |
302 base::StringPrintf("%s: %s", whitelist.first.c_str(), | 303 base::StringPrintf("%s: %s", whitelist.first.c_str(), |
303 base::UTF16ToUTF8(whitelist.second).c_str())); | 304 base::UTF16ToUTF8(whitelist.second).c_str())); |
304 } | 305 } |
305 std::string whitelists_str = base::JoinString(whitelists_list, "; "); | 306 std::string whitelists_str = base::JoinString(whitelists_list, "; "); |
306 base::DictionaryValue result; | 307 base::DictionaryValue result; |
307 result.SetString("allowResult", | 308 result.SetString("allowResult", |
308 FilteringBehaviorToString(behavior, uncertain)); | 309 FilteringBehaviorToString(behavior, uncertain)); |
309 result.SetBoolean("manual", reason == SupervisedUserURLFilter::MANUAL && | 310 result.SetBoolean("manual", reason == supervised_user_error_page::MANUAL && |
310 behavior == SupervisedUserURLFilter::ALLOW); | 311 behavior == SupervisedUserURLFilter::ALLOW); |
311 result.SetString("whitelists", whitelists_str); | 312 result.SetString("whitelists", whitelists_str); |
312 web_ui()->CallJavascriptFunction( | 313 web_ui()->CallJavascriptFunction( |
313 "chrome.supervised_user_internals.receiveTryURLResult", result); | 314 "chrome.supervised_user_internals.receiveTryURLResult", result); |
314 } | 315 } |
315 | 316 |
316 void SupervisedUserInternalsMessageHandler::OnURLChecked( | 317 void SupervisedUserInternalsMessageHandler::OnURLChecked( |
317 const GURL& url, | 318 const GURL& url, |
318 SupervisedUserURLFilter::FilteringBehavior behavior, | 319 SupervisedUserURLFilter::FilteringBehavior behavior, |
319 SupervisedUserURLFilter::FilteringBehaviorReason reason, | 320 supervised_user_error_page::FilteringBehaviorReason reason, |
320 bool uncertain) { | 321 bool uncertain) { |
321 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 322 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
322 base::DictionaryValue result; | 323 base::DictionaryValue result; |
323 result.SetString("url", url.possibly_invalid_spec()); | 324 result.SetString("url", url.possibly_invalid_spec()); |
324 result.SetString("result", FilteringBehaviorToString(behavior, uncertain)); | 325 result.SetString("result", FilteringBehaviorToString(behavior, uncertain)); |
325 result.SetString("reason", FilteringBehaviorReasonToString(reason)); | 326 result.SetString("reason", FilteringBehaviorReasonToString(reason)); |
326 web_ui()->CallJavascriptFunction( | 327 web_ui()->CallJavascriptFunction( |
327 "chrome.supervised_user_internals.receiveFilteringResult", result); | 328 "chrome.supervised_user_internals.receiveFilteringResult", result); |
328 } | 329 } |
OLD | NEW |