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

Side by Side Diff: chrome/browser/content_settings/content_settings_policy_provider.cc

Issue 7344008: Make the hcsm and its providers communicate via an observer interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/content_settings/content_settings_policy_provider.h" 5 #include "chrome/browser/content_settings/content_settings_policy_provider.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 prefs->RegisterListPref(prefs::kManagedPluginsAllowedForUrls, 270 prefs->RegisterListPref(prefs::kManagedPluginsAllowedForUrls,
271 PrefService::UNSYNCABLE_PREF); 271 PrefService::UNSYNCABLE_PREF);
272 prefs->RegisterListPref(prefs::kManagedPluginsBlockedForUrls, 272 prefs->RegisterListPref(prefs::kManagedPluginsBlockedForUrls,
273 PrefService::UNSYNCABLE_PREF); 273 PrefService::UNSYNCABLE_PREF);
274 prefs->RegisterListPref(prefs::kManagedPopupsAllowedForUrls, 274 prefs->RegisterListPref(prefs::kManagedPopupsAllowedForUrls,
275 PrefService::UNSYNCABLE_PREF); 275 PrefService::UNSYNCABLE_PREF);
276 prefs->RegisterListPref(prefs::kManagedPopupsBlockedForUrls, 276 prefs->RegisterListPref(prefs::kManagedPopupsBlockedForUrls,
277 PrefService::UNSYNCABLE_PREF); 277 PrefService::UNSYNCABLE_PREF);
278 } 278 }
279 279
280 PolicyProvider::PolicyProvider(HostContentSettingsMap* map, 280 PolicyProvider::PolicyProvider(Observer* observer,
281 PrefService* prefs, 281 PrefService* prefs,
282 DefaultProviderInterface* default_provider) 282 DefaultProviderInterface* default_provider)
283 : host_content_settings_map_(map), 283 : prefs_(prefs),
284 prefs_(prefs),
285 default_provider_(default_provider) { 284 default_provider_(default_provider) {
285 AddObserver(observer);
286 ReadManagedContentSettings(false); 286 ReadManagedContentSettings(false);
287 287
288 pref_change_registrar_.Init(prefs_); 288 pref_change_registrar_.Init(prefs_);
289 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, this); 289 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, this);
290 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, this); 290 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, this);
291 pref_change_registrar_.Add(prefs::kManagedCookiesSessionOnlyForUrls, this); 291 pref_change_registrar_.Add(prefs::kManagedCookiesSessionOnlyForUrls, this);
292 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, this); 292 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, this);
293 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, this); 293 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, this);
294 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, this); 294 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, this);
295 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, this); 295 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, this);
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 } 421 }
422 } 422 }
423 } 423 }
424 424
425 void PolicyProvider::ClearAllContentSettingsRules( 425 void PolicyProvider::ClearAllContentSettingsRules(
426 ContentSettingsType content_type) { 426 ContentSettingsType content_type) {
427 } 427 }
428 428
429 void PolicyProvider::ShutdownOnUIThread() { 429 void PolicyProvider::ShutdownOnUIThread() {
430 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 430 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
431 RemoveAllObserver();
431 if (!prefs_) 432 if (!prefs_)
432 return; 433 return;
433 pref_change_registrar_.RemoveAll(); 434 pref_change_registrar_.RemoveAll();
434 prefs_ = NULL; 435 prefs_ = NULL;
435 host_content_settings_map_ = NULL;
436 }
437
438 void PolicyProvider::NotifyObservers(
439 const ContentSettingsDetails& details) {
440 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
441 if (host_content_settings_map_ == NULL)
442 return;
443 NotificationService::current()->Notify(
444 chrome::NOTIFICATION_CONTENT_SETTINGS_CHANGED,
445 Source<HostContentSettingsMap>(host_content_settings_map_),
446 Details<const ContentSettingsDetails>(&details));
447 } 436 }
448 437
449 void PolicyProvider::Observe(int type, 438 void PolicyProvider::Observe(int type,
450 const NotificationSource& source, 439 const NotificationSource& source,
451 const NotificationDetails& details) { 440 const NotificationDetails& details) {
452 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 441 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
453 442
454 if (type == chrome::NOTIFICATION_PREF_CHANGED) { 443 if (type == chrome::NOTIFICATION_PREF_CHANGED) {
455 DCHECK_EQ(prefs_, Source<PrefService>(source).ptr()); 444 DCHECK_EQ(prefs_, Source<PrefService>(source).ptr());
456 std::string* name = Details<std::string>(details).ptr(); 445 std::string* name = Details<std::string>(details).ptr();
(...skipping 14 matching lines...) Expand all
471 CONTENT_SETTINGS_TYPE_DEFAULT, 460 CONTENT_SETTINGS_TYPE_DEFAULT,
472 std::string()); 461 std::string());
473 NotifyObservers(details); 462 NotifyObservers(details);
474 } 463 }
475 } else { 464 } else {
476 NOTREACHED() << "Unexpected notification"; 465 NOTREACHED() << "Unexpected notification";
477 } 466 }
478 } 467 }
479 468
480 } // namespace content_settings 469 } // namespace content_settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698