OLD | NEW |
(Empty) | |
| 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 // AdvancedOptions class |
| 11 // Encapsulated handling of advanced options page. |
| 12 // |
| 13 function AdvancedOptions() { |
| 14 OptionsPage.call(this, 'advanced', templateData.advancedPageTabTitle, |
| 15 'advancedPage'); |
| 16 } |
| 17 |
| 18 cr.addSingletonGetter(AdvancedOptions); |
| 19 |
| 20 AdvancedOptions.prototype = { |
| 21 // Inherit AdvancedOptions from OptionsPage. |
| 22 __proto__: options.OptionsPage.prototype, |
| 23 |
| 24 /** |
| 25 * Initializes the page. |
| 26 */ |
| 27 initializePage: function() { |
| 28 // Call base class implementation to starts preference initialization. |
| 29 OptionsPage.prototype.initializePage.call(this); |
| 30 |
| 31 // Set up click handlers for buttons. |
| 32 $('privacyContentSettingsButton').onclick = function(event) { |
| 33 OptionsPage.navigateToPage('content'); |
| 34 OptionsPage.showTab($('cookies-nav-tab')); |
| 35 chrome.send('coreOptionsUserMetricsAction', |
| 36 ['Options_ContentSettings']); |
| 37 }; |
| 38 $('privacyClearDataButton').onclick = function(event) { |
| 39 OptionsPage.navigateToPage('clearBrowserData'); |
| 40 chrome.send('coreOptionsUserMetricsAction', ['Options_ClearData']); |
| 41 }; |
| 42 |
| 43 // 'metricsReportingEnabled' element is only present on Chrome branded |
| 44 // builds. |
| 45 if ($('metricsReportingEnabled')) { |
| 46 $('metricsReportingEnabled').onclick = function(event) { |
| 47 chrome.send('metricsReportingCheckboxAction', |
| 48 [String(event.target.checked)]); |
| 49 }; |
| 50 } |
| 51 |
| 52 if (!cr.isChromeOS) { |
| 53 $('autoOpenFileTypesResetToDefault').onclick = function(event) { |
| 54 chrome.send('autoOpenFileTypesAction'); |
| 55 }; |
| 56 } |
| 57 |
| 58 $('fontSettingsCustomizeFontsButton').onclick = function(event) { |
| 59 OptionsPage.navigateToPage('fonts'); |
| 60 chrome.send('coreOptionsUserMetricsAction', ['Options_FontSettings']); |
| 61 }; |
| 62 $('defaultFontSize').onchange = function(event) { |
| 63 chrome.send('defaultFontSizeAction', |
| 64 [String(event.target.options[event.target.selectedIndex].value)]); |
| 65 }; |
| 66 $('defaultZoomFactor').onchange = function(event) { |
| 67 chrome.send('defaultZoomFactorAction', |
| 68 [String(event.target.options[event.target.selectedIndex].value)]); |
| 69 }; |
| 70 |
| 71 $('language-button').onclick = function(event) { |
| 72 OptionsPage.navigateToPage('languages'); |
| 73 chrome.send('coreOptionsUserMetricsAction', |
| 74 ['Options_LanuageAndSpellCheckSettings']); |
| 75 }; |
| 76 |
| 77 if (cr.isWindows || cr.isMac) { |
| 78 $('certificatesManageButton').onclick = function(event) { |
| 79 chrome.send('showManageSSLCertificates'); |
| 80 }; |
| 81 } else { |
| 82 $('certificatesManageButton').onclick = function(event) { |
| 83 OptionsPage.navigateToPage('certificates'); |
| 84 chrome.send('coreOptionsUserMetricsAction', |
| 85 ['Options_ManageSSLCertificates']); |
| 86 }; |
| 87 } |
| 88 |
| 89 if (!cr.isChromeOS) { |
| 90 $('proxiesConfigureButton').onclick = function(event) { |
| 91 chrome.send('showNetworkProxySettings'); |
| 92 }; |
| 93 $('downloadLocationChangeButton').onclick = function(event) { |
| 94 chrome.send('selectDownloadLocation'); |
| 95 }; |
| 96 // This text field is always disabled. Setting ".disabled = true" isn't |
| 97 // enough, since a policy can disable it but shouldn't re-enable when |
| 98 // it is removed. |
| 99 $('downloadLocationPath').setDisabled('readonly', true); |
| 100 } |
| 101 |
| 102 $('sslCheckRevocation').onclick = function(event) { |
| 103 chrome.send('checkRevocationCheckboxAction', |
| 104 [String($('sslCheckRevocation').checked)]); |
| 105 }; |
| 106 |
| 107 if ($('backgroundModeCheckbox')) { |
| 108 $('backgroundModeCheckbox').onclick = function(event) { |
| 109 chrome.send('backgroundModeAction', |
| 110 [String($('backgroundModeCheckbox').checked)]); |
| 111 }; |
| 112 } |
| 113 |
| 114 // 'cloudPrintProxyEnabled' is true for Chrome branded builds on |
| 115 // certain platforms, or could be enabled by a lab. |
| 116 if (!cr.isChromeOS) { |
| 117 $('cloudPrintProxySetupButton').onclick = function(event) { |
| 118 if ($('cloudPrintProxyManageButton').style.display == 'none') { |
| 119 // Disable the button, set it's text to the intermediate state. |
| 120 $('cloudPrintProxySetupButton').textContent = |
| 121 localStrings.getString('cloudPrintProxyEnablingButton'); |
| 122 $('cloudPrintProxySetupButton').disabled = true; |
| 123 chrome.send('showCloudPrintSetupDialog'); |
| 124 } else { |
| 125 chrome.send('disableCloudPrintProxy'); |
| 126 } |
| 127 }; |
| 128 } |
| 129 $('cloudPrintProxyManageButton').onclick = function(event) { |
| 130 chrome.send('showCloudPrintManagePage'); |
| 131 }; |
| 132 |
| 133 } |
| 134 }; |
| 135 |
| 136 // |
| 137 // Chrome callbacks |
| 138 // |
| 139 |
| 140 // Set the checked state of the metrics reporting checkbox. |
| 141 AdvancedOptions.SetMetricsReportingCheckboxState = function( |
| 142 checked, disabled) { |
| 143 $('metricsReportingEnabled').checked = checked; |
| 144 $('metricsReportingEnabled').disabled = disabled; |
| 145 if (disabled) |
| 146 $('metricsReportingEnabledText').className = 'disable-services-span'; |
| 147 } |
| 148 |
| 149 AdvancedOptions.SetMetricsReportingSettingVisibility = function(visible) { |
| 150 if (visible) { |
| 151 $('metricsReportingSetting').style.display = 'block'; |
| 152 } else { |
| 153 $('metricsReportingSetting').style.display = 'none'; |
| 154 } |
| 155 } |
| 156 |
| 157 // Set the font size selected item. |
| 158 AdvancedOptions.SetFontSize = function(font_size_value) { |
| 159 var selectCtl = $('defaultFontSize'); |
| 160 for (var i = 0; i < selectCtl.options.length; i++) { |
| 161 if (selectCtl.options[i].value == font_size_value) { |
| 162 selectCtl.selectedIndex = i; |
| 163 if ($('Custom')) |
| 164 selectCtl.remove($('Custom').index); |
| 165 return; |
| 166 } |
| 167 } |
| 168 |
| 169 // Add/Select Custom Option in the font size label list. |
| 170 if (!$('Custom')) { |
| 171 var option = new Option(localStrings.getString('fontSizeLabelCustom'), |
| 172 -1, false, true); |
| 173 option.setAttribute("id", "Custom"); |
| 174 selectCtl.add(option); |
| 175 } |
| 176 $('Custom').selected = true; |
| 177 }; |
| 178 |
| 179 /** |
| 180 * Populate the page zoom selector with values received from the caller. |
| 181 * @param {Array} items An array of items to populate the selector. |
| 182 * each object is an array with three elements as follows: |
| 183 * 0: The title of the item (string). |
| 184 * 1: The value of the item (number). |
| 185 * 2: Whether the item should be selected (boolean). |
| 186 */ |
| 187 AdvancedOptions.SetupPageZoomSelector = function(items) { |
| 188 var element = $('defaultZoomFactor'); |
| 189 |
| 190 // Remove any existing content. |
| 191 element.textContent = ''; |
| 192 |
| 193 // Insert new child nodes into select element. |
| 194 var value, title, selected; |
| 195 for (var i = 0; i < items.length; i++) { |
| 196 title = items[i][0]; |
| 197 value = items[i][1]; |
| 198 selected = items[i][2]; |
| 199 element.appendChild(new Option(title, value, false, selected)); |
| 200 } |
| 201 }; |
| 202 |
| 203 // Set the enabled state for the autoOpenFileTypesResetToDefault button. |
| 204 AdvancedOptions.SetAutoOpenFileTypesDisabledAttribute = function(disabled) { |
| 205 if (!cr.isChromeOS) { |
| 206 $('autoOpenFileTypesResetToDefault').disabled = disabled; |
| 207 |
| 208 if (disabled) |
| 209 $('auto-open-file-types-label').classList.add('disabled'); |
| 210 else |
| 211 $('auto-open-file-types-label').classList.remove('disabled'); |
| 212 } |
| 213 }; |
| 214 |
| 215 // Set the enabled state for the proxy settings button. |
| 216 AdvancedOptions.SetupProxySettingsSection = function(disabled, label) { |
| 217 if (!cr.isChromeOS) { |
| 218 $('proxiesConfigureButton').disabled = disabled; |
| 219 $('proxiesLabel').textContent = label; |
| 220 } |
| 221 }; |
| 222 |
| 223 // Set the checked state for the sslCheckRevocation checkbox. |
| 224 AdvancedOptions.SetCheckRevocationCheckboxState = function( |
| 225 checked, disabled) { |
| 226 $('sslCheckRevocation').checked = checked; |
| 227 $('sslCheckRevocation').disabled = disabled; |
| 228 }; |
| 229 |
| 230 // Set the checked state for the backgroundModeCheckbox element. |
| 231 AdvancedOptions.SetBackgroundModeCheckboxState = function(checked) { |
| 232 $('backgroundModeCheckbox').checked = checked; |
| 233 }; |
| 234 |
| 235 // Set the Cloud Print proxy UI to enabled, disabled, or processing. |
| 236 AdvancedOptions.SetupCloudPrintProxySection = function( |
| 237 disabled, label, allowed) { |
| 238 if (!cr.isChromeOS) { |
| 239 $('cloudPrintProxyLabel').textContent = label; |
| 240 if (disabled || !allowed) { |
| 241 $('cloudPrintProxySetupButton').textContent = |
| 242 localStrings.getString('cloudPrintProxyDisabledButton'); |
| 243 $('cloudPrintProxyManageButton').style.display = 'none'; |
| 244 } else { |
| 245 $('cloudPrintProxySetupButton').textContent = |
| 246 localStrings.getString('cloudPrintProxyEnabledButton'); |
| 247 $('cloudPrintProxyManageButton').style.display = 'inline'; |
| 248 } |
| 249 $('cloudPrintProxySetupButton').disabled = !allowed; |
| 250 } |
| 251 }; |
| 252 |
| 253 AdvancedOptions.RemoveCloudPrintProxySection = function() { |
| 254 if (!cr.isChromeOS) { |
| 255 var proxySectionElm = $('cloud-print-proxy-section'); |
| 256 if (proxySectionElm) |
| 257 proxySectionElm.parentNode.removeChild(proxySectionElm); |
| 258 } |
| 259 }; |
| 260 |
| 261 // Export |
| 262 return { |
| 263 AdvancedOptions: AdvancedOptions |
| 264 }; |
| 265 |
| 266 }); |
OLD | NEW |