michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: */ michael@0: michael@0: // This just verifies that FUEL integrates to the add-ons manager michael@0: michael@0: var testdata = { michael@0: dummyid: "fuel-dummy-extension@mozilla.org", michael@0: dummyname: "Dummy Extension", michael@0: inspectorid: "addon1@tests.mozilla.org", michael@0: inspectorname: "Test Addon", michael@0: missing: "fuel.fuel-test-missing", michael@0: dummy: "fuel.fuel-test" michael@0: }; michael@0: michael@0: var Application = null michael@0: michael@0: function run_test() { michael@0: var cm = AM_Cc["@mozilla.org/categorymanager;1"]. michael@0: getService(AM_Ci.nsICategoryManager); michael@0: michael@0: try { michael@0: var contract = cm.getCategoryEntry("JavaScript-global-privileged-property", michael@0: "Application"); michael@0: Application = AM_Cc[contract].getService(AM_Ci.extIApplication); michael@0: } michael@0: catch (e) { michael@0: // This application does not include a FUEL variant. michael@0: return; michael@0: } michael@0: michael@0: do_test_pending(); michael@0: createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); michael@0: michael@0: const profileDir = gProfD.clone(); michael@0: profileDir.append("extensions"); michael@0: michael@0: writeInstallRDFForExtension({ michael@0: id: "addon1@tests.mozilla.org", michael@0: version: "1.0", michael@0: name: "Test Addon", michael@0: targetApplications: [{ michael@0: id: "xpcshell@tests.mozilla.org", michael@0: minVersion: "1", michael@0: maxVersion: "1" michael@0: }], michael@0: }, profileDir); michael@0: michael@0: startupManager(); michael@0: michael@0: Application.getExtensions(function(extensions) { michael@0: // test to see if the extensions object is available michael@0: do_check_neq(extensions, null); michael@0: michael@0: // test to see if a non-existant extension exists michael@0: do_check_true(!extensions.has(testdata.dummyid)); michael@0: michael@0: // test to see if an extension exists michael@0: do_check_true(extensions.has(testdata.inspectorid)); michael@0: michael@0: var inspector = extensions.get(testdata.inspectorid); michael@0: do_check_eq(inspector.id, testdata.inspectorid); michael@0: do_check_eq(inspector.name, testdata.inspectorname); michael@0: do_check_eq(inspector.version, "1.0"); michael@0: do_check_true(inspector.firstRun, true); michael@0: do_check_true(inspector.enabled); michael@0: michael@0: // test to see if extension find works michael@0: do_check_eq(extensions.all.length, 1); michael@0: // STORAGE TESTING michael@0: // Make sure the we are given the same extension (cached) so things like .storage work right michael@0: inspector.storage.set("test", "simple check"); michael@0: do_check_true(inspector.storage.has("test")); michael@0: michael@0: var inspector2 = extensions.get(testdata.inspectorid); michael@0: do_check_eq(inspector2.id, testdata.inspectorid); michael@0: do_check_true(inspector.storage.has("test")); michael@0: do_check_eq(inspector2.storage.get("test", "cache"), inspector.storage.get("test", "original")); michael@0: michael@0: inspector.events.addListener("disable", onGenericEvent); michael@0: inspector.events.addListener("enable", onGenericEvent); michael@0: inspector.events.addListener("uninstall", onGenericEvent); michael@0: inspector.events.addListener("cancel", onGenericEvent); michael@0: michael@0: AddonManager.getAddonByID(testdata.inspectorid, function(a) { michael@0: a.userDisabled = true; michael@0: michael@0: do_check_eq(gLastEvent, "disable"); michael@0: michael@0: // enabling after a disable will only fire a 'cancel' event michael@0: // see - http://mxr.mozilla.org/seamonkey/source/toolkit/mozapps/extensions/src/nsExtensionManager.js.in#5216 michael@0: a.userDisabled = false; michael@0: do_check_eq(gLastEvent, "cancel"); michael@0: michael@0: a.uninstall(); michael@0: do_check_eq(gLastEvent, "uninstall"); michael@0: michael@0: a.cancelUninstall(); michael@0: do_check_eq(gLastEvent, "cancel"); michael@0: michael@0: // PREF TESTING michael@0: // Reset the install event preference, so that we can test it again later michael@0: //inspector.prefs.get("install-event-fired").reset(); michael@0: michael@0: // test the value of the preference root michael@0: do_check_eq(extensions.all[0].prefs.root, "extensions.addon1@tests.mozilla.org."); michael@0: michael@0: // test getting nonexistent values michael@0: var itemValue = inspector.prefs.getValue(testdata.missing, "default"); michael@0: do_check_eq(itemValue, "default"); michael@0: michael@0: do_check_eq(inspector.prefs.get(testdata.missing), null); michael@0: michael@0: // test setting and getting a value michael@0: inspector.prefs.setValue(testdata.dummy, "dummy"); michael@0: itemValue = inspector.prefs.getValue(testdata.dummy, "default"); michael@0: do_check_eq(itemValue, "dummy"); michael@0: michael@0: // test for overwriting an existing value michael@0: inspector.prefs.setValue(testdata.dummy, "smarty"); michael@0: itemValue = inspector.prefs.getValue(testdata.dummy, "default"); michael@0: do_check_eq(itemValue, "smarty"); michael@0: michael@0: // test setting and getting a value michael@0: inspector.prefs.get(testdata.dummy).value = "dummy2"; michael@0: itemValue = inspector.prefs.get(testdata.dummy).value; michael@0: do_check_eq(itemValue, "dummy2"); michael@0: michael@0: // test resetting a pref [since there is no default value, the pref should disappear] michael@0: inspector.prefs.get(testdata.dummy).reset(); michael@0: var itemValue = inspector.prefs.getValue(testdata.dummy, "default"); michael@0: do_check_eq(itemValue, "default"); michael@0: michael@0: // test to see if a non-existant property exists michael@0: do_check_true(!inspector.prefs.has(testdata.dummy)); michael@0: michael@0: inspector.prefs.events.addListener("change", onPrefChange); michael@0: inspector.prefs.setValue("fuel.fuel-test", "change event"); michael@0: }); michael@0: }); michael@0: } michael@0: michael@0: function onGenericEvent(event) { michael@0: gLastEvent = event.type; michael@0: } michael@0: michael@0: function onPrefChange(evt) { michael@0: Application.getExtensions(function(extensions) { michael@0: var inspector3 = extensions.get(testdata.inspectorid); michael@0: michael@0: do_check_eq(evt.data, testdata.dummy); michael@0: inspector3.prefs.events.removeListener("change", onPrefChange); michael@0: michael@0: inspector3.prefs.get("fuel.fuel-test").events.addListener("change", onPrefChange2); michael@0: inspector3.prefs.setValue("fuel.fuel-test", "change event2"); michael@0: }); michael@0: } michael@0: michael@0: function onPrefChange2(evt) { michael@0: do_check_eq(evt.data, testdata.dummy); michael@0: michael@0: do_execute_soon(do_test_finished); michael@0: }