dom/apps/tests/test_packaged_app_install.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.

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

mercurial