Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Side by Side Diff: chrome/browser/resources/options/website_settings.js

Issue 1156983002: Remove unused "Website Settings" view of content settings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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.
4
5 cr.define('options.ContentSettings', function() {
6 /** @const */ var Page = cr.ui.pageManager.Page;
7 /** @const */ var PageManager = cr.ui.pageManager.PageManager;
8 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel;
9
10 // Lookup table to generate the i18n strings.
11 /** @const */ var permissionsLookup = {
12 'geolocation': 'location',
13 'notifications': 'notifications',
14 'media-stream': 'mediaStream',
15 'cookies': 'cookies',
16 'multiple-automatic-downloads': 'multipleAutomaticDownloads',
17 'images': 'images',
18 'plugins': 'plugins',
19 'popups': 'popups',
20 'javascript': 'javascript',
21 'battery': 'battery',
22 'storage': 'storage'
23 };
24
25 /////////////////////////////////////////////////////////////////////////////
26 // WebsiteSettingsManager class:
27
28 /**
29 * Encapsulated handling of the website settings page.
30 * @constructor
31 * @extends {cr.ui.pageManager.Page}
32 */
33 function WebsiteSettingsManager() {
34 Page.call(this, 'websiteSettings',
35 loadTimeData.getString('websitesOptionsPageTabTitle'),
36 'website-settings-page');
37 }
38
39 cr.addSingletonGetter(WebsiteSettingsManager);
40
41 WebsiteSettingsManager.prototype = {
42 __proto__: Page.prototype,
43
44 /**
45 * The saved allowed origins list.
46 * @type {options.OriginList}
47 * @private
48 */
49 allowedList_: null,
50
51 /**
52 * The saved blocked origins list.
53 * @type {options.OriginList}
54 * @private
55 */
56 blockedList_: null,
57
58 /** @override */
59 initializePage: function() {
60 Page.prototype.initializePage.call(this);
61
62 $('website-settings-overlay-confirm').onclick =
63 PageManager.closeOverlay.bind(PageManager);
64
65 $('global-setting').onchange = function(event) {
66 chrome.send('setDefaultContentSetting', [this.value]);
67 };
68
69 $('global-setting-toggle').onchange = function(event) {
70 var value = event.target.checked;
71 chrome.send('setGlobalEnabled', [value]);
72 };
73
74 var searchBox = $('website-settings-search-box');
75 searchBox.addEventListener('search',
76 this.handleSearchQueryChange_.bind(this));
77
78 searchBox.onkeydown = function(e) {
79 if (e.keyIdentifier == 'Enter')
80 e.preventDefault();
81 };
82
83 this.createOriginsList_();
84 this.updatePage_('geolocation');
85 },
86
87 /**
88 * Called after the page has been shown. Show the content settings or
89 * resource auditing for the location's hash.
90 */
91 didShowPage: function() {
92 var hash = this.hash;
93 if (hash)
94 hash = hash.slice(1);
95 else
96 hash = 'geolocation';
97 this.updatePage_(hash);
98 },
99
100 /**
101 * Creates, decorates and initializes the origin list.
102 * @private
103 */
104 createOriginsList_: function() {
105 var allowedList = $('allowed-origin-list');
106 options.OriginList.decorate(allowedList);
107 this.allowedList_ = assertInstanceof(allowedList, options.OriginList);
108 this.allowedList_.autoExpands = true;
109
110 var blockedList = $('blocked-origin-list');
111 options.OriginList.decorate(blockedList);
112 this.blockedList_ = assertInstanceof(blockedList, options.OriginList);
113 this.blockedList_.autoExpands = true;
114 },
115
116 /**
117 * Populate an origin list with all of the origins with a given permission
118 * or that are using a given resource.
119 * @param {options.OriginList} originList A list to populate.
120 * @param {!Object} originDict A dictionary of origins to their usage, which
121 will be used to sort the origins.
122 * @private
123 */
124 populateOriginsHelper_: function(originList, originDict) {
125 var origins = Object.keys(originDict).map(function(origin) {
126 // |usage| means the time of last usage in seconds since epoch
127 // (Jan 1, 1970) for permissions and means the amount of local storage
128 // in bytes used for local storage.
129 return {
130 origin: origin,
131 usage: originDict[origin].usage,
132 usageString: originDict[origin].usageString,
133 readableName: originDict[origin].readableName,
134 };
135 });
136 origins.sort(function(first, second) {
137 return second.usage - first.usage;
138 });
139 originList.dataModel = new ArrayDataModel(origins);
140 },
141
142
143 /**
144 * Populate the origin lists with all of the origins with a given permission
145 * or that are using a given resource, potentially split by if allowed or
146 * denied. If no blocked dictionary is provided, only the allowed list is
147 * shown.
148 * @param {!Object} allowedDict A dictionary of origins to their usage,
149 which will be used to sort the origins in the main/allowed list.
150 * @param {!Object} blockedDict An optional dictionary of origins to their
151 usage, which will be used to sort the origins in the blocked list.
152 * @param {boolean} isGloballyEnabled If the content setting is turned on.
153 * @private
154 */
155 populateOrigins: function(allowedDict, blockedDict, isGloballyEnabled) {
156 this.populateOriginsHelper_(this.allowedList_, allowedDict);
157 if (blockedDict) {
158 this.populateOriginsHelper_(this.blockedList_, blockedDict);
159 this.blockedList_.hidden = false;
160 $('blocked-origin-list-title').hidden = false;
161 this.allowedList_.classList.remove('nonsplit-origin-list');
162 } else {
163 this.blockedList_.hidden = true;
164 $('blocked-origin-list-title').hidden = true;
165 $('allowed-origin-list-title').hidden = true;
166 this.allowedList_.classList.add('nonsplit-origin-list');
167 }
168 $('global-setting-toggle').checked = isGloballyEnabled;
169 },
170
171 /**
172 * Update the table with the origins filtered by the value in the search
173 * box.
174 * @private
175 */
176 searchOrigins: function() {
177 var filter = $('website-settings-search-box').value;
178 chrome.send('updateOriginsSearchResults', [filter]);
179 },
180
181 /**
182 * Handle and delay search query changes.
183 * @param {!Event} e The event object.
184 * @private
185 */
186 handleSearchQueryChange_: function(e) {
187 if (this.queryDelayTimerId_)
188 window.clearTimeout(this.queryDelayTimerId_);
189
190 this.queryDelayTimerId_ = window.setTimeout(this.searchOrigins.bind(this),
191 160);
192 },
193
194 /**
195 * Sets the default content setting dropdown on the page to the current
196 * default.
197 * @param {!Object} dict A dictionary with the management and value of the
198 * default setting for the last selected content setting..
199 */
200 updateDefault: function(dict) {
201 // TODO(dhnishi): Remove duplicate default handling in the Content
202 // Settings page and here.
203 var managedBy = dict.managedBy;
204 var controlledBy = managedBy == 'policy' || managedBy == 'extension' ?
205 managedBy : null;
206 $('global-setting').disabled = (managedBy != 'default');
207
208 var options = $('global-setting').options;
209 for (var i = 0; i < options.length; i++) {
210 if (options[i].value == dict.value) {
211 options.selectedIndex = i;
212 }
213 }
214 },
215
216 /**
217 * Updates the page with the given content setting or resource name's
218 * information.
219 * @param {string} typeName The name of the content setting or resource.
220 */
221 updatePage_: function(typeName) {
222 if (typeName == 'storage')
223 chrome.send('updateLocalStorage');
224 else if (typeName == 'battery')
225 chrome.send('updateBatteryUsage');
226 else
227 chrome.send('updateOrigins', [typeName]);
228
229 var options = $('global-setting').options;
230 options.length = 0;
231 var permissionString = permissionsLookup[typeName];
232 var permissions = ['Allow', 'Ask', 'Block'];
233 for (var i = 0; i < permissions.length; i++) {
234 var valueId = permissionString + permissions[i];
235 if (loadTimeData.valueExists(valueId)) {
236 options.add(new Option(loadTimeData.getString(valueId),
237 permissions[i].toLowerCase()));
238 }
239 }
240 if (options.length == 0) {
241 $('website-settings-global-controls').hidden = true;
242 } else {
243 $('website-settings-global-controls').hidden = false;
244 chrome.send('updateDefaultSetting');
245 }
246
247 $('website-settings-title').textContent =
248 loadTimeData.getString(permissionString + 'TabLabel');
249 }
250 };
251
252 WebsiteSettingsManager.populateOrigins = function(allowedDict, blockedDict,
253 isGloballyEnabled) {
254 WebsiteSettingsManager.getInstance().populateOrigins(allowedDict,
255 blockedDict, isGloballyEnabled);
256 };
257
258 WebsiteSettingsManager.updateDefault = function(dict) {
259 WebsiteSettingsManager.getInstance().updateDefault(dict);
260 };
261
262 WebsiteSettingsManager.showWebsiteSettings = function(hash) {
263 PageManager.showPageByName('websiteSettings', true, {hash: '#' + hash});
264 };
265
266 // Export
267 return {
268 WebsiteSettingsManager: WebsiteSettingsManager
269 };
270 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/options/website_settings.html ('k') | chrome/browser/resources/options/website_settings_edit_page.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698