Index: chrome/common/extensions/docs/examples/api/idle/idle_simple/history.js |
diff --git a/chrome/common/extensions/docs/examples/api/idle/idle_simple/history.js b/chrome/common/extensions/docs/examples/api/idle/idle_simple/history.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1665fc35d43efe5b595a94da4b642a3b1984a4fa |
--- /dev/null |
+++ b/chrome/common/extensions/docs/examples/api/idle/idle_simple/history.js |
@@ -0,0 +1,80 @@ |
+/** |
+ * Convert a state and time into a nice styled chunk of HTML. |
+ */ |
+function renderState(state, time) { |
+ var now = new Date().getTime(); |
+ var diff = Math.round((time.getTime() - now) / 1000); |
+ var str = (diff == 0) ? |
+ "now" : |
+ Math.abs(diff) + " seconds " + (diff > 0 ? "from now" : "ago"); |
+ var col = (state == "active") ? |
+ "#009900" : |
+ "#990000"; |
+ return "<b style='color: " + col + "'>" + state + "</b> " + str; |
+}; |
+ |
+/** |
+ * Creates DOM and injects a rendered state into the page. |
+ */ |
+function renderItem(state, time, parent) { |
+ var dom_item = document.createElement('li'); |
+ dom_item.innerHTML = renderState(state, time); |
+ parent.appendChild(dom_item); |
+}; |
+ |
+// Store previous state so we can show deltas. This is important |
+// because the API currently doesn't fire idle messages, and we'd |
+// like to keep track of last time we went idle. |
+var laststate = null; |
+var laststatetime = null; |
+ |
+/** |
+ * Checks the current state of the browser. |
+ */ |
+function checkState() { |
+ threshold = parseInt(document.querySelector('#idle-threshold').value); |
+ var dom_threshold = document.querySelector('#idle-set-threshold'); |
+ dom_threshold.innerText = threshold; |
+ |
+ // Request the state based off of the user-supplied threshold. |
+ chrome.idle.queryState(threshold, function(state) { |
+ var time = new Date(); |
+ if (laststate != state) { |
+ laststate = state; |
+ laststatetime = time; |
+ } |
+ |
+ // Keep rendering results so we get a nice "seconds elapsed" view. |
+ var dom_result = document.querySelector('#idle-state'); |
+ dom_result.innerHTML = renderState(state, time); |
+ var dom_laststate = document.querySelector('#idle-laststate'); |
+ dom_laststate.innerHTML = renderState(laststate, laststatetime); |
+ }); |
+}; |
+ |
+var dom_history = document.querySelector('#idle-history'); |
+ |
+/** |
+ * Render the data gathered by the background page - should show a log |
+ * of "active" states. No events are fired upon idle. |
+ */ |
+function renderHistory() { |
+ dom_history.innerHTML = ""; |
+ var history_log = chrome.extension.getBackgroundPage().history_log; |
+ for (var i = 0; i < history_log.length; i++) { |
+ var data = history_log[i]; |
+ renderItem(data['state'], data['time'], dom_history); |
+ } |
+}; |
+ |
+ |
+document.addEventListener('DOMContentLoaded', function() { |
+ // Check every second (even though this is overkill - minimum idle |
+ // threshold is 15 seconds) so that the numbers appear to be counting up. |
+ checkState(); |
+ window.setInterval(checkState, 1000); |
+ |
+ // Check every second (see above). |
+ renderHistory(); |
+ window.setInterval(renderHistory, 1000); |
+}); |