|
1 <?xml version="1.0"?> |
|
2 |
|
3 <!-- Any copyright is dedicated to the Public Domain. |
|
4 - http://creativecommons.org/publicdomain/zero/1.0/ --> |
|
5 |
|
6 <?xml-stylesheet type="text/css" href="chrome://global/skin"?> |
|
7 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?> |
|
8 |
|
9 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" |
|
10 title="Mozilla Bug 741549"> |
|
11 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> |
|
12 <script type="application/javascript" src="head.js"/> |
|
13 <!-- test results are displayed in the html:body --> |
|
14 <body xmlns="http://www.w3.org/1999/xhtml"> |
|
15 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=741549" |
|
16 target="_blank">Mozilla Bug 741549</a><br/> |
|
17 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=734294" |
|
18 target="_blank">Mozilla Bug 734294</a> |
|
19 </body> |
|
20 |
|
21 <script> |
|
22 <![CDATA[ |
|
23 |
|
24 var url = "http://test/chrome/dom/tests/mochitest/webapps/apps/basic.webapp"; |
|
25 var app; |
|
26 |
|
27 var steps = [ |
|
28 getInstalledReturnsNothing, |
|
29 install, |
|
30 getInstalledReturnsApp, |
|
31 getSelf, |
|
32 uninstall, |
|
33 ]; |
|
34 |
|
35 runAll(steps); |
|
36 |
|
37 function getInstalledReturnsNothing(next) { |
|
38 navigator.mozApps.getInstalled().onsuccess = function() { |
|
39 is(this.result.length, 0, "getInstalled() returns nothing"); |
|
40 next(); |
|
41 }; |
|
42 } |
|
43 |
|
44 function install(next) { |
|
45 var beforehand = Date.now(); |
|
46 const fuzzySpan = 250; |
|
47 |
|
48 confirmNextInstall(); |
|
49 navigator.mozApps.install(url, null).onsuccess = function onInstall() { |
|
50 app = this.result; |
|
51 |
|
52 is(app.origin, "http://test", "origin"); |
|
53 is(app.installOrigin, "chrome://mochitests", "install origin"); |
|
54 ok(app.installTime + fuzzySpan >= beforehand, "install time is after install() call"); |
|
55 ok(app.installTime <= Date.now() + fuzzySpan, "install time is before install success"); |
|
56 is(app.manifestURL, url, "manifest URL"); |
|
57 is(app.manifest.name, "Basic App", "manifest.name"); |
|
58 is(app.manifest.installs_allowed_from, "*", |
|
59 "manifest.installs_allowed_from"); |
|
60 |
|
61 next(); |
|
62 } |
|
63 } |
|
64 |
|
65 function getInstalledReturnsApp(next) { |
|
66 navigator.mozApps.getInstalled().onsuccess = function onGetInstalled() { |
|
67 // Retrieve the app we just installed from the list of installed apps. |
|
68 var a = [a for (a of this.result) if (a.manifestURL == url)][0]; |
|
69 |
|
70 // Compare the values of the two app objects to make sure install() |
|
71 // and getInstalled() return identical objects. |
|
72 isDeeply(a, app, "getInstalled() returns app identical to install()"); |
|
73 |
|
74 next(); |
|
75 }; |
|
76 } |
|
77 |
|
78 function getSelf(next) { |
|
79 navigator.mozApps.getSelf().onsuccess = function onGetSelf() { |
|
80 is(this.result, null, "getSelf() returns nothing (different origin)"); |
|
81 |
|
82 next(); |
|
83 }; |
|
84 } |
|
85 |
|
86 function uninstall(next) { |
|
87 navigator.mozApps.mgmt.uninstall(app).onsuccess = function onUninstall() { |
|
88 // Try to retrieve the app we just uninstalled, to make sure it no longer |
|
89 // exists in the registry. |
|
90 navigator.mozApps.getInstalled().onsuccess = function onGetInstalled() { |
|
91 var a = [a for (a of this.result) if (a.manifestURL == url)][0]; |
|
92 is(a, undefined, "getInstalled() returns nothing again after uninstall"); |
|
93 |
|
94 next(); |
|
95 }; |
|
96 }; |
|
97 } |
|
98 |
|
99 ]]> |
|
100 </script> |
|
101 </window> |