Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / ui / accessibility / extensions / highcontrast / background.js
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 function injectContentScripts() {
6   chrome.windows.getAll({'populate': true}, function(windows) {
7     for (var i = 0; i < windows.length; i++) {
8       var tabs = windows[i].tabs;
9       for (var j = 0; j < tabs.length; j++) {
10         var url = tabs[j].url;
11         if (url.indexOf('chrome') == 0 || url.indexOf('about') == 0) {
12           continue;
13         }
14         chrome.tabs.insertCSS(
15             tabs[j].id,
16             {file: 'highcontrast.css', allFrames: true});
17         chrome.tabs.executeScript(
18             tabs[j].id,
19             {file: 'highcontrast.js', allFrames: true});
20       }
21     }
22   });
23 }
24
25 function updateTabs() {
26   var msg = {
27     'enabled': getEnabled()
28   };
29   chrome.windows.getAll({'populate': true}, function(windows) {
30     for (var i = 0; i < windows.length; i++) {
31       var tabs = windows[i].tabs;
32       for (var j = 0; j < tabs.length; j++) {
33         var url = tabs[j].url;
34         if (isDisallowedUrl(url)) {
35           continue;
36         }
37         var msg = {
38           'enabled': getEnabled(),
39           'scheme': getSiteScheme(siteFromUrl(url))
40         };
41         chrome.tabs.sendRequest(tabs[j].id, msg);
42       }
43     }
44   });
45 }
46
47 function toggleEnabled() {
48   setEnabled(!getEnabled());
49   updateTabs();
50 }
51
52 function toggleSite(url) {
53   var site = siteFromUrl(url);
54   var scheme = getSiteScheme(site);
55   if (scheme > 0) {
56     scheme = 0;
57   } else if (getDefaultScheme() > 0) {
58     scheme = getDefaultScheme();
59   } else {
60     scheme = DEFAULT_SCHEME;
61   }
62   setSiteScheme(site, scheme);
63   updateTabs();
64 }
65
66 function init() {
67   injectContentScripts();
68   updateTabs();
69
70   chrome.extension.onRequest.addListener(
71       function(request, sender, sendResponse) {
72         if (request['toggle_global']) {
73           toggleEnabled();
74         }
75         if (request['toggle_site']) {
76           toggleSite(sender.tab ? sender.tab.url : 'www.example.com');
77         }
78         if (request['init']) {
79           var scheme = getDefaultScheme();
80           if (sender.tab) {
81             scheme = getSiteScheme(siteFromUrl(sender.tab.url));
82           }
83           var msg = {
84             'enabled': getEnabled(),
85             'scheme': scheme
86           };
87           sendResponse(msg);
88         }
89       });
90
91   document.addEventListener('storage', function(evt) {
92     updateTabs();
93   }, false);
94
95   if (navigator.appVersion.indexOf('Mac') != -1) {
96     chrome.browserAction.setTitle({'title': 'High Contrast (Cmd+Shift+F11)'});
97   }
98 }
99
100 init();