dom/apps/tests/test_packaged_app_update.html

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

michael@0 1 <!DOCTYPE html>
michael@0 2 <html>
michael@0 3 <!--
michael@0 4 https://bugzilla.mozilla.org/show_bug.cgi?id={900533}
michael@0 5 -->
michael@0 6 <head>
michael@0 7 <title>Test for Bug {900533} Packaged app update tests</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={900533}">Mozilla Bug {900533}</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
michael@0 23 "use strict";
michael@0 24
michael@0 25 function debug(aMsg) {
michael@0 26 //dump("== Tests debug == " + aMsg + "\n");
michael@0 27 }
michael@0 28
michael@0 29 var miniManifestURL;
michael@0 30
michael@0 31 SimpleTest.waitForExplicitFinish();
michael@0 32
michael@0 33 function checkForUpdate(aExpected, aOnSuccess, aOnApplied, aOnDownloadError,
michael@0 34 aLaunchDownload, aOnRequestError) {
michael@0 35 var lApp = PackagedTestHelper.gApp;
michael@0 36
michael@0 37 lApp.ondownloadsuccess = aOnSuccess || null;
michael@0 38 lApp.ondownloadapplied = aOnApplied || null;
michael@0 39 lApp.ondownloaderror = aOnDownloadError || null;
michael@0 40
michael@0 41 var request = lApp.checkForUpdate();
michael@0 42 request.onerror = aOnRequestError ? aOnRequestError.bind(undefined, request) :
michael@0 43 PackagedTestHelper.mozAppsError;
michael@0 44 request.onsuccess = function(event) {
michael@0 45 var expectingDownload = aExpected ? "": "not ";
michael@0 46 ok(lApp.downloadAvailable === aExpected,
michael@0 47 "Download should " + expectingDownload + "be available");
michael@0 48 if (aLaunchDownload) {
michael@0 49 lApp.download();
michael@0 50 } else {
michael@0 51 PackagedTestHelper.next();
michael@0 52 }
michael@0 53 };
michael@0 54 }
michael@0 55
michael@0 56 function checkLastAppState(aMiniManifestURL, aExpectedReady, aExpectedDownload,
michael@0 57 aExpectedVersion, aCb) {
michael@0 58 ok(true, aExpectedReady ? "App downloaded" : "App download applied");
michael@0 59 var expected = {
michael@0 60 name: PackagedTestHelper.gAppName,
michael@0 61 manifestURL: aMiniManifestURL,
michael@0 62 installOrigin: PackagedTestHelper.gInstallOrigin,
michael@0 63 progress: 0,
michael@0 64 installState: aExpectedReady ? "updating" : "installed",
michael@0 65 downloadAvailable: aExpectedDownload,
michael@0 66 downloading: false,
michael@0 67 size: 0,
michael@0 68 readyToApplyDownload: aExpectedReady
michael@0 69 };
michael@0 70
michael@0 71 PackagedTestHelper.checkAppState(PackagedTestHelper.gApp, aExpectedVersion,
michael@0 72 expected, true, false, aCb);
michael@0 73 }
michael@0 74
michael@0 75 function updateApp(aExpectedReady, aPreviousVersion, aNextVersion) {
michael@0 76 var lApp = PackagedTestHelper.gApp;
michael@0 77
michael@0 78 var ondownloadappliedhandler =
michael@0 79 checkLastAppState.bind(PackagedTestHelper, miniManifestURL, false, false,
michael@0 80 aNextVersion, PackagedTestHelper.next);
michael@0 81
michael@0 82 var ondownloadsuccesshandler =
michael@0 83 checkLastAppState.bind(undefined, miniManifestURL,
michael@0 84 aExpectedReady, false, aPreviousVersion,
michael@0 85 function() {
michael@0 86 navigator.mozApps.mgmt.applyDownload(lApp);
michael@0 87 });
michael@0 88
michael@0 89 checkForUpdate(true, ondownloadsuccesshandler, ondownloadappliedhandler, null,
michael@0 90 true);
michael@0 91
michael@0 92 }
michael@0 93
michael@0 94
michael@0 95 var steps = [
michael@0 96 function() {
michael@0 97 // Set up
michael@0 98 SpecialPowers.setAllAppsLaunchable(true);
michael@0 99 SpecialPowers.addPermission("webapps-manage", true, document);
michael@0 100 ok(true, "Set up");
michael@0 101 PackagedTestHelper.next();
michael@0 102 },
michael@0 103 function() {
michael@0 104 ok(true, "autoConfirmAppInstall");
michael@0 105 SpecialPowers.autoConfirmAppInstall(PackagedTestHelper.next);
michael@0 106 },
michael@0 107 function() {
michael@0 108 PackagedTestHelper.setAppVersion(2, PackagedTestHelper.next);
michael@0 109 },
michael@0 110 function() {
michael@0 111 ok(true, "== TEST == Install packaged app");
michael@0 112 navigator.mozApps.mgmt.oninstall = function(evt) {
michael@0 113 ok(true, "Got oninstall event");
michael@0 114 PackagedTestHelper.gApp = evt.application;
michael@0 115 PackagedTestHelper.gApp.ondownloaderror = function() {
michael@0 116 ok(false, "Download error " + PackagedTestHelper.gApp.downloadError.name);
michael@0 117 PackagedTestHelper.finish();
michael@0 118 };
michael@0 119 PackagedTestHelper.gApp.ondownloadsuccess =
michael@0 120 checkLastAppState.bind(undefined, miniManifestURL, false, false,
michael@0 121 2, PackagedTestHelper.next);
michael@0 122 };
michael@0 123
michael@0 124 var request = navigator.mozApps.installPackage(miniManifestURL);
michael@0 125 request.onerror = PackagedTestHelper.mozAppsError;
michael@0 126 request.onsuccess = function() {
michael@0 127 ok(true, "Application installed");
michael@0 128 };
michael@0 129 },
michael@0 130 function() {
michael@0 131 ok(true, "== TEST == Check for Update and try to download it without update available");
michael@0 132
michael@0 133 function onerror() {
michael@0 134 is(PackagedTestHelper.gApp.downloadError.name, "NO_DOWNLOAD_AVAILABLE", "Download not available");
michael@0 135 ok(!PackagedTestHelper.gApp.readyToApplyDownload, "Not ready to apply download");
michael@0 136 PackagedTestHelper.next();
michael@0 137 }
michael@0 138 function onsuccess() {
michael@0 139 ok(false, "ondownloadsuccess fired");
michael@0 140 PackagedTestHelper.next();
michael@0 141 }
michael@0 142
michael@0 143 checkForUpdate(false, onsuccess, null, onerror, true);
michael@0 144 },
michael@0 145 function() {
michael@0 146 PackagedTestHelper.setAppVersion(3, PackagedTestHelper.next);
michael@0 147 },
michael@0 148 function() {
michael@0 149 ok(true, "== TEST == Update packaged app");
michael@0 150 updateApp(true, 2, 3);
michael@0 151 },
michael@0 152 function() {
michael@0 153 ok(true, "== TEST == Check for Update after getting a new package");
michael@0 154 checkForUpdate(false);
michael@0 155 },
michael@0 156 function() {
michael@0 157 PackagedTestHelper.setAppVersion(4, PackagedTestHelper.next, true);
michael@0 158 },
michael@0 159 function() {
michael@0 160 ok(true, "== TEST == Update packaged app - same package");
michael@0 161 updateApp(false, 3, 3);
michael@0 162 },
michael@0 163 function() {
michael@0 164 ok(true, "== TEST == Check for Update after getting the same package");
michael@0 165 checkForUpdate(false);
michael@0 166 },
michael@0 167 function() {
michael@0 168 PackagedTestHelper.setAppVersion(1, PackagedTestHelper.next);
michael@0 169 },
michael@0 170 function() {
michael@0 171 ok(true, "== TEST == Update packaged app - Updating a pending app");
michael@0 172 miniManifestURL = PackagedTestHelper.gSJS +
michael@0 173 "?getManifest=true" +
michael@0 174 "&appName=arandomname" +
michael@0 175 "&appToFail1";
michael@0 176 PackagedTestHelper.checkAppDownloadError(miniManifestURL,
michael@0 177 "MANIFEST_MISMATCH", 2, false, true,
michael@0 178 "arandomname",
michael@0 179 function () {
michael@0 180 checkForUpdate(false, null, null, null, false,
michael@0 181 function (request) {
michael@0 182 if (request.error.name === "PENDING_APP_NOT_UPDATABLE") {
michael@0 183 ok(true, "Got expected PENDING_APP_NOT_UPDATEABLE");
michael@0 184 } else {
michael@0 185 ok(false, "Got unexpected " + request.error.name);
michael@0 186 }
michael@0 187 PackagedTestHelper.next();
michael@0 188 });
michael@0 189 });
michael@0 190 },
michael@0 191 function() {
michael@0 192 ok(true, "all done!\n");
michael@0 193 PackagedTestHelper.finish();
michael@0 194 }
michael@0 195 ];
michael@0 196
michael@0 197 PackagedTestHelper.setSteps(steps);
michael@0 198 // appToUpdate added to the URL so we get a unique URL for this app.
michael@0 199 // Unique in this case meaning different from the ones used on the
michael@0 200 // install tests
michael@0 201 miniManifestURL = PackagedTestHelper.gSJS + "?getManifest=true&appToUpdate";
michael@0 202
michael@0 203 addLoadEvent(PackagedTestHelper.start);
michael@0 204
michael@0 205 </script>
michael@0 206 </pre>
michael@0 207 </body>
michael@0 208 </html>

mercurial