michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: // Tests ChromeManifestParser.js michael@0: michael@0: Components.utils.import("resource://gre/modules/ChromeManifestParser.jsm"); michael@0: michael@0: michael@0: function run_test() { michael@0: do_test_pending(); michael@0: createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); michael@0: michael@0: startupManager(); michael@0: michael@0: installAllFiles([do_get_addon("test_chromemanifest_1"), michael@0: do_get_addon("test_chromemanifest_2"), michael@0: do_get_addon("test_chromemanifest_3"), michael@0: do_get_addon("test_chromemanifest_4")], michael@0: function() { michael@0: michael@0: restartManager(); michael@0: run_test_1(); michael@0: }); michael@0: } michael@0: michael@0: function run_test_1() { michael@0: AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", michael@0: "addon2@tests.mozilla.org", michael@0: "addon3@tests.mozilla.org", michael@0: "addon4@tests.mozilla.org"], michael@0: function([a1, a2, a3, a4]) { michael@0: // addon1 michael@0: let a1Uri = a1.getResourceURI("/").spec; michael@0: let expected = [ michael@0: {type: "content", baseURI: a1Uri, args: ["test-addon-1", "chrome/content"]}, michael@0: {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, michael@0: {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, michael@0: {type: "overlay", baseURI: a1Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]} michael@0: ]; michael@0: let manifestURI = a1.getResourceURI("chrome.manifest"); michael@0: let manifest = ChromeManifestParser.parseSync(manifestURI); michael@0: michael@0: do_check_true(Array.isArray(manifest)); michael@0: do_check_eq(manifest.length, expected.length); michael@0: for (let i = 0; i < manifest.length; i++) { michael@0: do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); michael@0: } michael@0: michael@0: // addon2 michael@0: let a2Uri = a2.getResourceURI("/").spec; michael@0: expected = [ michael@0: {type: "content", baseURI: a2Uri, args: ["test-addon-1", "chrome/content"]}, michael@0: {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, michael@0: {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, michael@0: {type: "overlay", baseURI: a2Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, michael@0: {type: "binary-component", baseURI: a2Uri, args: ["components/something.so"]} michael@0: ]; michael@0: manifestURI = a2.getResourceURI("chrome.manifest"); michael@0: manifest = ChromeManifestParser.parseSync(manifestURI); michael@0: michael@0: do_check_true(Array.isArray(manifest)); michael@0: do_check_eq(manifest.length, expected.length); michael@0: for (let i = 0; i < manifest.length; i++) { michael@0: do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); michael@0: } michael@0: michael@0: // addon3 michael@0: let a3Uri = a3.getResourceURI("/").spec; michael@0: expected = [ michael@0: {type: "content", baseURI: a3Uri, args: ["test-addon-1", "chrome/content"]}, michael@0: {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, michael@0: {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, michael@0: {type: "overlay", baseURI: a3Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, michael@0: {type: "binary-component", baseURI: a3Uri, args: ["components/something.so"]}, michael@0: {type: "locale", baseURI: "jar:" + a3.getResourceURI("/inner.jar").spec + "!/", args: ["test-addon-1", "en-NZ", "locale/en-NZ"]}, michael@0: ]; michael@0: manifestURI = a3.getResourceURI("chrome.manifest"); michael@0: manifest = ChromeManifestParser.parseSync(manifestURI); michael@0: michael@0: do_check_true(Array.isArray(manifest)); michael@0: do_check_eq(manifest.length, expected.length); michael@0: for (let i = 0; i < manifest.length; i++) { michael@0: do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); michael@0: } michael@0: michael@0: // addon4 michael@0: let a4Uri = a4.getResourceURI("/").spec; michael@0: expected = [ michael@0: {type: "content", baseURI: a4Uri, args: ["test-addon-1", "chrome/content"]}, michael@0: {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, michael@0: {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, michael@0: {type: "overlay", baseURI: a4Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, michael@0: {type: "binary-component", baseURI: a4.getResourceURI("components/").spec, args: ["mycomponent.dll"]}, michael@0: {type: "binary-component", baseURI: a4.getResourceURI("components/other/").spec, args: ["thermalnuclearwar.dll"]} michael@0: ]; michael@0: manifestURI = a4.getResourceURI("chrome.manifest"); michael@0: manifest = ChromeManifestParser.parseSync(manifestURI); michael@0: michael@0: do_check_true(Array.isArray(manifest)); michael@0: do_check_eq(manifest.length, expected.length); michael@0: for (let i = 0; i < manifest.length; i++) { michael@0: do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); michael@0: } michael@0: michael@0: do_execute_soon(do_test_finished); michael@0: }); michael@0: }