content_settings_handler.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/content_settings_types.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HostContentSettingsMap; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProtocolHandlerRegistry; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingsHandler : public OptionsPageUIHandler, 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public content::NotificationObserver, 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public PepperFlashSettingsManager::Client { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsHandler(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ContentSettingsHandler(); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OptionsPageUIHandler implementation. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetLocalizedValues( 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::DictionaryValue* localized_strings) OVERRIDE; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InitializeHandler() OVERRIDE; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InitializePage() OVERRIDE; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RegisterMessages() OVERRIDE; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::NotificationObserver implementation. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Observe(int type, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PepperFlashSettingsManager::Client implementation. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnGetPermissionSettingsCompleted( 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 request_id, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool success, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_BrowserOperations_Permission default_permission, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ppapi::FlashSiteSettings& sites) OVERRIDE; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets a string identifier for the group name, for use in HTML. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static std::string ContentSettingsTypeToGroupName(ContentSettingsType type); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Used to determine whether we should show links to Flash camera and 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // microphone settings. 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct MediaSettingsInfo { 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaSettingsInfo(); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~MediaSettingsInfo(); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Cached Pepper Flash settings. 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentSetting flash_default_setting; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaExceptions flash_exceptions; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool flash_settings_initialized; 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) uint32_t last_flash_refresh_request_id; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Whether the links to Flash settings pages are showed. 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool show_flash_default_link; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool show_flash_exceptions_link; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Cached Chrome media settings. 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentSetting default_setting; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool policy_disable_audio; 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool policy_disable_video; 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool default_setting_initialized; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaExceptions exceptions; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool exceptions_initialized; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Used by ShowFlashMediaLink() to specify which link to show/hide. 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum LinkType { 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DEFAULT_SETTING = 0, 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXCEPTIONS, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Functions that call into the page ----------------------------------------- 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the page with the default settings (allow, ask, block, etc.) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateSettingDefaultFromModel(ContentSettingsType type); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Updates the media radio buttons according to the enabled split prefs. 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateMediaSettingsView(); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clobbers and rebuilds the specific content setting type exceptions table. 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateExceptionsViewFromModel(ContentSettingsType type); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clobbers and rebuilds the specific content setting type exceptions 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OTR table. 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateOTRExceptionsViewFromModel(ContentSettingsType type); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clobbers and rebuilds all the exceptions tables in the page (both normal 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and OTR tables). 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateAllExceptionsViewsFromModel(); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // As above, but only OTR tables. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateAllOTRExceptionsViewsFromModel(); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clobbers and rebuilds just the geolocation exception table. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateGeolocationExceptionsView(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clobbers and rebuilds just the desktop notification exception table. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateNotificationExceptionsView(); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Clobbers and rebuilds just the Media device exception table. 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateMediaExceptionsView(); 110a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Clobbers and rebuilds just the MIDI SysEx exception table. 111a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void UpdateMIDISysExExceptionsView(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clobbers and rebuilds an exception table that's managed by the host content 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // settings map. 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateExceptionsViewFromHostContentSettingsMap(ContentSettingsType type); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // As above, but acts on the OTR table for the content setting type. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateExceptionsViewFromOTRHostContentSettingsMap( 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType type); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the radio buttons for enabling / disabling handlers. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateHandlersEnabledRadios(); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removes one geolocation exception. 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveGeolocationException(const base::ListValue* args, 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t arg_index); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removes one notification exception. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveNotificationException(const base::ListValue* args, 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t arg_index); 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Removes one media camera and microphone exception. 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveMediaException(const base::ListValue* args, size_t arg_index); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removes one exception of |type| from the host content settings map. 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveExceptionFromHostContentSettingsMap( 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::ListValue* args, 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t arg_index, 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentSettingsType type); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callbacks used by the page ------------------------------------------------ 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the default value for a specific content type. |args| includes the 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content type and a string describing the new default the user has 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // chosen. 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetContentFilter(const base::ListValue* args); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removes the given row from the table. The first entry in |args| is the 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content type, and the rest of the arguments depend on the content type 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to be removed. 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveException(const base::ListValue* args); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Changes the value of an exception. Called after the user is done editing an 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // exception. 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetException(const base::ListValue* args); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called to decide whether a given pattern is valid, or if it should be 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // rejected. Called while the user is editing an exception pattern. 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CheckExceptionPatternValidity(const base::ListValue* args); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Utility functions --------------------------------------------------------- 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Applies content settings whitelists to reduce breakage / user confusion. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ApplyWhitelist(ContentSettingsType content_type, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSetting default_setting); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the HostContentSettingsMap for the normal profile. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostContentSettingsMap* GetContentSettingsMap(); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the HostContentSettingsMap for the incognito profile, or NULL if there 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is no active incognito session. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostContentSettingsMap* GetOTRContentSettingsMap(); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the default setting in string form. If |provider_id| is not NULL, the 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // id of the provider which provided the default setting is assigned to it. 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetSettingDefaultFromModel(ContentSettingsType type, 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string* provider_id); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the ProtocolHandlerRegistry for the normal profile. 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProtocolHandlerRegistry* GetProtocolHandlerRegistry(); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RefreshFlashMediaSettings(); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Fills in |exceptions| with Values for the given |type| from |map|. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetExceptionsFromHostContentSettingsMap( 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const HostContentSettingsMap* map, 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType type, 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ListValue* exceptions); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnPepperFlashPrefChanged(); 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ShowFlashMediaLink(LinkType link_type, bool show); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateFlashMediaLinksVisibility(); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 189a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void UpdateProtectedContentExceptionsButton(); 190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Member variables --------------------------------------------------------- 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar notification_registrar_; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefChangeRegistrar pref_change_registrar_; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PepperFlashSettingsManager> flash_settings_manager_; 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaSettingsInfo media_settings_; 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ContentSettingsHandler); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace options 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_CONTENT_SETTINGS_HANDLER_H_ 204