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"
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/scoped_observer.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/pepper_flash_settings_manager.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/options_ui.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/options/pepper_flash_content_settings_utils.h"
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/browser/content_settings_observer.h"
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/common/content_settings.h"
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/content_settings/core/common/content_settings_types.h"
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/public/browser/host_zoom_map.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HostContentSettingsMap;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProtocolHandlerRegistry;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingsHandler : public OptionsPageUIHandler,
2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                               public content_settings::Observer,
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                               public content::NotificationObserver,
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               public PepperFlashSettingsManager::Client {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ContentSettingsHandler();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ContentSettingsHandler();
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // OptionsPageUIHandler implementation.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetLocalizedValues(
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::DictionaryValue* localized_strings) OVERRIDE;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitializeHandler() OVERRIDE;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitializePage() OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RegisterMessages() OVERRIDE;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // content_settings::Observer implementation.
4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnContentSettingChanged(
4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      const ContentSettingsPattern& primary_pattern,
4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      const ContentSettingsPattern& secondary_pattern,
4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      ContentSettingsType content_type,
4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      std::string resource_identifier) OVERRIDE;
4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content::NotificationObserver implementation.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Observe(int type,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationSource& source,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationDetails& details) OVERRIDE;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // PepperFlashSettingsManager::Client implementation.
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnGetPermissionSettingsCompleted(
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uint32 request_id,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool success,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Flash_BrowserOperations_Permission default_permission,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ppapi::FlashSiteSettings& sites) OVERRIDE;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets a string identifier for the group name, for use in HTML.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static std::string ContentSettingsTypeToGroupName(ContentSettingsType type);
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used to determine whether we should show links to Flash camera and
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // microphone settings.
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  struct MediaSettingsInfo {
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MediaSettingsInfo();
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ~MediaSettingsInfo();
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Cached Pepper Flash settings.
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ContentSetting flash_default_setting;
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MediaExceptions flash_exceptions;
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool flash_settings_initialized;
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    uint32_t last_flash_refresh_request_id;
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Whether the links to Flash settings pages are showed.
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool show_flash_default_link;
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool show_flash_exceptions_link;
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Cached Chrome media settings.
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ContentSetting default_setting;
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool policy_disable_audio;
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool policy_disable_video;
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool default_setting_initialized;
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MediaExceptions exceptions;
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool exceptions_initialized;
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  };
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used by ShowFlashMediaLink() to specify which link to show/hide.
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  enum LinkType {
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    DEFAULT_SETTING = 0,
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXCEPTIONS,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Functions that call into the page -----------------------------------------
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Updates the page with the default settings (allow, ask, block, etc.)
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateSettingDefaultFromModel(ContentSettingsType type);
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Updates the media radio buttons according to the enabled split prefs.
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateMediaSettingsView();
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds the specific content setting type exceptions table.
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateExceptionsViewFromModel(ContentSettingsType type);
10723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds the specific content setting type exceptions
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // OTR table.
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateOTRExceptionsViewFromModel(ContentSettingsType type);
11123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds all the exceptions tables in the page (both normal
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and OTR tables).
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateAllExceptionsViewsFromModel();
11523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // As above, but only OTR tables.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateAllOTRExceptionsViewsFromModel();
11823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds just the geolocation exception table.
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateGeolocationExceptionsView();
12123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds just the desktop notification exception table.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateNotificationExceptionsView();
12423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Clobbers and rebuilds just the Media device exception table.
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateMediaExceptionsView();
12723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
128a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Clobbers and rebuilds just the MIDI SysEx exception table.
129a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  void UpdateMIDISysExExceptionsView();
13023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
13123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Clobbers and rebuilds just the zoom levels exception table.
13223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void UpdateZoomLevelsExceptionsView();
13323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clobbers and rebuilds an exception table that's managed by the host content
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // settings map.
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateExceptionsViewFromHostContentSettingsMap(ContentSettingsType type);
13723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // As above, but acts on the OTR table for the content setting type.
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateExceptionsViewFromOTRHostContentSettingsMap(
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ContentSettingsType type);
14123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Updates the radio buttons for enabling / disabling handlers.
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateHandlersEnabledRadios();
14423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
14523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one geolocation exception. |args| contains the parameters passed to
14623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // RemoveException().
14723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveGeolocationException(const base::ListValue* args);
14823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
14923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one notification exception. |args| contains the parameters passed
15023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // to RemoveException().
15123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveNotificationException(const base::ListValue* args);
15223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
15323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one media camera and microphone exception. |args| contains the
15423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // parameters passed to RemoveException().
15523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveMediaException(const base::ListValue* args);
15623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
15723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one exception of |type| from the host content settings map. |args|
15823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // contains the parameters passed to RemoveException().
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveExceptionFromHostContentSettingsMap(
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::ListValue* args,
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      ContentSettingsType type);
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Removes one zoom level exception. |args| contains the parameters passed to
16423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // RemoveException().
16523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RemoveZoomLevelException(const base::ListValue* args);
16623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Callbacks used by the page ------------------------------------------------
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets the default value for a specific content type. |args| includes the
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content type and a string describing the new default the user has
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // chosen.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetContentFilter(const base::ListValue* args);
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Removes the given row from the table. The first entry in |args| is the
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content type, and the rest of the arguments depend on the content type
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to be removed.
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveException(const base::ListValue* args);
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Changes the value of an exception. Called after the user is done editing an
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // exception.
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetException(const base::ListValue* args);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called to decide whether a given pattern is valid, or if it should be
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // rejected. Called while the user is editing an exception pattern.
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void CheckExceptionPatternValidity(const base::ListValue* args);
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Utility functions ---------------------------------------------------------
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Applies content settings whitelists to reduce breakage / user confusion.
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ApplyWhitelist(ContentSettingsType content_type,
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      ContentSetting default_setting);
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the HostContentSettingsMap for the normal profile.
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostContentSettingsMap* GetContentSettingsMap();
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the HostContentSettingsMap for the incognito profile, or NULL if there
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is no active incognito session.
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostContentSettingsMap* GetOTRContentSettingsMap();
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the default setting in string form. If |provider_id| is not NULL, the
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // id of the provider which provided the default setting is assigned to it.
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string GetSettingDefaultFromModel(ContentSettingsType type,
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         std::string* provider_id);
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the ProtocolHandlerRegistry for the normal profile.
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProtocolHandlerRegistry* GetProtocolHandlerRegistry();
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void RefreshFlashMediaSettings();
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Fills in |exceptions| with Values for the given |type| from |map|.
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void GetExceptionsFromHostContentSettingsMap(
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const HostContentSettingsMap* map,
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ContentSettingsType type,
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::ListValue* exceptions);
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnPepperFlashPrefChanged();
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // content::HostZoomMap subscription.
21923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void OnZoomLevelChanged(const content::HostZoomMap::ZoomLevelChange& change);
22023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void ShowFlashMediaLink(LinkType link_type, bool show);
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateFlashMediaLinksVisibility();
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void UpdateProtectedContentExceptionsButton();
226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Member variables ---------------------------------------------------------
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::NotificationRegistrar notification_registrar_;
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefChangeRegistrar pref_change_registrar_;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<PepperFlashSettingsManager> flash_settings_manager_;
2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MediaSettingsInfo media_settings_;
23323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  scoped_ptr<content::HostZoomMap::Subscription> host_zoom_map_subscription_;
23403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  ScopedObserver<HostContentSettingsMap, content_settings::Observer> observer_;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ContentSettingsHandler);
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace options
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_CONTENT_SETTINGS_HANDLER_H_
242