// 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)]); }; $('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'); OptionsPage.showTab($('personal-certs-nav-tab')); chrome.send('coreOptionsUserMetricsAction', ['Options_ManageSSLCertificates']); }; } if (!cr.isChromeOS) { $('proxiesConfigureButton').onclick = function(event) { chrome.send('showNetworkProxySettings'); }; $('downloadLocationChangeButton').onclick = function(event) { chrome.send('selectDownloadLocation'); }; $('promptForDownload').onclick = function(event) { chrome.send('promptForDownloadAction', [String($('promptForDownload').checked)]); }; } else { $('proxiesConfigureButton').onclick = function(event) { OptionsPage.navigateToPage('proxy'); chrome.send('coreOptionsUserMetricsAction', ['Options_ShowProxySettings']); }; } $('sslCheckRevocation').onclick = function(event) { chrome.send('checkRevocationCheckboxAction', [String($('sslCheckRevocation').checked)]); }; $('sslUseSSL3').onclick = function(event) { chrome.send('useSSL3CheckboxAction', [String($('sslUseSSL3').checked)]); }; $('sslUseTLS1').onclick = function(event) { chrome.send('useTLS1CheckboxAction', [String($('sslUseTLS1').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'); }; } if ($('remotingSetupButton')) { $('remotingSetupButton').onclick = function(event) { chrome.send('showRemotingSetupDialog'); } $('remotingStopButton').onclick = function(event) { chrome.send('disableRemoting'); } } } }; // // 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; }; // Set the download path. AdvancedOptions.SetDownloadLocationPath = function(path, disabled) { if (!cr.isChromeOS) { $('downloadLocationPath').value = path; $('downloadLocationChangeButton').disabled = disabled; } }; // Set the prompt for download checkbox. AdvancedOptions.SetPromptForDownload = function(checked, disabled) { if (!cr.isChromeOS) { $('promptForDownload').checked = checked; $('promptForDownload').disabled = disabled; if (disabled) $('promptForDownloadLabel').className = 'informational-text'; else $('promptForDownloadLabel').className = ''; } }; // 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) { $('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 sslUseSSL3 checkbox. AdvancedOptions.SetUseSSL3CheckboxState = function(checked, disabled) { $('sslUseSSL3').checked = checked; $('sslUseSSL3').disabled = disabled; }; // Set the checked state for the sslUseTLS1 checkbox. AdvancedOptions.SetUseTLS1CheckboxState = function(checked, disabled) { $('sslUseTLS1').checked = checked; $('sslUseTLS1').disabled = disabled; }; // 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); } }; AdvancedOptions.SetRemotingStatus = function(enabled, status) { if (enabled) { $('remotingSetupButton').style.display = 'none'; $('remotingStopButton').style.display = 'inline'; } else { $('remotingSetupButton').style.display = 'inline'; $('remotingStopButton').style.display = 'none'; } $('remotingStatus').textContent = status; }; AdvancedOptions.RemoveRemotingSection = function() { var proxySectionElm = $('remoting-section'); if (proxySectionElm) proxySectionElm.parentNode.removeChild(proxySectionElm); }; // Export return { AdvancedOptions: AdvancedOptions }; });