Index: chrome/browser/resources/options2/content_settings.js |
diff --git a/chrome/browser/resources/options2/content_settings.js b/chrome/browser/resources/options2/content_settings.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..94faa90440dfb93af95225ceab410cbc3d36ae53 |
--- /dev/null |
+++ b/chrome/browser/resources/options2/content_settings.js |
@@ -0,0 +1,154 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+cr.define('options', function() { |
+ |
+ var OptionsPage = options.OptionsPage; |
+ |
+ ////////////////////////////////////////////////////////////////////////////// |
+ // ContentSettings class: |
+ |
+ /** |
+ * Encapsulated handling of content settings page. |
+ * @constructor |
+ */ |
+ function ContentSettings() { |
+ this.activeNavTab = null; |
+ OptionsPage.call(this, 'content', templateData.contentSettingsPageTabTitle, |
+ 'content-settings-page'); |
+ } |
+ |
+ cr.addSingletonGetter(ContentSettings); |
+ |
+ ContentSettings.prototype = { |
+ __proto__: OptionsPage.prototype, |
+ |
+ initializePage: function() { |
+ OptionsPage.prototype.initializePage.call(this); |
+ |
+ chrome.send('getContentFilterSettings'); |
+ |
+ var exceptionsButtons = |
+ this.pageDiv.querySelectorAll('.exceptions-list-button'); |
+ for (var i = 0; i < exceptionsButtons.length; i++) { |
+ exceptionsButtons[i].onclick = function(event) { |
+ var page = ContentSettingsExceptionsArea.getInstance(); |
+ page.showList( |
+ event.target.getAttribute('contentType')); |
+ OptionsPage.navigateToPage('contentExceptions'); |
+ // Add on the proper hash for the content type, and store that in the |
+ // history so back/forward and tab restore works. |
+ var hash = event.target.getAttribute('contentType'); |
+ window.history.replaceState({pageName: page.name}, page.title, |
+ '/' + page.name + "#" + hash); |
+ }; |
+ } |
+ |
+ var manageHandlersButton = $('manage-handlers-button'); |
+ if (manageHandlersButton) { |
+ manageHandlersButton.onclick = function(event) { |
+ OptionsPage.navigateToPage('handlers'); |
+ }; |
+ } |
+ |
+ var manageIntentsButton = $('manage-intents-button'); |
+ if (manageIntentsButton) { |
+ manageIntentsButton.onclick = function(event) { |
+ OptionsPage.navigateToPage('intents'); |
+ }; |
+ } |
+ |
+ // Cookies filter page --------------------------------------------------- |
+ $('show-cookies-button').onclick = function(event) { |
+ chrome.send('coreOptionsUserMetricsAction', ['Options_ShowCookies']); |
+ OptionsPage.navigateToPage('cookies'); |
+ }; |
+ |
+ if (!templateData.enable_click_to_play) |
+ $('click_to_play').hidden = true; |
+ |
+ if (!templateData.enable_web_intents && $('intent-section')) |
+ $('intent-section').hidden = true; |
+ }, |
+ }; |
+ |
+ ContentSettings.updateHandlersEnabledRadios = function(enabled) { |
+ var selector = '#content-settings-page input[type=radio][value=' + |
+ (enabled ? 'allow' : 'block') + '].handler-radio'; |
+ document.querySelector(selector).checked = true; |
+ }; |
+ |
+ /** |
+ * Sets the values for all the content settings radios. |
+ * @param {Object} dict A mapping from radio groups to the checked value for |
+ * that group. |
+ */ |
+ ContentSettings.setContentFilterSettingsValue = function(dict) { |
+ for (var group in dict) { |
+ document.querySelector('input[type=radio][name=' + group + '][value=' + |
+ dict[group]['value'] + ']').checked = true; |
+ var radios = document.querySelectorAll('input[type=radio][name=' + |
+ group + ']'); |
+ var managedBy = dict[group]['managedBy']; |
+ for (var i = 0, len = radios.length; i < len; i++) { |
+ radios[i].disabled = (managedBy != 'default'); |
+ radios[i].controlledBy = managedBy; |
+ } |
+ } |
+ OptionsPage.updateManagedBannerVisibility(); |
+ }; |
+ |
+ /** |
+ * Initializes an exceptions list. |
+ * @param {string} type The content type that we are setting exceptions for. |
+ * @param {Array} list An array of pairs, where the first element of each pair |
+ * is the filter string, and the second is the setting (allow/block). |
+ */ |
+ ContentSettings.setExceptions = function(type, list) { |
+ var exceptionsList = |
+ document.querySelector('div[contentType=' + type + ']' + |
+ ' list[mode=normal]'); |
+ exceptionsList.setExceptions(list); |
+ }; |
+ |
+ ContentSettings.setHandlers = function(list) { |
+ $('handlers-list').setHandlers(list); |
+ }; |
+ |
+ ContentSettings.setIgnoredHandlers = function(list) { |
+ $('ignored-handlers-list').setHandlers(list); |
+ }; |
+ |
+ ContentSettings.setOTRExceptions = function(type, list) { |
+ var exceptionsList = |
+ document.querySelector('div[contentType=' + type + ']' + |
+ ' list[mode=otr]'); |
+ |
+ exceptionsList.parentNode.hidden = false; |
+ exceptionsList.setExceptions(list); |
+ }; |
+ |
+ /** |
+ * The browser's response to a request to check the validity of a given URL |
+ * pattern. |
+ * @param {string} type The content type. |
+ * @param {string} mode The browser mode. |
+ * @param {string} pattern The pattern. |
+ * @param {bool} valid Whether said pattern is valid in the context of |
+ * a content exception setting. |
+ */ |
+ ContentSettings.patternValidityCheckComplete = |
+ function(type, mode, pattern, valid) { |
+ var exceptionsList = |
+ document.querySelector('div[contentType=' + type + '] ' + |
+ 'list[mode=' + mode + ']'); |
+ exceptionsList.patternValidityCheckComplete(pattern, valid); |
+ }; |
+ |
+ // Export |
+ return { |
+ ContentSettings: ContentSettings |
+ }; |
+ |
+}); |