1 // Copyright (c) 2011 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', function() { 6 7 var OptionsPage = options.OptionsPage; 8 9 ////////////////////////////////////////////////////////////////////////////// 10 // ContentSettings class: 11 12 /** 13 * Encapsulated handling of content settings page. 14 * @constructor 15 */ 16 function ContentSettings() { 17 this.activeNavTab = null; 18 OptionsPage.call(this, 'content', templateData.contentSettingsPageTabTitle, 19 'content-settings-page'); 20 } 21 22 cr.addSingletonGetter(ContentSettings); 23 24 ContentSettings.prototype = { 25 __proto__: OptionsPage.prototype, 26 27 initializePage: function() { 28 OptionsPage.prototype.initializePage.call(this); 29 30 chrome.send('getContentFilterSettings'); 31 32 var exceptionsButtons = 33 this.pageDiv.querySelectorAll('.exceptions-list-button'); 34 for (var i = 0; i < exceptionsButtons.length; i++) { 35 exceptionsButtons[i].onclick = function(event) { 36 var page = ContentSettingsExceptionsArea.getInstance(); 37 page.showList( 38 event.target.getAttribute('contentType')); 39 OptionsPage.navigateToPage('contentExceptions'); 40 // Add on the proper hash for the content type, and store that in the 41 // history so back/forward and tab restore works. 42 var hash = event.target.getAttribute('contentType'); 43 window.history.replaceState({pageName: page.name}, page.title, 44 '/' + page.name + "#" + hash); 45 }; 46 } 47 48 // Cookies filter page --------------------------------------------------- 49 $('block-third-party-cookies').onclick = function(event) { 50 chrome.send('setAllowThirdPartyCookies', 51 [String($('block-third-party-cookies').checked)]); 52 }; 53 54 $('show-cookies-button').onclick = function(event) { 55 chrome.send('coreOptionsUserMetricsAction', ['Options_ShowCookies']); 56 OptionsPage.navigateToPage('cookies'); 57 }; 58 59 if (!templateData.enable_click_to_play) 60 $('click_to_play').style.display = 'none'; 61 }, 62 }; 63 64 /** 65 * Sets the values for all the content settings radios. 66 * @param {Object} dict A mapping from radio groups to the checked value for 67 * that group. 68 */ 69 ContentSettings.setContentFilterSettingsValue = function(dict) { 70 for (var group in dict) { 71 document.querySelector('input[type=radio][name=' + group + '][value=' + 72 dict[group]['value'] + ']').checked = true; 73 var radios = document.querySelectorAll('input[type=radio][name=' + 74 group + ']'); 75 for (var i = 0, len = radios.length; i < len; i++) { 76 radios[i].disabled = dict[group]['managed']; 77 radios[i].managed = dict[group]['managed']; 78 } 79 } 80 OptionsPage.updateManagedBannerVisibility(); 81 }; 82 83 /** 84 * Initializes an exceptions list. 85 * @param {string} type The content type that we are setting exceptions for. 86 * @param {Array} list An array of pairs, where the first element of each pair 87 * is the filter string, and the second is the setting (allow/block). 88 */ 89 ContentSettings.setExceptions = function(type, list) { 90 var exceptionsList = 91 document.querySelector('div[contentType=' + type + ']' + 92 ' list[mode=normal]'); 93 94 exceptionsList.setExceptions(list); 95 }; 96 97 ContentSettings.setOTRExceptions = function(type, list) { 98 var exceptionsList = 99 document.querySelector('div[contentType=' + type + ']' + 100 ' list[mode=otr]'); 101 102 exceptionsList.parentNode.classList.remove('hidden'); 103 exceptionsList.setExceptions(list); 104 }; 105 106 /** 107 * Sets the initial value for the Third Party Cookies checkbox. 108 * @param {boolean=} block True if we are blocking third party cookies. 109 */ 110 ContentSettings.setBlockThirdPartyCookies = function(block) { 111 $('block-third-party-cookies').checked = block; 112 }; 113 114 /** 115 * The browser's response to a request to check the validity of a given URL 116 * pattern. 117 * @param {string} type The content type. 118 * @param {string} mode The browser mode. 119 * @param {string} pattern The pattern. 120 * @param {bool} valid Whether said pattern is valid in the context of 121 * a content exception setting. 122 */ 123 ContentSettings.patternValidityCheckComplete = 124 function(type, mode, pattern, valid) { 125 var exceptionsList = 126 document.querySelector('div[contentType=' + type + '] ' + 127 'list[mode=' + mode + ']'); 128 exceptionsList.patternValidityCheckComplete(pattern, valid); 129 }; 130 131 // Export 132 return { 133 ContentSettings: ContentSettings 134 }; 135 136 }); 137