Index: chrome/browser/resources/options2/advanced_options.js |
diff --git a/chrome/browser/resources/options2/advanced_options.js b/chrome/browser/resources/options2/advanced_options.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fb1a809f4f52d1fe95dcb2c53e99bc008b80f382 |
--- /dev/null |
+++ b/chrome/browser/resources/options2/advanced_options.js |
@@ -0,0 +1,266 @@ |
+// 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; |
+ |
+ // |
+ // AdvancedOptions class |
+ // Encapsulated handling of advanced options page. |
+ // |
+ function AdvancedOptions() { |
+ OptionsPage.call(this, 'advanced', templateData.advancedPageTabTitle, |
+ 'advancedPage'); |
+ } |
+ |
+ cr.addSingletonGetter(AdvancedOptions); |
+ |
+ AdvancedOptions.prototype = { |
+ // Inherit AdvancedOptions from OptionsPage. |
+ __proto__: options.OptionsPage.prototype, |
+ |
+ /** |
+ * Initializes the page. |
+ */ |
+ initializePage: function() { |
+ // Call base class implementation to starts preference initialization. |
+ OptionsPage.prototype.initializePage.call(this); |
+ |
+ // Set up click handlers for buttons. |
+ $('privacyContentSettingsButton').onclick = function(event) { |
+ OptionsPage.navigateToPage('content'); |
+ OptionsPage.showTab($('cookies-nav-tab')); |
+ chrome.send('coreOptionsUserMetricsAction', |
+ ['Options_ContentSettings']); |
+ }; |
+ $('privacyClearDataButton').onclick = function(event) { |
+ OptionsPage.navigateToPage('clearBrowserData'); |
+ chrome.send('coreOptionsUserMetricsAction', ['Options_ClearData']); |
+ }; |
+ |
+ // 'metricsReportingEnabled' element is only present on Chrome branded |
+ // builds. |
+ if ($('metricsReportingEnabled')) { |
+ $('metricsReportingEnabled').onclick = function(event) { |
+ chrome.send('metricsReportingCheckboxAction', |
+ [String(event.target.checked)]); |
+ }; |
+ } |
+ |
+ if (!cr.isChromeOS) { |
+ $('autoOpenFileTypesResetToDefault').onclick = function(event) { |
+ chrome.send('autoOpenFileTypesAction'); |
+ }; |
+ } |
+ |
+ $('fontSettingsCustomizeFontsButton').onclick = function(event) { |
+ OptionsPage.navigateToPage('fonts'); |
+ chrome.send('coreOptionsUserMetricsAction', ['Options_FontSettings']); |
+ }; |
+ $('defaultFontSize').onchange = function(event) { |
+ chrome.send('defaultFontSizeAction', |
+ [String(event.target.options[event.target.selectedIndex].value)]); |
+ }; |
+ $('defaultZoomFactor').onchange = function(event) { |
+ chrome.send('defaultZoomFactorAction', |
+ [String(event.target.options[event.target.selectedIndex].value)]); |
+ }; |
+ |
+ $('language-button').onclick = function(event) { |
+ OptionsPage.navigateToPage('languages'); |
+ chrome.send('coreOptionsUserMetricsAction', |
+ ['Options_LanuageAndSpellCheckSettings']); |
+ }; |
+ |
+ if (cr.isWindows || cr.isMac) { |
+ $('certificatesManageButton').onclick = function(event) { |
+ chrome.send('showManageSSLCertificates'); |
+ }; |
+ } else { |
+ $('certificatesManageButton').onclick = function(event) { |
+ OptionsPage.navigateToPage('certificates'); |
+ chrome.send('coreOptionsUserMetricsAction', |
+ ['Options_ManageSSLCertificates']); |
+ }; |
+ } |
+ |
+ if (!cr.isChromeOS) { |
+ $('proxiesConfigureButton').onclick = function(event) { |
+ chrome.send('showNetworkProxySettings'); |
+ }; |
+ $('downloadLocationChangeButton').onclick = function(event) { |
+ chrome.send('selectDownloadLocation'); |
+ }; |
+ // This text field is always disabled. Setting ".disabled = true" isn't |
+ // enough, since a policy can disable it but shouldn't re-enable when |
+ // it is removed. |
+ $('downloadLocationPath').setDisabled('readonly', true); |
+ } |
+ |
+ $('sslCheckRevocation').onclick = function(event) { |
+ chrome.send('checkRevocationCheckboxAction', |
+ [String($('sslCheckRevocation').checked)]); |
+ }; |
+ |
+ if ($('backgroundModeCheckbox')) { |
+ $('backgroundModeCheckbox').onclick = function(event) { |
+ chrome.send('backgroundModeAction', |
+ [String($('backgroundModeCheckbox').checked)]); |
+ }; |
+ } |
+ |
+ // 'cloudPrintProxyEnabled' is true for Chrome branded builds on |
+ // certain platforms, or could be enabled by a lab. |
+ if (!cr.isChromeOS) { |
+ $('cloudPrintProxySetupButton').onclick = function(event) { |
+ if ($('cloudPrintProxyManageButton').style.display == 'none') { |
+ // Disable the button, set it's text to the intermediate state. |
+ $('cloudPrintProxySetupButton').textContent = |
+ localStrings.getString('cloudPrintProxyEnablingButton'); |
+ $('cloudPrintProxySetupButton').disabled = true; |
+ chrome.send('showCloudPrintSetupDialog'); |
+ } else { |
+ chrome.send('disableCloudPrintProxy'); |
+ } |
+ }; |
+ } |
+ $('cloudPrintProxyManageButton').onclick = function(event) { |
+ chrome.send('showCloudPrintManagePage'); |
+ }; |
+ |
+ } |
+ }; |
+ |
+ // |
+ // Chrome callbacks |
+ // |
+ |
+ // Set the checked state of the metrics reporting checkbox. |
+ AdvancedOptions.SetMetricsReportingCheckboxState = function( |
+ checked, disabled) { |
+ $('metricsReportingEnabled').checked = checked; |
+ $('metricsReportingEnabled').disabled = disabled; |
+ if (disabled) |
+ $('metricsReportingEnabledText').className = 'disable-services-span'; |
+ } |
+ |
+ AdvancedOptions.SetMetricsReportingSettingVisibility = function(visible) { |
+ if (visible) { |
+ $('metricsReportingSetting').style.display = 'block'; |
+ } else { |
+ $('metricsReportingSetting').style.display = 'none'; |
+ } |
+ } |
+ |
+ // Set the font size selected item. |
+ AdvancedOptions.SetFontSize = function(font_size_value) { |
+ var selectCtl = $('defaultFontSize'); |
+ for (var i = 0; i < selectCtl.options.length; i++) { |
+ if (selectCtl.options[i].value == font_size_value) { |
+ selectCtl.selectedIndex = i; |
+ if ($('Custom')) |
+ selectCtl.remove($('Custom').index); |
+ return; |
+ } |
+ } |
+ |
+ // Add/Select Custom Option in the font size label list. |
+ if (!$('Custom')) { |
+ var option = new Option(localStrings.getString('fontSizeLabelCustom'), |
+ -1, false, true); |
+ option.setAttribute("id", "Custom"); |
+ selectCtl.add(option); |
+ } |
+ $('Custom').selected = true; |
+ }; |
+ |
+ /** |
+ * Populate the page zoom selector with values received from the caller. |
+ * @param {Array} items An array of items to populate the selector. |
+ * each object is an array with three elements as follows: |
+ * 0: The title of the item (string). |
+ * 1: The value of the item (number). |
+ * 2: Whether the item should be selected (boolean). |
+ */ |
+ AdvancedOptions.SetupPageZoomSelector = function(items) { |
+ var element = $('defaultZoomFactor'); |
+ |
+ // Remove any existing content. |
+ element.textContent = ''; |
+ |
+ // Insert new child nodes into select element. |
+ var value, title, selected; |
+ for (var i = 0; i < items.length; i++) { |
+ title = items[i][0]; |
+ value = items[i][1]; |
+ selected = items[i][2]; |
+ element.appendChild(new Option(title, value, false, selected)); |
+ } |
+ }; |
+ |
+ // Set the enabled state for the autoOpenFileTypesResetToDefault button. |
+ AdvancedOptions.SetAutoOpenFileTypesDisabledAttribute = function(disabled) { |
+ if (!cr.isChromeOS) { |
+ $('autoOpenFileTypesResetToDefault').disabled = disabled; |
+ |
+ if (disabled) |
+ $('auto-open-file-types-label').classList.add('disabled'); |
+ else |
+ $('auto-open-file-types-label').classList.remove('disabled'); |
+ } |
+ }; |
+ |
+ // Set the enabled state for the proxy settings button. |
+ AdvancedOptions.SetupProxySettingsSection = function(disabled, label) { |
+ if (!cr.isChromeOS) { |
+ $('proxiesConfigureButton').disabled = disabled; |
+ $('proxiesLabel').textContent = label; |
+ } |
+ }; |
+ |
+ // Set the checked state for the sslCheckRevocation checkbox. |
+ AdvancedOptions.SetCheckRevocationCheckboxState = function( |
+ checked, disabled) { |
+ $('sslCheckRevocation').checked = checked; |
+ $('sslCheckRevocation').disabled = disabled; |
+ }; |
+ |
+ // Set the checked state for the backgroundModeCheckbox element. |
+ AdvancedOptions.SetBackgroundModeCheckboxState = function(checked) { |
+ $('backgroundModeCheckbox').checked = checked; |
+ }; |
+ |
+ // Set the Cloud Print proxy UI to enabled, disabled, or processing. |
+ AdvancedOptions.SetupCloudPrintProxySection = function( |
+ disabled, label, allowed) { |
+ if (!cr.isChromeOS) { |
+ $('cloudPrintProxyLabel').textContent = label; |
+ if (disabled || !allowed) { |
+ $('cloudPrintProxySetupButton').textContent = |
+ localStrings.getString('cloudPrintProxyDisabledButton'); |
+ $('cloudPrintProxyManageButton').style.display = 'none'; |
+ } else { |
+ $('cloudPrintProxySetupButton').textContent = |
+ localStrings.getString('cloudPrintProxyEnabledButton'); |
+ $('cloudPrintProxyManageButton').style.display = 'inline'; |
+ } |
+ $('cloudPrintProxySetupButton').disabled = !allowed; |
+ } |
+ }; |
+ |
+ AdvancedOptions.RemoveCloudPrintProxySection = function() { |
+ if (!cr.isChromeOS) { |
+ var proxySectionElm = $('cloud-print-proxy-section'); |
+ if (proxySectionElm) |
+ proxySectionElm.parentNode.removeChild(proxySectionElm); |
+ } |
+ }; |
+ |
+ // Export |
+ return { |
+ AdvancedOptions: AdvancedOptions |
+ }; |
+ |
+}); |