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 |