dom/apps/tests/test_packaged_app_install.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 <!DOCTYPE html>
michael@0 2 <html>
michael@0 3 <!--
michael@0 4 https://bugzilla.mozilla.org/show_bug.cgi?id={821589}
michael@0 5 -->
michael@0 6 <head>
michael@0 7 <title>Test for Bug {821589} Packaged apps installation and update</title>
michael@0 8 <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
michael@0 9 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
michael@0 10 <script type="text/javascript" src="test_packaged_app_common.js"></script>
michael@0 11 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
michael@0 12 </head>
michael@0 13 <body>
michael@0 14
michael@0 15 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={821589}">Mozilla Bug {821589}</a>
michael@0 16 <p id="display"></p>
michael@0 17 <div id="content" style="display: none">
michael@0 18
michael@0 19 </div>
michael@0 20 <pre id="test">
michael@0 21 <script class="testbody" type="text/javascript">
michael@0 22 "use strict";
michael@0 23
michael@0 24 function debug(aMsg) {
michael@0 25 //dump("== Tests debug == " + aMsg + "\n");
michael@0 26 }
michael@0 27
michael@0 28 function checkAppInstallError(aMiniManifestURL, aExpectedError) {
michael@0 29 var req = navigator.mozApps.installPackage(aMiniManifestURL);
michael@0 30 req.onsuccess = function() {
michael@0 31 ok(false, "We are supposed to throw " + aExpectedError);
michael@0 32 PackagedTestHelper.finish();
michael@0 33 };
michael@0 34 req.onerror = function(evt) {
michael@0 35 var error = evt.target.error.name;
michael@0 36 if (error == aExpectedError) {
michael@0 37 ok(true, "Got expected " + aExpectedError);
michael@0 38 PackagedTestHelper.next();
michael@0 39 } else {
michael@0 40 ok(false, "Got unexpected " + error);
michael@0 41 PackagedTestHelper.finish();
michael@0 42 }
michael@0 43 };
michael@0 44 }
michael@0 45
michael@0 46 function checkUninstallApp(aApp) {
michael@0 47 var req = navigator.mozApps.mgmt.uninstall(aApp);
michael@0 48 req.onsuccess = function() {
michael@0 49 ok(true, "App uninstalled");
michael@0 50 aApp.ondownloadsuccess = null;
michael@0 51 aApp.ondownloaderror = null;
michael@0 52 aApp.onprogress = null;
michael@0 53 PackagedTestHelper.next();
michael@0 54 };
michael@0 55 req.onerror = function(evt) {
michael@0 56 ok(false, "Got unexpected " + evt.target.error.name);
michael@0 57 PackagedTestHelper.finish();
michael@0 58 };
michael@0 59 }
michael@0 60
michael@0 61 function checkInstalledApp(aMiniManifestURL,
michael@0 62 aVersion,
michael@0 63 aExpectedApp,
michael@0 64 aLaunchable,
michael@0 65 aCb) {
michael@0 66 var req = navigator.mozApps.checkInstalled(aMiniManifestURL);
michael@0 67 req.onsuccess = function(evt) {
michael@0 68 ok(req.result, "The app is installed");
michael@0 69
michael@0 70 if (!req.result) {
michael@0 71 PackagedTestHelper.finish();
michael@0 72 }
michael@0 73
michael@0 74 PackagedTestHelper.checkAppState(evt.application, aVersion, aExpectedApp,
michael@0 75 aLaunchable, false, aCb);
michael@0 76 };
michael@0 77 }
michael@0 78
michael@0 79 SimpleTest.waitForExplicitFinish();
michael@0 80
michael@0 81 var steps = [
michael@0 82 function() {
michael@0 83 // Set up
michael@0 84 SpecialPowers.setAllAppsLaunchable(true);
michael@0 85 SpecialPowers.addPermission("webapps-manage", true, document);
michael@0 86 ok(true, "Set up");
michael@0 87 PackagedTestHelper.next();
michael@0 88 },
michael@0 89 function() {
michael@0 90 ok(true, "autoConfirmAppInstall");
michael@0 91 SpecialPowers.autoConfirmAppInstall(PackagedTestHelper.next);
michael@0 92 },
michael@0 93 function() {
michael@0 94 PackagedTestHelper.setAppVersion(0, PackagedTestHelper.next);
michael@0 95 },
michael@0 96 function() {
michael@0 97 // Bug 927699 - navigator.mozApps.install(url) lets NS_ERROR_FAILURE onto
michael@0 98 // the web.
michael@0 99 ok(true, "== TEST == INVALID_URL");
michael@0 100 checkAppInstallError("", "INVALID_URL");
michael@0 101 },
michael@0 102 function() {
michael@0 103 // Test network error.
michael@0 104 ok(true, "== TEST == Network error");
michael@0 105 checkAppInstallError("http://notvalidurl", "NETWORK_ERROR");
michael@0 106 },
michael@0 107 function() {
michael@0 108 // Test wrong mini-manifest content type.
michael@0 109 ok(true, "== TEST == Not valid mini-manifest content type");
michael@0 110 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 111 "?getManifest=true" +
michael@0 112 "&noManifestContentType=true";
michael@0 113 checkAppInstallError(miniManifestURL, "INVALID_MANIFEST");
michael@0 114 },
michael@0 115 function() {
michael@0 116 // Test mini-manifest 'size' value is not number. Bug 839435.
michael@0 117 ok(true, "== TEST == Size value is not a number");
michael@0 118 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 119 "?getManifest=true" +
michael@0 120 "&packageSize=\"NotANumber\"";
michael@0 121 checkAppInstallError(miniManifestURL, "INVALID_MANIFEST");
michael@0 122 },
michael@0 123 function() {
michael@0 124 // Test mini-manifest negative 'size' value. Bug 839435.
michael@0 125 ok(true, "== TEST == Negative size value");
michael@0 126 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 127 "?getManifest=true" +
michael@0 128 "&packageSize=-1";
michael@0 129 checkAppInstallError(miniManifestURL, "INVALID_MANIFEST");
michael@0 130 },
michael@0 131 function() {
michael@0 132 // Test wrong package path
michael@0 133 ok(true, "== TEST == Installing app with wrong package path");
michael@0 134 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 135 "?getManifest=true" +
michael@0 136 "&wrongPackagePath=true";
michael@0 137 checkAppInstallError(miniManifestURL, "INVALID_MANIFEST");
michael@0 138 },
michael@0 139 function() {
michael@0 140 // Test no manifest in zip file.
michael@0 141 ok(true, "== TEST == No manifest in the zip file");
michael@0 142 var miniManifestURL = PackagedTestHelper.gSJS + "?getManifest=true";
michael@0 143 PackagedTestHelper.checkAppDownloadError(miniManifestURL,
michael@0 144 "MISSING_MANIFEST", 0, true, true,
michael@0 145 PackagedTestHelper.gAppName);
michael@0 146 },
michael@0 147 function() {
michael@0 148 PackagedTestHelper.setAppVersion(1, PackagedTestHelper.next);
michael@0 149 },
michael@0 150 function() {
michael@0 151 // Test mini-manifest app name is different from the webapp manifest name.
michael@0 152 // Bug 844243.
michael@0 153 ok(true, "== TEST == Mini-manifest app name is different from webapp " +
michael@0 154 "manifest name");
michael@0 155 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 156 "?getManifest=true" +
michael@0 157 "&appName=arandomname";
michael@0 158 PackagedTestHelper.checkAppDownloadError(miniManifestURL,
michael@0 159 "MANIFEST_MISMATCH", 1, true, true,
michael@0 160 "arandomname");
michael@0 161 },
michael@0 162 function() {
michael@0 163 // Test mini-manifest dev name is different from the webapp manifest dev
michael@0 164 // name.
michael@0 165 ok (true, "== TEST == Mini-manifest dev name is different from manifest " +
michael@0 166 "dev name");
michael@0 167 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 168 "?getManifest=true" +
michael@0 169 "&devName=arandomdevname";
michael@0 170 PackagedTestHelper.checkAppDownloadError(miniManifestURL,
michael@0 171 "MANIFEST_MISMATCH", 1, true, true,
michael@0 172 PackagedTestHelper.gAppName);
michael@0 173 },
michael@0 174 function() {
michael@0 175 // Test mini-manifest dev url is different from the webapp manifest dev
michael@0 176 // url.
michael@0 177 ok (true, "== TEST == Mini-manifest dev url is different from manifest " +
michael@0 178 "dev url");
michael@0 179 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 180 "?getManifest=true" +
michael@0 181 "&devUrl=arandomdevurl";
michael@0 182 PackagedTestHelper.checkAppDownloadError(miniManifestURL,
michael@0 183 "MANIFEST_MISMATCH", 1, true, true,
michael@0 184 PackagedTestHelper.gAppName);
michael@0 185 },
michael@0 186 function() {
michael@0 187 PackagedTestHelper.setAppVersion(2, PackagedTestHelper.next);
michael@0 188 },
michael@0 189 function() {
michael@0 190 ok(true, "== TEST == Install packaged app");
michael@0 191 var miniManifestURL = PackagedTestHelper.gSJS +
michael@0 192 "?getManifest=true";
michael@0 193 navigator.mozApps.mgmt.oninstall = function(evt) {
michael@0 194 ok(true, "Got oninstall event");
michael@0 195 PackagedTestHelper.gApp = evt.application;
michael@0 196 PackagedTestHelper.gApp.ondownloaderror = function() {
michael@0 197 ok(false, "Download error " +
michael@0 198 PackagedTestHelper.gApp.downloadError.name);
michael@0 199 PackagedTestHelper.finish();
michael@0 200 };
michael@0 201 PackagedTestHelper.gApp.ondownloadsuccess = function() {
michael@0 202 ok(true, "App downloaded");
michael@0 203 var expected = {
michael@0 204 name: PackagedTestHelper.gAppName,
michael@0 205 manifestURL: miniManifestURL,
michael@0 206 installOrigin: PackagedTestHelper.gInstallOrigin,
michael@0 207 progress: 0,
michael@0 208 installState: "installed",
michael@0 209 downloadAvailable: false,
michael@0 210 downloading: false,
michael@0 211 downloadSize: 0,
michael@0 212 size: 0,
michael@0 213 readyToApplyDownload: false
michael@0 214 };
michael@0 215 PackagedTestHelper.checkAppState(PackagedTestHelper.gApp, 2, expected,
michael@0 216 true, false, PackagedTestHelper.next);
michael@0 217 };
michael@0 218 };
michael@0 219
michael@0 220 var request = navigator.mozApps.installPackage(miniManifestURL);
michael@0 221 request.onerror = PackagedTestHelper.mozAppsError;
michael@0 222 request.onsuccess = function() {
michael@0 223 ok(true, "Application installed");
michael@0 224 };
michael@0 225 },
michael@0 226 function() {
michael@0 227 ok(true, "all done!\n");
michael@0 228 PackagedTestHelper.finish();
michael@0 229 }
michael@0 230 ];
michael@0 231
michael@0 232 PackagedTestHelper.setSteps(steps);
michael@0 233
michael@0 234 addLoadEvent(PackagedTestHelper.start);
michael@0 235
michael@0 236 </script>
michael@0 237 </pre>
michael@0 238 </body>
michael@0 239 </html>

mercurial