#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
+#include "base/scoped_observer.h"
#include "chrome/browser/content_settings/content_settings_usages_state.h"
#include "chrome/browser/content_settings/local_shared_objects_container.h"
#include "chrome/browser/media/media_stream_devices_controller.h"
-#include "chrome/common/content_settings.h"
-#include "chrome/common/content_settings_types.h"
#include "chrome/common/custom_handlers/protocol_handler.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
+#include "components/content_settings/core/browser/content_settings_observer.h"
+#include "components/content_settings/core/common/content_settings.h"
+#include "components/content_settings/core/common/content_settings_types.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "content/public/common/media_stream_request.h"
#include "net/cookies/canonical_cookie.h"
class CookiesTreeModel;
+class HostContentSettingsMap;
class Profile;
namespace content {
// which types of content were accessed and blocked.
class TabSpecificContentSettings
: public content::WebContentsObserver,
- public content::NotificationObserver,
+ public content_settings::Observer,
public content::WebContentsUserData<TabSpecificContentSettings> {
public:
enum MicrophoneCameraState {
// content::WebContentsObserver overrides.
virtual void RenderFrameForInterstitialPageCreated(
content::RenderFrameHost* render_frame_host) OVERRIDE;
- virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
+ virtual bool OnMessageReceived(
+ const IPC::Message& message,
+ content::RenderFrameHost* render_frame_host) OVERRIDE;
virtual void DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) OVERRIDE;
virtual void DidStartProvisionalLoadForFrame(
- int64 frame_id,
- int64 parent_frame_id,
- bool is_main_frame,
+ content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
bool is_error_page,
- bool is_iframe_srcdoc,
- content::RenderViewHost* render_view_host) OVERRIDE;
+ bool is_iframe_srcdoc) OVERRIDE;
virtual void AppCacheAccessed(const GURL& manifest_url,
bool blocked_by_policy) OVERRIDE;
explicit TabSpecificContentSettings(content::WebContents* tab);
friend class content::WebContentsUserData<TabSpecificContentSettings>;
- // content::NotificationObserver implementation.
- virtual void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE;
+ // content_settings::Observer implementation.
+ virtual void OnContentSettingChanged(
+ const ContentSettingsPattern& primary_pattern,
+ const ContentSettingsPattern& secondary_pattern,
+ ContentSettingsType content_type,
+ std::string resource_identifier) OVERRIDE;
// Notifies all registered |SiteDataObserver|s.
void NotifySiteDataObservers();
// Stores whether the user can load blocked plugins on this page.
bool load_plugins_link_enabled_;
- content::NotificationRegistrar registrar_;
-
// The origin of the media stream request. Note that we only support handling
// settings for one request per tab. The latest request's origin will be
// stored here. http://crbug.com/259794
std::string media_stream_requested_audio_device_;
std::string media_stream_requested_video_device_;
+ // Observer to watch for content settings changed.
+ ScopedObserver<HostContentSettingsMap, content_settings::Observer> observer_;
+
DISALLOW_COPY_AND_ASSIGN(TabSpecificContentSettings);
};