Index: ui/accessibility/extensions/colorenhancer/src/popup.js |
diff --git a/ui/accessibility/extensions/colorenhancer/src/popup.js b/ui/accessibility/extensions/colorenhancer/src/popup.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a63ff8738223031e80f53394e3c62160ac859a00 |
--- /dev/null |
+++ b/ui/accessibility/extensions/colorenhancer/src/popup.js |
@@ -0,0 +1,136 @@ |
+// Copyright 2015 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; |
+ |
+ |
+/** |
+ * Update the popup controls based on settings for this site or the default. |
+ */ |
+function update() { |
+ if (site) { |
+ debugPrint('updated site ' + site + ' to ' + |
+ getSiteDelta(site) + ',' + getSiteSeverity(site)); |
+ $('delta').value = getSiteDelta(site); |
+ $('severity').value = getSiteSeverity(site); |
+ } else { |
+ debugPrint('updated site ' + site + ' to ' + |
+ getDefaultDelta() + ',' + getDefaultSeverity()); |
+ $('delta').value = getDefaultDelta(); |
+ $('severity').value = getDefaultSeverity(); |
+ } |
+ |
+ debugPrint('updated site ' + site + ' type ' + getDefaultType()); |
+ $('type').value = getDefaultType(); |
+ |
+ // TODO(mustaq): Finish simulate feature. |
+ //debugPrint('updated site ' + site + ' simulate ' + getDefaultSimulate()); |
+ //$('simulate').checked = getDefaultSimulate(); |
+ |
+ chrome.extension.getBackgroundPage().updateTabs(); |
+} |
+ |
+ |
+/** |
+ * Callback for color rotation slider. |
+ * |
+ * @param {number} value Parsed value of slider element. |
+ */ |
+function onDeltaChange(value) { |
+ debugPrint('delta changing to ' + value + ' for site ' + site); |
+ if (site) { |
+ setSiteDelta(site, value); |
+ } |
+ setDefaultDelta(value); |
+ update(); |
+} |
+ |
+ |
+/** |
+ * Callback for severity slider. |
+ * |
+ * @param {number} value Parsed value of slider element. |
+ */ |
+function onSeverityChange(value) { |
+ debugPrint('severity changing to ' + value + ' for site ' + site); |
+ if (site) { |
+ setSiteSeverity(site, value); |
+ } |
+ setDefaultSeverity(value); |
+ update(); |
+} |
+ |
+ |
+/** |
+ * Callback for changing color deficiency type. |
+ * |
+ * @param {string} value Value of dropdown element. |
+ */ |
+function onTypeChange(value) { |
+ debugPrint('type changing to ' + value + ' for site ' + site); |
+ setDefaultType(value); |
+ update(); |
+} |
+ |
+ |
+/** |
+ * TODO(mustaq): JsDoc. |
+ */ |
+function onSimulateChange(value) { |
+ debugPrint('simulate changing to ' + value + ' for site ' + site); |
+ setDefaultSimulate(value); |
+ update(); |
+} |
+ |
+ |
+/** |
+ * Reset all stored per-site and default values. |
+ */ |
+function onReset() { |
+ debugPrint('resetting sites'); |
+ resetSiteDeltas(); |
+ resetSiteSeverities(); |
+ update(); |
+} |
+ |
+ |
+/** |
+ * Attach event handlers to controls and update the filter config values for the |
+ * currently visible tab. |
+ */ |
+function initialize() { |
+ $('delta').addEventListener('input', function() { |
+ onDeltaChange(parseFloat(this.value)); |
+ }); |
+ $('severity').addEventListener('input', function() { |
+ onSeverityChange(parseFloat(this.value)); |
+ }); |
+ $('type').addEventListener('input', function() { |
+ onTypeChange(this.value); |
+ }); |
+ // TODO(mustaq): Finish simulate feature. |
+ //$('simulate').addEventListener('change', function() { |
+ // onSimulateChange(!this.checked); |
+ //}); |
+ $('resetall').addEventListener('click', function() { |
+ onReset(); |
+ }); |
+ |
+ chrome.windows.getLastFocused({'populate': true}, function(window) { |
+ for (var i = 0; i < window.tabs.length; i++) { |
+ var tab = window.tabs[i]; |
+ if (tab.active) { |
+ site = siteFromUrl(tab.url); |
+ debugPrint('active tab update ' + site); |
+ update(); |
+ return; |
+ } |
+ } |
+ site = 'unknown site'; |
+ update(); |
+ }); |
+} |
+ |
+// TODO(wnwen): Use Promise instead, more reliable. |
+window.addEventListener('load', initialize, false); |