content_settings_handler.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_CONTENT_SETTINGS_HANDLER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_OPTIONS_CONTENT_SETTINGS_HANDLER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_change_registrar.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/pepper_flash_settings_manager.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/options_ui.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/options/pepper_flash_content_settings_utils.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/content_settings.h"
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/content_settings/core/common/content_settings_types.h"
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/public/browser/host_zoom_map.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HostContentSettingsMap;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProtocolHandlerRegistry;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingsHandler : public OptionsPageUIHandler,
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                               public content::NotificationObserver,
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               public PepperFlashSettingsManager::Client {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ContentSettingsHandler();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ContentSettingsHandler();
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // OptionsPageUIHandler implementation.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetLocalizedValues(
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::DictionaryValue* localized_strings) OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitializeHandler() OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitializePage() OVERRIDE;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RegisterMessages() OVERRIDE;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content::NotificationObserver implementation.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Observe(int type,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationSource& source,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationDetails& details) OVERRIDE;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // PepperFlashSettingsManager::Client implementation.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnGetPermissionSettingsCompleted(
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uint32 request_id,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool success,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Flash_BrowserOperations_Permission default_permission,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ppapi::FlashSiteSettings& sites) OVERRIDE;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets a string identifier for the group name, for use in HTML.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static std::string ContentSettingsTypeToGroupName(ContentSettingsType type);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used to determine whether we should show links to Flash camera and
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // microphone settings.
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  struct MediaSettingsInfo {
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MediaSettingsInfo();
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ~MediaSettingsInfo();
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Cached Pepper Flash settings.
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ContentSetting flash_default_setting;
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MediaExceptions flash_exceptions;
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool flash_settings_initialized;
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    uint32_t last_flash_refresh_request_id;
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Whether the links to Flash settings pages are showed.
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool show_flash_default_link;
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool show_flash_exceptions_link;
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Cached Chrome media settings.
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ContentSetting default_setting;
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool policy_disable_audio;
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool policy_disable_video;
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool default_setting_initialized;
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MediaExceptions exceptions;
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool exceptions_initialized;
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  };
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used by ShowFlashMediaLink() to specify which link to show/hide.
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  enum LinkType {
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    DEFAULT_SETTING = 0,
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXCEPTIONS,
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Functions that call into the page -----------------------------------------
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Updates the page with the default settings (allow, ask, block, etc.)
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateSettingDefaultFromModel(ContentSettingsType type);
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Updates the media radio buttons according to the enabled split prefs.
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateMediaSettingsView();
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds the specific content setting type exceptions table.
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateExceptionsViewFromModel(ContentSettingsType type);
9723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds the specific content setting type exceptions
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // OTR table.
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateOTRExceptionsViewFromModel(ContentSettingsType type);
10123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds all the exceptions tables in the page (both normal
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and OTR tables).
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateAllExceptionsViewsFromModel();
10523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // As above, but only OTR tables.
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateAllOTRExceptionsViewsFromModel();
10823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds just the geolocation exception table.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateGeolocationExceptionsView();
11123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds just the desktop notification exception table.
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateNotificationExceptionsView();
11423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Clobbers and rebuilds just the Media device exception table.
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateMediaExceptionsView();
11723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
118a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Clobbers and rebuilds just the MIDI SysEx exception table.
119a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  void UpdateMIDISysExExceptionsView();
12023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
12123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Clobbers and rebuilds just the zoom levels exception table.
12223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void UpdateZoomLevelsExceptionsView();
12323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds an exception table that's managed by the host content
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // settings map.
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateExceptionsViewFromHostContentSettingsMap(ContentSettingsType type);
12723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // As above, but acts on the OTR table for the content setting type.
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateExceptionsViewFromOTRHostContentSettingsMap(
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ContentSettingsType type);
13123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Updates the radio buttons for enabling / disabling handlers.
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateHandlersEnabledRadios();
13423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
13523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one geolocation exception. |args| contains the parameters passed to
13623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // RemoveException().
13723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveGeolocationException(const base::ListValue* args);
13823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
13923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one notification exception. |args| contains the parameters passed
14023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // to RemoveException().
14123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveNotificationException(const base::ListValue* args);
14223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
14323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one media camera and microphone exception. |args| contains the
14423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // parameters passed to RemoveException().
14523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveMediaException(const base::ListValue* args);
14623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
14723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one exception of |type| from the host content settings map. |args|
14823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // contains the parameters passed to RemoveException().
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveExceptionFromHostContentSettingsMap(
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::ListValue* args,
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      ContentSettingsType type);
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one zoom level exception. |args| contains the parameters passed to
15423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // RemoveException().
15523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveZoomLevelException(const base::ListValue* args);
15623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Callbacks used by the page ------------------------------------------------
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets the default value for a specific content type. |args| includes the
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content type and a string describing the new default the user has
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // chosen.
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetContentFilter(const base::ListValue* args);
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Removes the given row from the table. The first entry in |args| is the
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content type, and the rest of the arguments depend on the content type
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to be removed.
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveException(const base::ListValue* args);
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Changes the value of an exception. Called after the user is done editing an
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // exception.
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetException(const base::ListValue* args);
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called to decide whether a given pattern is valid, or if it should be
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // rejected. Called while the user is editing an exception pattern.
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void CheckExceptionPatternValidity(const base::ListValue* args);
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Utility functions ---------------------------------------------------------
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Applies content settings whitelists to reduce breakage / user confusion.
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ApplyWhitelist(ContentSettingsType content_type,
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      ContentSetting default_setting);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the HostContentSettingsMap for the normal profile.
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostContentSettingsMap* GetContentSettingsMap();
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the HostContentSettingsMap for the incognito profile, or NULL if there
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is no active incognito session.
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostContentSettingsMap* GetOTRContentSettingsMap();
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the default setting in string form. If |provider_id| is not NULL, the
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // id of the provider which provided the default setting is assigned to it.
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string GetSettingDefaultFromModel(ContentSettingsType type,
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         std::string* provider_id);
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the ProtocolHandlerRegistry for the normal profile.
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProtocolHandlerRegistry* GetProtocolHandlerRegistry();
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void RefreshFlashMediaSettings();
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Fills in |exceptions| with Values for the given |type| from |map|.
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void GetExceptionsFromHostContentSettingsMap(
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const HostContentSettingsMap* map,
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ContentSettingsType type,
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::ListValue* exceptions);
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnPepperFlashPrefChanged();
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // content::HostZoomMap subscription.
20923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void OnZoomLevelChanged(const content::HostZoomMap::ZoomLevelChange& change);
21023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void ShowFlashMediaLink(LinkType link_type, bool show);
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateFlashMediaLinksVisibility();
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void UpdateProtectedContentExceptionsButton();
216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Member variables ---------------------------------------------------------
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::NotificationRegistrar notification_registrar_;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefChangeRegistrar pref_change_registrar_;
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<PepperFlashSettingsManager> flash_settings_manager_;
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MediaSettingsInfo media_settings_;
22323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  scoped_ptr<content::HostZoomMap::Subscription> host_zoom_map_subscription_;
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ContentSettingsHandler);
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace options
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_CONTENT_SETTINGS_HANDLER_H_
231