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

Side by Side Diff: chrome/browser/managed_mode/managed_mode.cc

Issue 11299035: Support manual (white|black)list, previewing and allowing after interstitial (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes according to comments. Created 8 years 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 | Annotate | Revision Log
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/managed_mode/managed_mode.h" 5 #include "chrome/browser/managed_mode/managed_mode.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/prefs/public/pref_change_registrar.h" 8 #include "base/prefs/public/pref_change_registrar.h"
9 #include "base/sequenced_task_runner.h" 9 #include "base/sequenced_task_runner.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
11 #include "chrome/browser/extensions/extension_service.h" 11 #include "chrome/browser/extensions/extension_service.h"
12 #include "chrome/browser/extensions/extension_system.h" 12 #include "chrome/browser/extensions/extension_system.h"
13 #include "chrome/browser/managed_mode/managed_mode_site_list.h" 13 #include "chrome/browser/managed_mode/managed_mode_site_list.h"
14 #include "chrome/browser/managed_mode/managed_mode_url_filter.h" 14 #include "chrome/browser/managed_mode/managed_mode_url_filter.h"
15 #include "chrome/browser/policy/url_blacklist_manager.h" 15 #include "chrome/browser/policy/url_blacklist_manager.h"
16 #include "chrome/browser/prefs/pref_service.h" 16 #include "chrome/browser/prefs/pref_service.h"
17 #include "chrome/browser/prefs/scoped_user_pref_update.h"
17 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/browser/ui/browser.h" 19 #include "chrome/browser/ui/browser.h"
19 #include "chrome/browser/ui/browser_list.h" 20 #include "chrome/browser/ui/browser_list.h"
20 #include "chrome/browser/ui/browser_window.h" 21 #include "chrome/browser/ui/browser_window.h"
21 #include "chrome/common/chrome_notification_types.h" 22 #include "chrome/common/chrome_notification_types.h"
22 #include "chrome/common/chrome_switches.h" 23 #include "chrome/common/chrome_switches.h"
23 #include "chrome/common/extensions/extension_set.h" 24 #include "chrome/common/extensions/extension_set.h"
24 #include "chrome/common/pref_names.h" 25 #include "chrome/common/pref_names.h"
25 #include "content/public/browser/browser_thread.h" 26 #include "content/public/browser/browser_thread.h"
26 #include "content/public/browser/notification_service.h" 27 #include "content/public/browser/notification_service.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 scoped_ptr<ListValue> blacklist) { 69 scoped_ptr<ListValue> blacklist) {
69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 70 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
70 task_runner_->PostTask(FROM_HERE, 71 task_runner_->PostTask(FROM_HERE,
71 base::Bind(&ManagedModeURLFilter::SetManualLists, 72 base::Bind(&ManagedModeURLFilter::SetManualLists,
72 base::Unretained(&url_filter_), 73 base::Unretained(&url_filter_),
73 base::Passed(&whitelist), 74 base::Passed(&whitelist),
74 base::Passed(&blacklist), 75 base::Passed(&blacklist),
75 base::Bind(&base::DoNothing))); 76 base::Bind(&base::DoNothing)));
76 } 77 }
77 78
78 void AddStringToManualWhitelist(const std::string& url) { 79 void AddURLPatternToManualWhitelist(const std::string& url) {
79 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 80 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
80 task_runner_->PostTask(FROM_HERE, 81 task_runner_->PostTask(FROM_HERE,
81 base::Bind( 82 base::Bind(&ManagedModeURLFilter::AddURLPatternToManualWhitelist,
82 &ManagedModeURLFilter::AddStringToManualWhitelist, 83 base::Unretained(&url_filter_),
83 base::Unretained(&url_filter_), 84 url,
84 url, 85 base::Bind(&base::DoNothing)));
85 base::Bind(&base::DoNothing)));
86 } 86 }
87 87
88 void AddStringToManualBlacklist(const std::string& url) { 88 void AddURLPatternToManualBlacklist(const std::string& url) {
89 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 89 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
90 task_runner_->PostTask(FROM_HERE, 90 task_runner_->PostTask(FROM_HERE,
91 base::Bind( 91 base::Bind(&ManagedModeURLFilter::AddURLPatternToManualBlacklist,
92 &ManagedModeURLFilter::AddStringToManualBlacklist, 92 base::Unretained(&url_filter_),
93 base::Unretained(&url_filter_), 93 url,
94 url, 94 base::Bind(&base::DoNothing)));
95 base::Bind(&base::DoNothing)));
96 } 95 }
97 96
98 void ShutdownOnUIThread() { 97 void ShutdownOnUIThread() {
99 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 98 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
100 bool result = task_runner_->DeleteSoon(FROM_HERE, this); 99 bool result = task_runner_->DeleteSoon(FROM_HERE, this);
101 DCHECK(result); 100 DCHECK(result);
102 } 101 }
103 102
104 private: 103 private:
105 ManagedModeURLFilter url_filter_; 104 ManagedModeURLFilter url_filter_;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 return CATEGORY_NOT_ON_LIST; 253 return CATEGORY_NOT_ON_LIST;
255 254
256 return (*sites.begin())->category_id; 255 return (*sites.begin())->category_id;
257 } 256 }
258 257
259 // static 258 // static
260 void ManagedMode::GetCategoryNames(CategoryList* list) { 259 void ManagedMode::GetCategoryNames(CategoryList* list) {
261 ManagedModeSiteList::GetCategoryNames(list); 260 ManagedModeSiteList::GetCategoryNames(list);
262 }; 261 };
263 262
264 // static 263 bool ManagedMode::AddToManualWhitelist(const base::ListValue& whitelist) {
265 scoped_ptr<base::ListValue> ManagedMode::GetWhitelist() { 264 return GetInstance()->AddToManualWhitelistImpl(whitelist);
266 // XXX Is this ok? GetList returns a const and we need non-const
267 return scoped_ptr<base::ListValue>(
268 GetInstance()->managed_profile_->GetPrefs()->GetList(
269 prefs::kManagedModeWhitelist)->DeepCopy()).Pass();
270 } 265 }
271 266
272 // static 267 // static
Bernhard Bauer 2012/11/27 18:44:46 This method isn't static. The one above is :-p
Sergiu 2012/11/28 12:53:25 Done.
273 void ManagedMode::SetWhitelist(base::ListValue* whitelist) { 268 bool ManagedMode::AddToManualWhitelistImpl(const base::ListValue& whitelist) {
274 GetInstance()->managed_profile_->GetPrefs()->Set( 269 ListPrefUpdate pref_update(managed_profile_->GetPrefs(),
275 prefs::kManagedModeWhitelist, *whitelist); 270 prefs::kManagedModeWhitelist);
271 ListValue* pref_whitelist = pref_update.Get();
272
273 bool added_last_url = true;
274 // Count as ListValues don't have a .back() member.
275 unsigned int position = 0;
Bernhard Bauer 2012/11/27 18:44:46 Hm, we might simply do a regular for-loop with a s
Sergiu 2012/11/28 12:53:25 Done.
276 for (ListValue::const_iterator it = whitelist.begin();
277 it != whitelist.end(); ++it) {
278 std::string url_pattern;
279 (*it)->GetAsString(&url_pattern);
280
281 if (!IsInManualWhitelist(url_pattern)) {
282 pref_whitelist->Append((*it)->DeepCopy());
283 AddURLPatternToManualWhitelist(url_pattern);
284 } else if (position == whitelist.GetSize() - 1) {
285 added_last_url = false;
286 }
287 ++position;
288 }
289 return added_last_url;
276 } 290 }
277 291
278 // static 292 // static
293 bool ManagedMode::IsInManualWhitelist(const std::string& url_pattern) {
294 return GetInstance()->IsInManualWhitelistImpl(url_pattern);
295 }
296
297 bool ManagedMode::IsInManualWhitelistImpl(const std::string& url_pattern) {
298 StringValue pattern(url_pattern);
299 const ListValue* list = managed_profile_->GetPrefs()->GetList(
300 prefs::kManagedModeWhitelist);
301 return list->Find(pattern) != list->end();
302 }
303
304 // static
279 scoped_ptr<base::ListValue> ManagedMode::GetBlacklist() { 305 scoped_ptr<base::ListValue> ManagedMode::GetBlacklist() {
280 return scoped_ptr<base::ListValue>( 306 return scoped_ptr<base::ListValue>(
281 GetInstance()->managed_profile_->GetPrefs()->GetList( 307 GetInstance()->managed_profile_->GetPrefs()->GetList(
282 prefs::kManagedModeBlacklist)->DeepCopy()).Pass(); 308 prefs::kManagedModeBlacklist)->DeepCopy()).Pass();
283 } 309 }
284 310
285 std::string ManagedMode::GetDebugPolicyProviderName() const { 311 std::string ManagedMode::GetDebugPolicyProviderName() const {
286 // Save the string space in official builds. 312 // Save the string space in official builds.
287 #ifdef NDEBUG 313 #ifdef NDEBUG
288 NOTREACHED(); 314 NOTREACHED();
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 ui_url_filter_context_->SetDefaultFilteringBehavior(behavior); 538 ui_url_filter_context_->SetDefaultFilteringBehavior(behavior);
513 } 539 }
514 540
515 void ManagedMode::UpdateWhitelist() { 541 void ManagedMode::UpdateWhitelist() {
516 io_url_filter_context_->LoadWhitelists(GetActiveSiteLists()); 542 io_url_filter_context_->LoadWhitelists(GetActiveSiteLists());
517 ui_url_filter_context_->LoadWhitelists(GetActiveSiteLists()); 543 ui_url_filter_context_->LoadWhitelists(GetActiveSiteLists());
518 io_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist()); 544 io_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist());
519 ui_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist()); 545 ui_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist());
520 } 546 }
521 547
522 void ManagedMode::AddStringToManualWhitelist(const std::string& url) { 548 scoped_ptr<base::ListValue> ManagedMode::GetWhitelist() {
523 GetInstance()->io_url_filter_context_->AddStringToManualWhitelist(url); 549 return make_scoped_ptr(
524 GetInstance()->ui_url_filter_context_->AddStringToManualWhitelist(url); 550 managed_profile_->GetPrefs()->GetList(
551 prefs::kManagedModeWhitelist)->DeepCopy());
525 } 552 }
526 553
527 void ManagedMode::AddStringToManualBlacklist(const std::string& url) { 554
528 GetInstance()->io_url_filter_context_->AddStringToManualBlacklist(url); 555 void ManagedMode::AddURLPatternToManualWhitelist(
529 GetInstance()->ui_url_filter_context_->AddStringToManualBlacklist(url); 556 const std::string& url_pattern) {
557 GetInstance()->io_url_filter_context_->AddURLPatternToManualWhitelist(
558 url_pattern);
559 GetInstance()->ui_url_filter_context_->AddURLPatternToManualWhitelist(
560 url_pattern);
530 } 561 }
562
563 void ManagedMode::AddURLPatternToManualBlacklist(
564 const std::string& url_pattern) {
565 GetInstance()->io_url_filter_context_->AddURLPatternToManualBlacklist(
566 url_pattern);
567 GetInstance()->ui_url_filter_context_->AddURLPatternToManualBlacklist(
568 url_pattern);
569 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698