| 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_
|
|
|