Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3504)

Unified Diff: chrome/common/extensions/docs/examples/extensions/talking_alarm_clock/background.js

Issue 8114011: Add sample extensions that use the text-to-speech (TTS) API. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/examples/extensions/talking_alarm_clock/background.js
===================================================================
--- chrome/common/extensions/docs/examples/extensions/talking_alarm_clock/background.js (revision 0)
+++ chrome/common/extensions/docs/examples/extensions/talking_alarm_clock/background.js (revision 0)
@@ -0,0 +1,120 @@
+var a1Timer = null;
+var a2Timer = null;
+var port = null;
+var iconFlashTimer = null;
+
+var HOUR_MS = 1000 * 60 * 60;
+
+// Override from common.js
+window.stopFlashingIcon = function() {
+ window.clearTimeout(iconFlashTimer);
+ chrome.browserAction.setIcon({'path': 'clock-19.png'});
+};
+
+// Override from common.js
+window.flashIcon = function() {
+ var flashes = 10;
+ function flash() {
+ if (flashes == 0) {
+ stopFlashingIcon();
+ return;
+ }
+
+ if (flashes % 2 == 0) {
+ chrome.browserAction.setIcon({'path': 'clock-highlighted-19.png'});
+ } else {
+ chrome.browserAction.setIcon({'path': 'clock-19.png'});
+ }
+ flashes--;
+ iconFlashTimer = window.setTimeout(flash, 500);
+ }
+ flash();
+};
+
+function setTimer(alarmHours, alarmMinutes) {
+ var alarmTime = (alarmHours * 60 + alarmMinutes) * 60 * 1000;
+ var d = new Date();
+ var now = d.getHours() * HOUR_MS +
+ d.getMinutes() * 60 * 1000 +
+ d.getSeconds() * 1000;
+ var delta = (alarmTime - now);
+
+ if (delta >= -5000 && delta < 1000) {
+ ringAlarm(alarmHours, alarmMinutes);
+ if (port) {
+ port.postMessage({'cmd': 'anim'});
+ }
+ return null;
+ }
+
+ if (delta < 0) {
+ delta += HOUR_MS * 24;
+ }
+ if (delta >= 1000) {
+ if (delta > HOUR_MS) {
+ delta = HOUR_MS;
+ }
+ console.log('Timer set for ' + delta + ' ms');
+ return window.setTimeout(resetTimers, delta);
+ }
+
+ return null;
+};
+
+function resetTimers() {
+ if (a1Timer) {
+ window.clearTimeout(a1Timer);
+ }
+
+ try {
+ var a1_on = (localStorage['a1_on'] == 'true');
+ var a1_tt = localStorage['a1_tt'] || DEFAULT_A1_TT;
+ var a1_ampm = localStorage['a1_ampm'] || DEFAULT_A1_AMPM;
+ if (a1_on) {
+ var alarmHoursMinutes = parseTime(a1_tt, a1_ampm);
+ var alarmHours = alarmHoursMinutes[0];
+ var alarmMinutes = alarmHoursMinutes[1];
+ a1Timer = setTimer(alarmHours, alarmMinutes);
+ }
+ } catch (e) {
+ console.log(e);
+ }
+
+ try {
+ var a2_on = (localStorage['a2_on'] == 'true');
+ var a2_tt = localStorage['a2_tt'] || DEFAULT_A2_TT;
+ var a2_ampm = localStorage['a2_ampm'] || DEFAULT_A2_AMPM;
+ if (a2_on) {
+ var alarmHoursMinutes = parseTime(a2_tt, a2_ampm);
+ var alarmHours = alarmHoursMinutes[0];
+ var alarmMinutes = alarmHoursMinutes[1];
+ a2Timer = setTimer(alarmHours, alarmMinutes);
+ }
+ } catch (e) {
+ console.log(e);
+ }
+
+ if (a1_on || a2_on) {
+ chrome.browserAction.setIcon({'path': 'clock-19.png'});
+ } else {
+ chrome.browserAction.setIcon({'path': 'clock-disabled-19.png'});
+ }
+}
+
+function onLocalStorageChange() {
+ resetTimers();
+}
+
+function initBackground() {
+ window.addEventListener('storage', onLocalStorageChange, false);
+
+ chrome.extension.onConnect.addListener(function(popupPort) {
+ port = popupPort;
+ port.onDisconnect.addListener(function() {
+ port = null;
+ });
+ });
+}
+
+initBackground();
+resetTimers();
Property changes on: chrome/common/extensions/docs/examples/extensions/talking_alarm_clock/background.js
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698