1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_WEBSITE_SETTINGS_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_OPTIONS_WEBSITE_SETTINGS_HANDLER_H_
10 #include "base/basictypes.h"
11 #include "base/macros.h"
12 #include "base/scoped_observer.h"
13 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h"
14 #include "chrome/browser/content_settings/host_content_settings_map.h"
15 #include "chrome/browser/ui/webui/options/options_ui.h"
16 #include "components/content_settings/core/browser/content_settings_observer.h"
17 #include "components/power/origin_power_map.h"
21 class WebsiteSettingsHandler
: public content_settings::Observer
,
22 public OptionsPageUIHandler
{
24 WebsiteSettingsHandler();
25 virtual ~WebsiteSettingsHandler();
27 typedef std::list
<BrowsingDataLocalStorageHelper::LocalStorageInfo
>
30 // OptionsPageUIHandler implementation.
31 virtual void GetLocalizedValues(
32 base::DictionaryValue
* localized_strings
) override
;
33 virtual void InitializeHandler() override
;
34 virtual void RegisterMessages() override
;
36 // content_settings::Observer implementation.
37 virtual void OnContentSettingChanged(
38 const ContentSettingsPattern
& primary_pattern
,
39 const ContentSettingsPattern
& secondary_pattern
,
40 ContentSettingsType content_type
,
41 std::string resource_identifier
) override
;
42 virtual void OnContentSettingUsed(
43 const ContentSettingsPattern
& primary_pattern
,
44 const ContentSettingsPattern
& secondary_pattern
,
45 ContentSettingsType content_type
) override
;
48 // Update the page with all origins for a given content setting.
49 // |args| is the string name of the content setting.
50 void HandleUpdateOrigins(const base::ListValue
* args
);
52 // Update the page with all origins given a filter string.
53 // |args| is the filter string.
54 void HandleUpdateSearchResults(const base::ListValue
* args
);
56 // Update the single site edit view with the permission values for a given
57 // url, if the url is valid.
59 void HandleGetOriginInfo(const base::ListValue
* args
);
61 // Sets the content setting permissions for a given setting type for the last
63 // |args| is the name of the setting and the new value.
64 void HandleSetOriginPermission(const base::ListValue
* args
);
66 // Update the page with all origins that are using local storage.
67 void HandleUpdateLocalStorage(const base::ListValue
* args
);
69 // Show the single site edit view if the given URL is valid.
71 void HandleMaybeShowEditPage(const base::ListValue
* args
);
73 // Get all origins that have used power, filter them by |last_filter_|, and
75 void HandleUpdateBatteryUsage(const base::ListValue
* args
);
77 // Deletes the local storage and repopulates the page.
78 void HandleDeleteLocalStorage(const base::ListValue
* args
);
80 // Populates the default setting drop down on the single site edit page.
81 void HandleUpdateDefaultSetting(const base::ListValue
* args
);
83 // Sets the default setting for the last used content setting to |args|.
84 void HandleSetDefaultSetting(const base::ListValue
* args
);
86 // Sets if a certain content setting enabled to |args|.
87 void HandleSetGlobalToggle(const base::ListValue
* args
);
89 // Closes all tabs and app windows which have the same origin as the selected
91 void HandleStopOrigin(const base::ListValue
* args
);
93 // Callback method to be invoked when fetching the data is complete.
94 void OnLocalStorageFetched(const LocalStorageList
& storage
);
96 // Get all origins with Content Settings for the last given content setting,
97 // filter them by |last_filter_|, and update the page.
100 // Get all origins with local storage usage, filter them by |last_filter_|,
101 // and update the page.
102 void UpdateLocalStorage();
104 // Get all origins with power consumption, filter them by |last_filter_|,
105 // and update the page.
106 void UpdateBatteryUsage();
108 // Kill all tabs and app windows which have the same origin as |site_url|.
109 void StopOrigin(const GURL
& site_url
);
111 // Delete all of the local storage for the |site_url|.
112 void DeleteLocalStorage(const GURL
& site_url
);
114 // Populates the single site edit view with the permissions and local storage
115 // usage for a given |site_url|. If |show_page| is true, it raises a new
116 // single site edit view.
117 void GetInfoForOrigin(const GURL
& site_url
, bool show_page
);
119 // Updates the page with the last settings used.
122 // Gets the default setting in string form. If |provider_id| is not NULL, the
123 // id of the provider which provided the default setting is assigned to it.
124 std::string
GetSettingDefaultFromModel(ContentSettingsType type
,
125 std::string
* provider_id
);
127 // Returns the base URL for websites, or the app name for Chrome App URLs.
128 const std::string
& GetReadableName(const GURL
& site_url
);
130 Profile
* GetProfile();
132 std::string last_setting_
;
133 std::string last_filter_
;
135 scoped_refptr
<BrowsingDataLocalStorageHelper
> local_storage_
;
136 LocalStorageList local_storage_list_
;
138 // Observer to watch for content settings changes.
139 ScopedObserver
<HostContentSettingsMap
, content_settings::Observer
> observer_
;
141 // Subscription to watch for power consumption updates.
142 scoped_ptr
<power::OriginPowerMap::Subscription
> subscription_
;
144 base::WeakPtrFactory
<WebsiteSettingsHandler
> weak_ptr_factory_
;
146 DISALLOW_COPY_AND_ASSIGN(WebsiteSettingsHandler
);
149 } // namespace options
151 #endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_WEBSITE_SETTINGS_HANDLER_H_