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 5cr.define('options', function() { 6 7var 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 $('language-button').onclick = function(event) { 67 OptionsPage.navigateToPage('languages'); 68 chrome.send('coreOptionsUserMetricsAction', 69 ['Options_LanuageAndSpellCheckSettings']); 70 }; 71 72 if (cr.isWindows || cr.isMac) { 73 $('certificatesManageButton').onclick = function(event) { 74 chrome.send('showManageSSLCertificates'); 75 }; 76 } else { 77 $('certificatesManageButton').onclick = function(event) { 78 OptionsPage.navigateToPage('certificates'); 79 OptionsPage.showTab($('personal-certs-nav-tab')); 80 chrome.send('coreOptionsUserMetricsAction', 81 ['Options_ManageSSLCertificates']); 82 }; 83 } 84 85 if (!cr.isChromeOS) { 86 $('proxiesConfigureButton').onclick = function(event) { 87 chrome.send('showNetworkProxySettings'); 88 }; 89 $('downloadLocationChangeButton').onclick = function(event) { 90 chrome.send('selectDownloadLocation'); 91 }; 92 $('promptForDownload').onclick = function(event) { 93 chrome.send('promptForDownloadAction', 94 [String($('promptForDownload').checked)]); 95 }; 96 } else { 97 $('proxiesConfigureButton').onclick = function(event) { 98 OptionsPage.navigateToPage('proxy'); 99 chrome.send('coreOptionsUserMetricsAction', 100 ['Options_ShowProxySettings']); 101 }; 102 } 103 104 $('sslCheckRevocation').onclick = function(event) { 105 chrome.send('checkRevocationCheckboxAction', 106 [String($('sslCheckRevocation').checked)]); 107 }; 108 $('sslUseSSL3').onclick = function(event) { 109 chrome.send('useSSL3CheckboxAction', 110 [String($('sslUseSSL3').checked)]); 111 }; 112 $('sslUseTLS1').onclick = function(event) { 113 chrome.send('useTLS1CheckboxAction', 114 [String($('sslUseTLS1').checked)]); 115 }; 116 117 // 'cloudPrintProxyEnabled' is true for Chrome branded builds on 118 // certain platforms, or could be enabled by a lab. 119 if (!cr.isChromeOS) { 120 $('cloudPrintProxySetupButton').onclick = function(event) { 121 if ($('cloudPrintProxyManageButton').style.display == 'none') { 122 // Disable the button, set it's text to the intermediate state. 123 $('cloudPrintProxySetupButton').textContent = 124 localStrings.getString('cloudPrintProxyEnablingButton'); 125 $('cloudPrintProxySetupButton').disabled = true; 126 chrome.send('showCloudPrintSetupDialog'); 127 } else { 128 chrome.send('disableCloudPrintProxy'); 129 } 130 }; 131 $('cloudPrintProxyManageButton').onclick = function(event) { 132 chrome.send('showCloudPrintManagePage'); 133 }; 134 } 135 136 if ($('remotingSetupButton')) { 137 $('remotingSetupButton').onclick = function(event) { 138 chrome.send('showRemotingSetupDialog'); 139 } 140 $('remotingStopButton').onclick = function(event) { 141 chrome.send('disableRemoting'); 142 } 143 } 144 } 145 }; 146 147 // 148 // Chrome callbacks 149 // 150 151 // Set the checked state of the metrics reporting checkbox. 152 AdvancedOptions.SetMetricsReportingCheckboxState = function( 153 checked, disabled) { 154 $('metricsReportingEnabled').checked = checked; 155 $('metricsReportingEnabled').disabled = disabled; 156 if (disabled) 157 $('metricsReportingEnabledText').className = 'disable-services-span'; 158 } 159 160 AdvancedOptions.SetMetricsReportingSettingVisibility = function(visible) { 161 if (visible) { 162 $('metricsReportingSetting').style.display = 'block'; 163 } else { 164 $('metricsReportingSetting').style.display = 'none'; 165 } 166 } 167 168 // Set the font size selected item. 169 AdvancedOptions.SetFontSize = function(font_size_value) { 170 var selectCtl = $('defaultFontSize'); 171 for (var i = 0; i < selectCtl.options.length; i++) { 172 if (selectCtl.options[i].value == font_size_value) { 173 selectCtl.selectedIndex = i; 174 if ($('Custom')) 175 selectCtl.remove($('Custom').index); 176 return; 177 } 178 } 179 180 // Add/Select Custom Option in the font size label list. 181 if (!$('Custom')) { 182 var option = new Option(localStrings.getString('fontSizeLabelCustom'), 183 -1, false, true); 184 option.setAttribute("id", "Custom"); 185 selectCtl.add(option); 186 } 187 $('Custom').selected = true; 188 }; 189 190 // Set the download path. 191 AdvancedOptions.SetDownloadLocationPath = function(path, disabled) { 192 if (!cr.isChromeOS) { 193 $('downloadLocationPath').value = path; 194 $('downloadLocationChangeButton').disabled = disabled; 195 } 196 }; 197 198 // Set the prompt for download checkbox. 199 AdvancedOptions.SetPromptForDownload = function(checked, disabled) { 200 if (!cr.isChromeOS) { 201 $('promptForDownload').checked = checked; 202 $('promptForDownload').disabled = disabled; 203 if (disabled) 204 $('promptForDownloadLabel').className = 'informational-text'; 205 else 206 $('promptForDownloadLabel').className = ''; 207 } 208 }; 209 210 // Set the enabled state for the autoOpenFileTypesResetToDefault button. 211 AdvancedOptions.SetAutoOpenFileTypesDisabledAttribute = function(disabled) { 212 if (!cr.isChromeOS) { 213 $('autoOpenFileTypesResetToDefault').disabled = disabled; 214 215 if (disabled) 216 $('auto-open-file-types-label').classList.add('disabled'); 217 else 218 $('auto-open-file-types-label').classList.remove('disabled'); 219 } 220 }; 221 222 // Set the enabled state for the proxy settings button. 223 AdvancedOptions.SetupProxySettingsSection = function(disabled, label) { 224 $('proxiesConfigureButton').disabled = disabled; 225 $('proxiesLabel').textContent = label; 226 }; 227 228 // Set the checked state for the sslCheckRevocation checkbox. 229 AdvancedOptions.SetCheckRevocationCheckboxState = function( 230 checked, disabled) { 231 $('sslCheckRevocation').checked = checked; 232 $('sslCheckRevocation').disabled = disabled; 233 }; 234 235 // Set the checked state for the sslUseSSL3 checkbox. 236 AdvancedOptions.SetUseSSL3CheckboxState = function(checked, disabled) { 237 $('sslUseSSL3').checked = checked; 238 $('sslUseSSL3').disabled = disabled; 239 }; 240 241 // Set the checked state for the sslUseTLS1 checkbox. 242 AdvancedOptions.SetUseTLS1CheckboxState = function(checked, disabled) { 243 $('sslUseTLS1').checked = checked; 244 $('sslUseTLS1').disabled = disabled; 245 }; 246 247 // Set the Cloud Print proxy UI to enabled, disabled, or processing. 248 AdvancedOptions.SetupCloudPrintProxySection = function( 249 disabled, label, allowed) { 250 if (!cr.isChromeOS) { 251 $('cloudPrintProxyLabel').textContent = label; 252 if (disabled || !allowed) { 253 $('cloudPrintProxySetupButton').textContent = 254 localStrings.getString('cloudPrintProxyDisabledButton'); 255 $('cloudPrintProxyManageButton').style.display = 'none'; 256 } else { 257 $('cloudPrintProxySetupButton').textContent = 258 localStrings.getString('cloudPrintProxyEnabledButton'); 259 $('cloudPrintProxyManageButton').style.display = 'inline'; 260 } 261 $('cloudPrintProxySetupButton').disabled = !allowed; 262 } 263 }; 264 265 AdvancedOptions.RemoveCloudPrintProxySection = function() { 266 if (!cr.isChromeOS) { 267 var proxySectionElm = $('cloud-print-proxy-section'); 268 if (proxySectionElm) 269 proxySectionElm.parentNode.removeChild(proxySectionElm); 270 } 271 }; 272 273 AdvancedOptions.SetRemotingStatus = function(enabled, status) { 274 if (enabled) { 275 $('remotingSetupButton').style.display = 'none'; 276 $('remotingStopButton').style.display = 'inline'; 277 } else { 278 $('remotingSetupButton').style.display = 'inline'; 279 $('remotingStopButton').style.display = 'none'; 280 } 281 $('remotingStatus').textContent = status; 282 }; 283 284 AdvancedOptions.RemoveRemotingSection = function() { 285 var proxySectionElm = $('remoting-section'); 286 if (proxySectionElm) 287 proxySectionElm.parentNode.removeChild(proxySectionElm); 288 }; 289 290 // Export 291 return { 292 AdvancedOptions: AdvancedOptions 293 }; 294 295}); 296