1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/mozapps/extensions/test/xpcshell/test_ChromeManifestParser.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,108 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.6 + */ 1.7 + 1.8 +// Tests ChromeManifestParser.js 1.9 + 1.10 +Components.utils.import("resource://gre/modules/ChromeManifestParser.jsm"); 1.11 + 1.12 + 1.13 +function run_test() { 1.14 + do_test_pending(); 1.15 + createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); 1.16 + 1.17 + startupManager(); 1.18 + 1.19 + installAllFiles([do_get_addon("test_chromemanifest_1"), 1.20 + do_get_addon("test_chromemanifest_2"), 1.21 + do_get_addon("test_chromemanifest_3"), 1.22 + do_get_addon("test_chromemanifest_4")], 1.23 + function() { 1.24 + 1.25 + restartManager(); 1.26 + run_test_1(); 1.27 + }); 1.28 +} 1.29 + 1.30 +function run_test_1() { 1.31 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.32 + "addon2@tests.mozilla.org", 1.33 + "addon3@tests.mozilla.org", 1.34 + "addon4@tests.mozilla.org"], 1.35 + function([a1, a2, a3, a4]) { 1.36 + // addon1 1.37 + let a1Uri = a1.getResourceURI("/").spec; 1.38 + let expected = [ 1.39 + {type: "content", baseURI: a1Uri, args: ["test-addon-1", "chrome/content"]}, 1.40 + {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, 1.41 + {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, 1.42 + {type: "overlay", baseURI: a1Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]} 1.43 + ]; 1.44 + let manifestURI = a1.getResourceURI("chrome.manifest"); 1.45 + let manifest = ChromeManifestParser.parseSync(manifestURI); 1.46 + 1.47 + do_check_true(Array.isArray(manifest)); 1.48 + do_check_eq(manifest.length, expected.length); 1.49 + for (let i = 0; i < manifest.length; i++) { 1.50 + do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); 1.51 + } 1.52 + 1.53 + // addon2 1.54 + let a2Uri = a2.getResourceURI("/").spec; 1.55 + expected = [ 1.56 + {type: "content", baseURI: a2Uri, args: ["test-addon-1", "chrome/content"]}, 1.57 + {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, 1.58 + {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, 1.59 + {type: "overlay", baseURI: a2Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, 1.60 + {type: "binary-component", baseURI: a2Uri, args: ["components/something.so"]} 1.61 + ]; 1.62 + manifestURI = a2.getResourceURI("chrome.manifest"); 1.63 + manifest = ChromeManifestParser.parseSync(manifestURI); 1.64 + 1.65 + do_check_true(Array.isArray(manifest)); 1.66 + do_check_eq(manifest.length, expected.length); 1.67 + for (let i = 0; i < manifest.length; i++) { 1.68 + do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); 1.69 + } 1.70 + 1.71 + // addon3 1.72 + let a3Uri = a3.getResourceURI("/").spec; 1.73 + expected = [ 1.74 + {type: "content", baseURI: a3Uri, args: ["test-addon-1", "chrome/content"]}, 1.75 + {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, 1.76 + {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, 1.77 + {type: "overlay", baseURI: a3Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, 1.78 + {type: "binary-component", baseURI: a3Uri, args: ["components/something.so"]}, 1.79 + {type: "locale", baseURI: "jar:" + a3.getResourceURI("/inner.jar").spec + "!/", args: ["test-addon-1", "en-NZ", "locale/en-NZ"]}, 1.80 + ]; 1.81 + manifestURI = a3.getResourceURI("chrome.manifest"); 1.82 + manifest = ChromeManifestParser.parseSync(manifestURI); 1.83 + 1.84 + do_check_true(Array.isArray(manifest)); 1.85 + do_check_eq(manifest.length, expected.length); 1.86 + for (let i = 0; i < manifest.length; i++) { 1.87 + do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); 1.88 + } 1.89 + 1.90 + // addon4 1.91 + let a4Uri = a4.getResourceURI("/").spec; 1.92 + expected = [ 1.93 + {type: "content", baseURI: a4Uri, args: ["test-addon-1", "chrome/content"]}, 1.94 + {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, 1.95 + {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, 1.96 + {type: "overlay", baseURI: a4Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, 1.97 + {type: "binary-component", baseURI: a4.getResourceURI("components/").spec, args: ["mycomponent.dll"]}, 1.98 + {type: "binary-component", baseURI: a4.getResourceURI("components/other/").spec, args: ["thermalnuclearwar.dll"]} 1.99 + ]; 1.100 + manifestURI = a4.getResourceURI("chrome.manifest"); 1.101 + manifest = ChromeManifestParser.parseSync(manifestURI); 1.102 + 1.103 + do_check_true(Array.isArray(manifest)); 1.104 + do_check_eq(manifest.length, expected.length); 1.105 + for (let i = 0; i < manifest.length; i++) { 1.106 + do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); 1.107 + } 1.108 + 1.109 + do_execute_soon(do_test_finished); 1.110 + }); 1.111 +}