Bug 1299846 - Complete the implementation of chrome.idle.queryState, r?kmag
MozReview-Commit-ID: jYsePeTluZ
--- a/toolkit/components/extensions/ext-idle.js
+++ b/toolkit/components/extensions/ext-idle.js
@@ -1,11 +1,18 @@
"use strict";
+XPCOMUtils.defineLazyServiceGetter(this, "idleService",
+ "@mozilla.org/widget/idleservice;1",
+ "nsIIdleService");
+
extensions.registerSchemaAPI("idle", "addon_parent", context => {
return {
idle: {
queryState: function(detectionIntervalInSeconds) {
- return Promise.resolve("active");
+ if (idleService.idleTime < detectionIntervalInSeconds * 1000) {
+ return Promise.resolve("active");
+ }
+ return Promise.resolve("idle");
},
},
};
});
--- a/toolkit/components/extensions/test/xpcshell/test_ext_idle.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_idle.js
@@ -1,30 +1,65 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
-add_task(function* testIdle() {
+Cu.import("resource://testing-common/MockRegistrar.jsm");
+
+let idleService = {
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIIdleService]),
+ idleTime: 19999,
+};
+
+add_task(function* setup() {
+ let fakeIdleService = MockRegistrar.register("@mozilla.org/widget/idleservice;1", idleService);
+ do_register_cleanup(() => {
+ MockRegistrar.unregister(fakeIdleService);
+ });
+});
+
+add_task(function* testIdleActive() {
function background() {
- browser.idle.queryState(15).then(status => {
- browser.test.assertEq("active", status, "Expected status");
+ browser.idle.queryState(20).then(status => {
+ browser.test.assertEq("active", status, "Idle status is active");
browser.test.notifyPass("idle");
},
- e => {
- browser.test.fail(`Error: ${e} :: ${e.stack}`);
+ err => {
+ browser.test.fail(`Error: ${err} :: ${err.stack}`);
browser.test.notifyFail("idle");
});
}
let extension = ExtensionTestUtils.loadExtension({
background,
-
manifest: {
permissions: ["idle"],
},
});
yield extension.startup();
-
yield extension.awaitFinish("idle");
-
yield extension.unload();
});
+
+add_task(function* testIdleIdle() {
+ function background() {
+ browser.idle.queryState(15).then(status => {
+ browser.test.assertEq("idle", status, "Idle status is idle");
+ browser.test.notifyPass("idle");
+ },
+ err => {
+ browser.test.fail(`Error: ${err} :: ${err.stack}`);
+ browser.test.notifyFail("idle");
+ });
+ }
+
+ let extension = ExtensionTestUtils.loadExtension({
+ background,
+ manifest: {
+ permissions: ["idle"],
+ },
+ });
+
+ yield extension.startup();
+ yield extension.awaitFinish("idle");
+ yield extension.unload();
+});