Index: ui/accessibility/extensions/highcontrast/background.js |
diff --git a/ui/accessibility/extensions/highcontrast/background.js b/ui/accessibility/extensions/highcontrast/background.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..24cba94322e9346760f325282e81706a749b9874 |
--- /dev/null |
+++ b/ui/accessibility/extensions/highcontrast/background.js |
@@ -0,0 +1,100 @@ |
+// 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. |
+ |
+function injectContentScripts() { |
+ chrome.windows.getAll({'populate': true}, function(windows) { |
+ for (var i = 0; i < windows.length; i++) { |
+ var tabs = windows[i].tabs; |
+ for (var j = 0; j < tabs.length; j++) { |
+ var url = tabs[j].url; |
+ if (url.indexOf('chrome') == 0 || url.indexOf('about') == 0) { |
+ continue; |
+ } |
+ chrome.tabs.insertCSS( |
+ tabs[j].id, |
+ {file: 'highcontrast.css', allFrames: true}); |
+ chrome.tabs.executeScript( |
+ tabs[j].id, |
+ {file: 'highcontrast.js', allFrames: true}); |
+ } |
+ } |
+ }); |
+} |
+ |
+function updateTabs() { |
+ var msg = { |
+ 'enabled': getEnabled() |
+ }; |
+ chrome.windows.getAll({'populate': true}, function(windows) { |
+ for (var i = 0; i < windows.length; i++) { |
+ var tabs = windows[i].tabs; |
+ for (var j = 0; j < tabs.length; j++) { |
+ var url = tabs[j].url; |
+ if (isDisallowedUrl(url)) { |
+ continue; |
+ } |
+ var msg = { |
+ 'enabled': getEnabled(), |
+ 'scheme': getSiteScheme(siteFromUrl(url)) |
+ }; |
+ chrome.tabs.sendRequest(tabs[j].id, msg); |
+ } |
+ } |
+ }); |
+} |
+ |
+function toggleEnabled() { |
+ setEnabled(!getEnabled()); |
+ updateTabs(); |
+} |
+ |
+function toggleSite(url) { |
+ var site = siteFromUrl(url); |
+ var scheme = getSiteScheme(site); |
+ if (scheme > 0) { |
+ scheme = 0; |
+ } else if (getDefaultScheme() > 0) { |
+ scheme = getDefaultScheme(); |
+ } else { |
+ scheme = DEFAULT_SCHEME; |
+ } |
+ setSiteScheme(site, scheme); |
+ updateTabs(); |
+} |
+ |
+function init() { |
+ injectContentScripts(); |
+ updateTabs(); |
+ |
+ chrome.extension.onRequest.addListener( |
+ function(request, sender, sendResponse) { |
+ if (request['toggle_global']) { |
+ toggleEnabled(); |
+ } |
+ if (request['toggle_site']) { |
+ toggleSite(sender.tab ? sender.tab.url : 'www.example.com'); |
+ } |
+ if (request['init']) { |
+ var scheme = getDefaultScheme(); |
+ if (sender.tab) { |
+ scheme = getSiteScheme(siteFromUrl(sender.tab.url)); |
+ } |
+ var msg = { |
+ 'enabled': getEnabled(), |
+ 'scheme': scheme |
+ }; |
+ sendResponse(msg); |
+ } |
+ }); |
+ |
+ document.addEventListener('storage', function(evt) { |
+ updateTabs(); |
+ }, false); |
+ |
+ if (navigator.appVersion.indexOf('Mac') != -1) { |
+ chrome.browserAction.setTitle({'title': 'High Contrast (Cmd+Shift+F11)'}); |
+ } |
+} |
+ |
+init(); |