Index: chrome/browser/content_settings/content_settings_override_provider.h |
diff --git a/chrome/browser/content_settings/content_settings_override_provider.h b/chrome/browser/content_settings/content_settings_override_provider.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7adf620bb6612de8a58b0c3bd602770fbbf2f8b9 |
--- /dev/null |
+++ b/chrome/browser/content_settings/content_settings_override_provider.h |
@@ -0,0 +1,60 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_OVERRIDE_PROVIDER_H_ |
+#define CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_OVERRIDE_PROVIDER_H_ |
+ |
+#include <map> |
+ |
+#include "base/macros.h" |
+#include "base/synchronization/lock.h" |
+#include "components/content_settings/core/common/content_settings_types.h" |
+ |
+class PrefService; |
+ |
+namespace user_prefs { |
+class PrefRegistrySyncable; |
+} |
+ |
+namespace content_settings { |
+ |
+// OverrideProvider contains if certain content settings are enabled or |
+// globally disabled. |
+class OverrideProvider { |
+ public: |
+ static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
+ |
+ OverrideProvider(PrefService* prefs, bool incognito); |
+ virtual ~OverrideProvider(); |
+ |
+ // Returns if |content_type| is enabled. If it is not enabled, the content |
+ // setting type is considered globally disabled and acts as though it is |
+ // blocked. If it is enabled, the content setting type's permission is granted |
+ // by the other providers. |
+ bool IsEnabled(ContentSettingsType content_type) const; |
+ |
+ // Sets |content_type|'s enabled status. |
+ void SetContentSetting(ContentSettingsType content_type, bool is_enabled); |
+ |
+ private: |
+ // Reads the override settings from the preferences service. |
+ void ReadOverrideSettings(); |
+ |
+ // Copies of the pref data, so that we can read it on the IO thread. |
+ std::map<ContentSettingsType, bool> override_settings_; |
+ |
+ PrefService* prefs_; |
+ |
+ bool is_incognito_; |
+ |
+ // Used around accesses to the |override_content_settings_| object to |
+ // guarantee thread safety. |
+ mutable base::Lock lock_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(OverrideProvider); |
+}; |
+ |
+} // namespace content_settings |
+ |
+#endif // CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_OVERRIDE_PROVIDER_H_ |