|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
3 */ |
|
4 |
|
5 // Tests ChromeManifestParser.js |
|
6 |
|
7 Components.utils.import("resource://gre/modules/ChromeManifestParser.jsm"); |
|
8 |
|
9 |
|
10 function run_test() { |
|
11 do_test_pending(); |
|
12 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); |
|
13 |
|
14 startupManager(); |
|
15 |
|
16 installAllFiles([do_get_addon("test_chromemanifest_1"), |
|
17 do_get_addon("test_chromemanifest_2"), |
|
18 do_get_addon("test_chromemanifest_3"), |
|
19 do_get_addon("test_chromemanifest_4")], |
|
20 function() { |
|
21 |
|
22 restartManager(); |
|
23 run_test_1(); |
|
24 }); |
|
25 } |
|
26 |
|
27 function run_test_1() { |
|
28 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", |
|
29 "addon2@tests.mozilla.org", |
|
30 "addon3@tests.mozilla.org", |
|
31 "addon4@tests.mozilla.org"], |
|
32 function([a1, a2, a3, a4]) { |
|
33 // addon1 |
|
34 let a1Uri = a1.getResourceURI("/").spec; |
|
35 let expected = [ |
|
36 {type: "content", baseURI: a1Uri, args: ["test-addon-1", "chrome/content"]}, |
|
37 {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, |
|
38 {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, |
|
39 {type: "overlay", baseURI: a1Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]} |
|
40 ]; |
|
41 let manifestURI = a1.getResourceURI("chrome.manifest"); |
|
42 let manifest = ChromeManifestParser.parseSync(manifestURI); |
|
43 |
|
44 do_check_true(Array.isArray(manifest)); |
|
45 do_check_eq(manifest.length, expected.length); |
|
46 for (let i = 0; i < manifest.length; i++) { |
|
47 do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); |
|
48 } |
|
49 |
|
50 // addon2 |
|
51 let a2Uri = a2.getResourceURI("/").spec; |
|
52 expected = [ |
|
53 {type: "content", baseURI: a2Uri, args: ["test-addon-1", "chrome/content"]}, |
|
54 {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, |
|
55 {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, |
|
56 {type: "overlay", baseURI: a2Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, |
|
57 {type: "binary-component", baseURI: a2Uri, args: ["components/something.so"]} |
|
58 ]; |
|
59 manifestURI = a2.getResourceURI("chrome.manifest"); |
|
60 manifest = ChromeManifestParser.parseSync(manifestURI); |
|
61 |
|
62 do_check_true(Array.isArray(manifest)); |
|
63 do_check_eq(manifest.length, expected.length); |
|
64 for (let i = 0; i < manifest.length; i++) { |
|
65 do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); |
|
66 } |
|
67 |
|
68 // addon3 |
|
69 let a3Uri = a3.getResourceURI("/").spec; |
|
70 expected = [ |
|
71 {type: "content", baseURI: a3Uri, args: ["test-addon-1", "chrome/content"]}, |
|
72 {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, |
|
73 {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, |
|
74 {type: "overlay", baseURI: a3Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, |
|
75 {type: "binary-component", baseURI: a3Uri, args: ["components/something.so"]}, |
|
76 {type: "locale", baseURI: "jar:" + a3.getResourceURI("/inner.jar").spec + "!/", args: ["test-addon-1", "en-NZ", "locale/en-NZ"]}, |
|
77 ]; |
|
78 manifestURI = a3.getResourceURI("chrome.manifest"); |
|
79 manifest = ChromeManifestParser.parseSync(manifestURI); |
|
80 |
|
81 do_check_true(Array.isArray(manifest)); |
|
82 do_check_eq(manifest.length, expected.length); |
|
83 for (let i = 0; i < manifest.length; i++) { |
|
84 do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); |
|
85 } |
|
86 |
|
87 // addon4 |
|
88 let a4Uri = a4.getResourceURI("/").spec; |
|
89 expected = [ |
|
90 {type: "content", baseURI: a4Uri, args: ["test-addon-1", "chrome/content"]}, |
|
91 {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, |
|
92 {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, |
|
93 {type: "overlay", baseURI: a4Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, |
|
94 {type: "binary-component", baseURI: a4.getResourceURI("components/").spec, args: ["mycomponent.dll"]}, |
|
95 {type: "binary-component", baseURI: a4.getResourceURI("components/other/").spec, args: ["thermalnuclearwar.dll"]} |
|
96 ]; |
|
97 manifestURI = a4.getResourceURI("chrome.manifest"); |
|
98 manifest = ChromeManifestParser.parseSync(manifestURI); |
|
99 |
|
100 do_check_true(Array.isArray(manifest)); |
|
101 do_check_eq(manifest.length, expected.length); |
|
102 for (let i = 0; i < manifest.length; i++) { |
|
103 do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); |
|
104 } |
|
105 |
|
106 do_execute_soon(do_test_finished); |
|
107 }); |
|
108 } |