blob: b72f8b59bb5a800ece76371af15d33a9abc02ac5 [file] [log] [blame]
// Copyright (c) 2010 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.
var AddStartupPageOverlay = options.AddStartupPageOverlay;
var AdvancedOptions = options.AdvancedOptions;
var AlertOverlay = options.AlertOverlay;
var AutoFillEditAddressOverlay = options.AutoFillEditAddressOverlay;
var AutoFillEditCreditCardOverlay = options.AutoFillEditCreditCardOverlay;
var AutoFillOptions = options.AutoFillOptions;
var BrowserOptions = options.BrowserOptions;
var ClearBrowserDataOverlay = options.ClearBrowserDataOverlay;
var ContentSettings = options.ContentSettings;
var ContentSettingsExceptionsArea =
options.contentSettings.ContentSettingsExceptionsArea;
var CookiesView = options.CookiesView;
var EditSearchEngineOverlay = options.EditSearchEngineOverlay;
var FontSettings = options.FontSettings;
var ImportDataOverlay = options.ImportDataOverlay;
var InstantConfirmOverlay = options.InstantConfirmOverlay;
var OptionsPage = options.OptionsPage;
var PasswordManager = options.PasswordManager;
var PersonalOptions = options.PersonalOptions;
var Preferences = options.Preferences;
var ProxyOptions = options.ProxyOptions;
var SearchEngineManager = options.SearchEngineManager;
var SearchPage = options.SearchPage;
var StartupPageManager = options.StartupPageManager;
/**
* DOMContentLoaded handler, sets up the page.
*/
function load() {
// Decorate the existing elements in the document.
cr.ui.decorate('input[pref][type=checkbox]', options.PrefCheckbox);
cr.ui.decorate('input[pref][type=number]', options.PrefNumber);
cr.ui.decorate('input[pref][type=radio]', options.PrefRadio);
cr.ui.decorate('input[pref][type=range]', options.PrefRange);
cr.ui.decorate('select[pref]', options.PrefSelect);
cr.ui.decorate('input[pref][type=text]', options.PrefTextField);
cr.ui.decorate('input[pref][type=url]', options.PrefTextField);
cr.ui.decorate('#content-settings-page input[type=radio]',
options.ContentSettingsRadio);
cr.ui.decorate('#fontSettingsMinimumSizeSelector',
options.MinimumFontSizeSelect);
var menuOffPattern = /(^\?|&)menu=off($|&)/;
var menuDisabled = menuOffPattern.test(window.location.search);
document.documentElement.setAttribute('hide-menu', menuDisabled);
localStrings = new LocalStrings();
OptionsPage.register(SearchPage.getInstance());
OptionsPage.register(BrowserOptions.getInstance());
OptionsPage.registerSubPage(SearchEngineManager.getInstance(),
BrowserOptions.getInstance(),
[$('defaultSearchManageEnginesButton')]);
OptionsPage.registerSubPage(StartupPageManager.getInstance(),
BrowserOptions.getInstance(),
[$('startupPageManagerButton')]);
OptionsPage.register(PersonalOptions.getInstance());
OptionsPage.registerSubPage(AutoFillOptions.getInstance(),
PersonalOptions.getInstance(),
[$('autofill-settings')]);
OptionsPage.registerSubPage(PasswordManager.getInstance(),
PersonalOptions.getInstance(),
[$('manage-passwords')]);
if (cr.isChromeOS) {
OptionsPage.register(SystemOptions.getInstance());
OptionsPage.registerSubPage(AboutPage.getInstance(),
SystemOptions.getInstance());
OptionsPage.registerSubPage(LanguageOptions.getInstance(),
SystemOptions.getInstance(),
[$('language-button')]);
OptionsPage.registerSubPage(
new OptionsPage('languageChewing',
localStrings.getString('languageChewingPage'),
'languageChewingPage'),
SystemOptions.getInstance());
OptionsPage.registerSubPage(
new OptionsPage('languageHangul',
localStrings.getString('languageHangulPage'),
'languageHangulPage'),
SystemOptions.getInstance());
OptionsPage.registerSubPage(
new OptionsPage('languageMozc',
localStrings.getString('languageMozcPage'),
'languageMozcPage'),
SystemOptions.getInstance());
OptionsPage.registerSubPage(
new OptionsPage('languagePinyin',
localStrings.getString('languagePinyinPage'),
'languagePinyinPage'),
SystemOptions.getInstance());
OptionsPage.register(InternetOptions.getInstance());
}
OptionsPage.register(AdvancedOptions.getInstance());
OptionsPage.registerSubPage(ContentSettings.getInstance(),
AdvancedOptions.getInstance(),
[$('privacyContentSettingsButton')]);
OptionsPage.registerSubPage(ContentSettingsExceptionsArea.getInstance(),
ContentSettings.getInstance());
OptionsPage.registerSubPage(CookiesView.getInstance(),
ContentSettings.getInstance(),
[$('privacyContentSettingsButton'),
$('show-cookies-button')]);
OptionsPage.registerSubPage(FontSettings.getInstance(),
AdvancedOptions.getInstance(),
[$('fontSettingsCustomizeFontsButton')]);
if (!cr.isWindows && !cr.isMac) {
OptionsPage.registerSubPage(CertificateManager.getInstance(),
AdvancedOptions.getInstance(),
[$('show-cookies-button')]);
OptionsPage.registerOverlay(CertificateRestoreOverlay.getInstance());
OptionsPage.registerOverlay(CertificateBackupOverlay.getInstance());
OptionsPage.registerOverlay(CertificateEditCaTrustOverlay.getInstance());
OptionsPage.registerOverlay(CertificateImportErrorOverlay.getInstance());
}
OptionsPage.registerOverlay(AddStartupPageOverlay.getInstance());
OptionsPage.registerOverlay(AlertOverlay.getInstance());
OptionsPage.registerOverlay(AutoFillEditAddressOverlay.getInstance());
OptionsPage.registerOverlay(AutoFillEditCreditCardOverlay.getInstance());
OptionsPage.registerOverlay(ClearBrowserDataOverlay.getInstance(),
[$('privacyClearDataButton')]);
OptionsPage.registerOverlay(EditSearchEngineOverlay.getInstance());
OptionsPage.registerOverlay(ImportDataOverlay.getInstance());
OptionsPage.registerOverlay(InstantConfirmOverlay.getInstance());
if (cr.isChromeOS) {
OptionsPage.register(AccountsOptions.getInstance());
OptionsPage.registerSubPage(ProxyOptions.getInstance(),
AdvancedOptions.getInstance(),
[$('proxiesConfigureButton')]);
OptionsPage.registerOverlay(new OptionsPage('detailsInternetPage',
'detailsInternetPage',
'detailsInternetPage'));
var languageModifierKeysOverlay = new OptionsPage(
'languageCustomizeModifierKeysOverlay',
localStrings.getString('languageCustomizeModifierKeysOverlay'),
'languageCustomizeModifierKeysOverlay')
OptionsPage.registerOverlay(languageModifierKeysOverlay,
[$('modifier-keys-button')]);
}
Preferences.getInstance().initialize();
OptionsPage.initialize();
var path = document.location.pathname;
var hash = document.location.hash;
if (path.length > 1) {
var pageName = path.slice(1);
OptionsPage.showPageByName(pageName);
if (hash.length > 1)
OptionsPage.handleHashForPage(pageName, hash.slice(1));
} else {
// TODO(csilv): Save/restore last selected page.
OptionsPage.showPageByName(BrowserOptions.getInstance().name);
}
var subpagesNavTabs = document.querySelectorAll('.subpages-nav-tabs');
for(var i = 0; i < subpagesNavTabs.length; i++) {
subpagesNavTabs[i].onclick = function(event) {
OptionsPage.showTab(event.srcElement);
}
}
// Allow platform specific CSS rules.
if (cr.isMac)
document.documentElement.setAttribute('os', 'mac');
if (cr.isLinux)
document.documentElement.setAttribute('toolkit', 'gtk');
if (cr.isViews)
document.documentElement.setAttribute('toolkit', 'views');
}
document.addEventListener('DOMContentLoaded', load);
window.onpopstate = function(e) {
options.OptionsPage.setState(e.state);
};