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

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: Allow/block flow which includes preview mode. 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"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 scoped_ptr<ListValue> blacklist) { 68 scoped_ptr<ListValue> blacklist) {
69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
70 task_runner_->PostTask(FROM_HERE, 70 task_runner_->PostTask(FROM_HERE,
71 base::Bind(&ManagedModeURLFilter::SetManualLists, 71 base::Bind(&ManagedModeURLFilter::SetManualLists,
72 base::Unretained(&url_filter_), 72 base::Unretained(&url_filter_),
73 base::Passed(&whitelist), 73 base::Passed(&whitelist),
74 base::Passed(&blacklist), 74 base::Passed(&blacklist),
75 base::Bind(&base::DoNothing))); 75 base::Bind(&base::DoNothing)));
76 } 76 }
77 77
78 void AddStringToManualWhitelist(const std::string& url) { 78 void AddURLPatternToManualWhitelist(const std::string& url) {
79 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 79 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
80 task_runner_->PostTask(FROM_HERE, 80 task_runner_->PostTask(FROM_HERE,
81 base::Bind( 81 base::Bind(&ManagedModeURLFilter::AddURLPatternToManualWhitelist,
82 &ManagedModeURLFilter::AddStringToManualWhitelist, 82 base::Unretained(&url_filter_),
83 base::Unretained(&url_filter_), 83 url,
84 url, 84 base::Bind(&base::DoNothing)));
85 base::Bind(&base::DoNothing)));
86 } 85 }
87 86
88 void AddStringToManualBlacklist(const std::string& url) { 87 void AddURLPatternToManualBlacklist(const std::string& url) {
89 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 88 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
90 task_runner_->PostTask(FROM_HERE, 89 task_runner_->PostTask(FROM_HERE,
91 base::Bind( 90 base::Bind(&ManagedModeURLFilter::AddURLPatternToManualBlacklist,
92 &ManagedModeURLFilter::AddStringToManualBlacklist, 91 base::Unretained(&url_filter_),
93 base::Unretained(&url_filter_), 92 url,
94 url, 93 base::Bind(&base::DoNothing)));
95 base::Bind(&base::DoNothing)));
96 } 94 }
97 95
98 void ShutdownOnUIThread() { 96 void ShutdownOnUIThread() {
99 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 97 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
100 bool result = task_runner_->DeleteSoon(FROM_HERE, this); 98 bool result = task_runner_->DeleteSoon(FROM_HERE, this);
101 DCHECK(result); 99 DCHECK(result);
102 } 100 }
103 101
104 private: 102 private:
105 ManagedModeURLFilter url_filter_; 103 ManagedModeURLFilter url_filter_;
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 return (*sites.begin())->category_id; 254 return (*sites.begin())->category_id;
257 } 255 }
258 256
259 // static 257 // static
260 void ManagedMode::GetCategoryNames(CategoryList* list) { 258 void ManagedMode::GetCategoryNames(CategoryList* list) {
261 ManagedModeSiteList::GetCategoryNames(list); 259 ManagedModeSiteList::GetCategoryNames(list);
262 }; 260 };
263 261
264 // static 262 // static
265 scoped_ptr<base::ListValue> ManagedMode::GetWhitelist() { 263 scoped_ptr<base::ListValue> ManagedMode::GetWhitelist() {
266 // XXX Is this ok? GetList returns a const and we need non-const 264 return GetInstance()->GetWhitelistImpl();
267 return scoped_ptr<base::ListValue>( 265 }
268 GetInstance()->managed_profile_->GetPrefs()->GetList( 266
267 scoped_ptr<base::ListValue> ManagedMode::GetWhitelistImpl() {
268 return make_scoped_ptr(
269 managed_profile_->GetPrefs()->GetList(
269 prefs::kManagedModeWhitelist)->DeepCopy()).Pass(); 270 prefs::kManagedModeWhitelist)->DeepCopy()).Pass();
Bernhard Bauer 2012/11/26 16:06:30 make_scoped_ptr() already returns a temporary, so
Sergiu 2012/11/27 15:37:34 Done.
270 } 271 }
271 272
272 // static 273 // static
273 void ManagedMode::SetWhitelist(base::ListValue* whitelist) { 274 bool ManagedMode::AddToManualWhitelist(const base::ListValue& whitelist) {
275 scoped_ptr<base::ListValue> pref_list(
276 GetInstance()->managed_profile_->GetPrefs()->GetList(
Bernhard Bauer 2012/11/26 16:06:30 I'm not very happy about accessing members from a
Sergiu 2012/11/27 15:37:34 Done.
277 prefs::kManagedModeWhitelist)->DeepCopy());
Bernhard Bauer 2012/11/26 16:06:30 You could probably use a ScopedListPrefUpdate here
Sergiu 2012/11/27 15:37:34 Done, changed to a ListPrefUpdate, which seems to
278 bool added_last_url = true;
279 // Count as ListValues don't have a .back() member.
280 unsigned int position = 0;
281 for (ListValue::const_iterator it = whitelist.begin();
282 it != whitelist.end(); ++it) {
283 std::string url_pattern;
284 (*it)->GetAsString(&url_pattern);
285
286 if (!IsInManualWhitelist(url_pattern)) {
287 pref_list->Append((*it)->DeepCopy());
288 AddURLPatternToManualWhitelist(url_pattern);
289 } else if (position == whitelist.GetSize() - 1) {
290 added_last_url = false;
291 }
292
293 ++position;
294 }
295
296 // Save the updated user preference list.
274 GetInstance()->managed_profile_->GetPrefs()->Set( 297 GetInstance()->managed_profile_->GetPrefs()->Set(
275 prefs::kManagedModeWhitelist, *whitelist); 298 prefs::kManagedModeWhitelist,
299 *pref_list);
300
301 return added_last_url;
276 } 302 }
277 303
278 // static 304 // static
305 bool ManagedMode::IsInManualWhitelist(const std::string& url_pattern) {
306 StringValue pattern(url_pattern);
307 const ListValue *list = GetInstance()->managed_profile_->GetPrefs()->GetList(
Bernhard Bauer 2012/11/26 16:06:30 Asterisk comes directly after the type, and a spac
Sergiu 2012/11/27 15:37:34 Done.
308 prefs::kManagedModeWhitelist);
309 return list->Find(pattern) != list->end();
310 }
311
312 // static
279 scoped_ptr<base::ListValue> ManagedMode::GetBlacklist() { 313 scoped_ptr<base::ListValue> ManagedMode::GetBlacklist() {
280 return scoped_ptr<base::ListValue>( 314 return scoped_ptr<base::ListValue>(
281 GetInstance()->managed_profile_->GetPrefs()->GetList( 315 GetInstance()->managed_profile_->GetPrefs()->GetList(
282 prefs::kManagedModeBlacklist)->DeepCopy()).Pass(); 316 prefs::kManagedModeBlacklist)->DeepCopy()).Pass();
283 } 317 }
284 318
285 std::string ManagedMode::GetDebugPolicyProviderName() const { 319 std::string ManagedMode::GetDebugPolicyProviderName() const {
286 // Save the string space in official builds. 320 // Save the string space in official builds.
287 #ifdef NDEBUG 321 #ifdef NDEBUG
288 NOTREACHED(); 322 NOTREACHED();
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 ui_url_filter_context_->SetDefaultFilteringBehavior(behavior); 546 ui_url_filter_context_->SetDefaultFilteringBehavior(behavior);
513 } 547 }
514 548
515 void ManagedMode::UpdateWhitelist() { 549 void ManagedMode::UpdateWhitelist() {
516 io_url_filter_context_->LoadWhitelists(GetActiveSiteLists()); 550 io_url_filter_context_->LoadWhitelists(GetActiveSiteLists());
517 ui_url_filter_context_->LoadWhitelists(GetActiveSiteLists()); 551 ui_url_filter_context_->LoadWhitelists(GetActiveSiteLists());
518 io_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist()); 552 io_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist());
519 ui_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist()); 553 ui_url_filter_context_->LoadManualLists(GetWhitelist(), GetBlacklist());
520 } 554 }
521 555
522 void ManagedMode::AddStringToManualWhitelist(const std::string& url) { 556 void ManagedMode::AddURLPatternToManualWhitelist(
523 GetInstance()->io_url_filter_context_->AddStringToManualWhitelist(url); 557 const std::string& url_pattern) {
524 GetInstance()->ui_url_filter_context_->AddStringToManualWhitelist(url); 558 GetInstance()->io_url_filter_context_->AddURLPatternToManualWhitelist(
559 url_pattern);
560 GetInstance()->ui_url_filter_context_->AddURLPatternToManualWhitelist(
561 url_pattern);
525 } 562 }
526 563
527 void ManagedMode::AddStringToManualBlacklist(const std::string& url) { 564 void ManagedMode::AddURLPatternToManualBlacklist(
528 GetInstance()->io_url_filter_context_->AddStringToManualBlacklist(url); 565 const std::string& url_pattern) {
529 GetInstance()->ui_url_filter_context_->AddStringToManualBlacklist(url); 566 GetInstance()->io_url_filter_context_->AddURLPatternToManualBlacklist(
567 url_pattern);
568 GetInstance()->ui_url_filter_context_->AddURLPatternToManualBlacklist(
569 url_pattern);
530 } 570 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698