| Index: ui/accessibility/extensions/highcontrast/popup.js
|
| diff --git a/ui/accessibility/extensions/highcontrast/popup.js b/ui/accessibility/extensions/highcontrast/popup.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b1f5f40aae5fa0cfeceaaa837913948594d1afcc
|
| --- /dev/null
|
| +++ b/ui/accessibility/extensions/highcontrast/popup.js
|
| @@ -0,0 +1,132 @@
|
| +// Copyright (c) 2014 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 site;
|
| +var key1;
|
| +var key2;
|
| +
|
| +function setRadio(name, value) {
|
| + var radios = document.querySelectorAll('input[name="' + name + '"]');
|
| + for (var i = 0; i < radios.length; i++) {
|
| + radios[i].checked = (radios[i].value == value);
|
| + radios[i].disabled = !getEnabled();
|
| + }
|
| +}
|
| +
|
| +function update() {
|
| + document.body.className = getEnabled() ? '' : 'disabled';
|
| +
|
| + if (getEnabled()) {
|
| + $('title').innerText = 'High Contrast is Enabled';
|
| + $('toggle').innerHTML = '<b>Disable</b> ' +
|
| + '<span class="kb">(' + key1 + ')</span>';
|
| + $('subcontrols').style.display = 'block';
|
| + } else {
|
| + $('title').innerText = 'High Contrast is Disabled';
|
| + $('toggle').innerHTML = '<b>Enable</b> ' +
|
| + '<span class="kb">(' + key1 + ')</span>';
|
| + $('subcontrols').style.display = 'none';
|
| + }
|
| +
|
| + setRadio('keyaction', getKeyAction());
|
| + if (site) {
|
| + setRadio('scheme', getSiteScheme(site));
|
| + $('make_default').disabled = (getSiteScheme(site) == getDefaultScheme());
|
| + } else {
|
| + setRadio('scheme', getDefaultScheme());
|
| + }
|
| + if (getEnabled()) {
|
| + document.documentElement.setAttribute(
|
| + 'hc',
|
| + site ? 'a' + getSiteScheme(site) : 'a' + getDefaultScheme());
|
| + } else {
|
| + document.documentElement.setAttribute('hc', 'a0');
|
| + }
|
| + chrome.extension.getBackgroundPage().updateTabs();
|
| +}
|
| +
|
| +function onToggle() {
|
| + setEnabled(!getEnabled());
|
| + update();
|
| +}
|
| +
|
| +function onForget() {
|
| + resetSiteSchemes();
|
| + update();
|
| +}
|
| +
|
| +function onRadioChange(name, value) {
|
| + switch (name) {
|
| + case 'keyaction':
|
| + setKeyAction(value);
|
| + break;
|
| + case 'apply':
|
| + setApply(value);
|
| + break;
|
| + case 'scheme':
|
| + if (site) {
|
| + setSiteScheme(site, value);
|
| + } else {
|
| + setDefaultScheme(value);
|
| + }
|
| + break;
|
| + }
|
| + update();
|
| +}
|
| +
|
| +function onMakeDefault() {
|
| + setDefaultScheme(getSiteScheme(site));
|
| + update();
|
| +}
|
| +
|
| +function addRadioListeners(name) {
|
| + var radios = document.querySelectorAll('input[name="' + name + '"]');
|
| + for (var i = 0; i < radios.length; i++) {
|
| + radios[i].addEventListener('change', function(evt) {
|
| + onRadioChange(evt.target.name, evt.target.value);
|
| + }, false);
|
| + radios[i].addEventListener('click', function(evt) {
|
| + onRadioChange(evt.target.name, evt.target.value);
|
| + }, false);
|
| + }
|
| +}
|
| +
|
| +function init() {
|
| + addRadioListeners('keyaction');
|
| + addRadioListeners('apply');
|
| + addRadioListeners('scheme');
|
| + $('toggle').addEventListener('click', onToggle, false);
|
| + $('make_default').addEventListener('click', onMakeDefault, false);
|
| + $('forget').addEventListener('click', onForget, false);
|
| + if (navigator.appVersion.indexOf('Mac') != -1) {
|
| + key1 = '⌘+Shift+F11';
|
| + key2 = '⌘+Shift+F12';
|
| + } else {
|
| + key1 = 'Shift+F11';
|
| + key2 = 'Shift+F12';
|
| + }
|
| +
|
| + chrome.windows.getLastFocused({'populate': true}, function(window) {
|
| + for (var i = 0; i < window.tabs.length; i++) {
|
| + var tab = window.tabs[i];
|
| + if (tab.active) {
|
| + if (isDisallowedUrl(tab.url)) {
|
| + $('scheme_title').innerText = 'Default color scheme:';
|
| + $('make_default').style.display = 'none';
|
| + } else {
|
| + site = siteFromUrl(tab.url);
|
| + $('scheme_title').innerHTML = 'Color scheme for <b>' + site +
|
| + '</b>:<br><span class="kb">(' + key2 + ')</span>';
|
| + $('make_default').style.display = 'block';
|
| + }
|
| + update();
|
| + return;
|
| + }
|
| + }
|
| + site = 'unknown site';
|
| + update();
|
| + });
|
| +}
|
| +
|
| +window.addEventListener('load', init, false);
|
|
|