11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivar site; 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivar key1; 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivar key2; 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction setRadio(name, value) { 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var radios = document.querySelectorAll('input[name="' + name + '"]'); 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (var i = 0; i < radios.length; i++) { 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci radios[i].checked = (radios[i].value == value); 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci radios[i].disabled = !getEnabled(); 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction update() { 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.className = getEnabled() ? '' : 'disabled'; 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (getEnabled()) { 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('title').innerText = 'High Contrast is Enabled'; 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('toggle').innerHTML = '<b>Disable</b> ' + 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci '<span class="kb">(' + key1 + ')</span>'; 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('subcontrols').style.display = 'block'; 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('title').innerText = 'High Contrast is Disabled'; 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('toggle').innerHTML = '<b>Enable</b> ' + 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci '<span class="kb">(' + key1 + ')</span>'; 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('subcontrols').style.display = 'none'; 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setRadio('keyaction', getKeyAction()); 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (site) { 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setRadio('scheme', getSiteScheme(site)); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('make_default').disabled = (getSiteScheme(site) == getDefaultScheme()); 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setRadio('scheme', getDefaultScheme()); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (getEnabled()) { 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.documentElement.setAttribute( 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'hc', 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci site ? 'a' + getSiteScheme(site) : 'a' + getDefaultScheme()); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.documentElement.setAttribute('hc', 'a0'); 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.extension.getBackgroundPage().updateTabs(); 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction onToggle() { 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setEnabled(!getEnabled()); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci update(); 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction onForget() { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci resetSiteSchemes(); 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci update(); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction onRadioChange(name, value) { 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (name) { 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 'keyaction': 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setKeyAction(value); 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 'apply': 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setApply(value); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 'scheme': 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (site) { 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setSiteScheme(site, value); 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setDefaultScheme(value); 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci update(); 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction onMakeDefault() { 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setDefaultScheme(getSiteScheme(site)); 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci update(); 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction addRadioListeners(name) { 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var radios = document.querySelectorAll('input[name="' + name + '"]'); 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (var i = 0; i < radios.length; i++) { 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci radios[i].addEventListener('change', function(evt) { 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci onRadioChange(evt.target.name, evt.target.value); 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, false); 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci radios[i].addEventListener('click', function(evt) { 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci onRadioChange(evt.target.name, evt.target.value); 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, false); 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction init() { 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var i18nElements = document.querySelectorAll('*[i18n-content]'); 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (var i = 0; i < i18nElements.length; i++) { 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var elem = i18nElements[i]; 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var msg = elem.getAttribute('i18n-content'); 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci elem.innerHTML = chrome.i18n.getMessage(msg); 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci addRadioListeners('keyaction'); 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci addRadioListeners('apply'); 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci addRadioListeners('scheme'); 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('toggle').addEventListener('click', onToggle, false); 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('make_default').addEventListener('click', onMakeDefault, false); 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('forget').addEventListener('click', onForget, false); 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (navigator.appVersion.indexOf('Mac') != -1) { 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key1 = '⌘+Shift+F11'; 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key2 = '⌘+Shift+F12'; 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key1 = 'Shift+F11'; 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key2 = 'Shift+F12'; 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.windows.getLastFocused({'populate': true}, function(window) { 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (var i = 0; i < window.tabs.length; i++) { 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var tab = window.tabs[i]; 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (tab.active) { 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (isDisallowedUrl(tab.url)) { 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('scheme_title').innerText = 'Default color scheme:'; 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('make_default').style.display = 'none'; 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci site = siteFromUrl(tab.url); 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('scheme_title').innerHTML = 'Color scheme for <b>' + site + 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci '</b>:<br><span class="kb">(' + key2 + ')</span>'; 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $('make_default').style.display = 'block'; 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci update(); 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci site = 'unknown site'; 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci update(); 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciwindow.addEventListener('load', init, false); 140