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