dom/apps/tests/test_marketplace_pkg_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=989806
     5 -->
     6 <head>
     7   <meta charset="utf-8">
     8   <title>Test for Bug 989806</title>
     9   <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
    10   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    11   <script type="text/javascript" src="test_packaged_app_common.js"></script>
    12   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
    13 </head>
    14 <body>
    16 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=989806">Mozilla Bug 989806</a>
    17 <p id="display"></p>
    18 <div id="content" style="display: none">
    20 </div>
    21 <pre id="test">
    22 <script class="testbody" type="application/javascript;version=1.7">
    24 "use strict";
    26 let gApp = null;
    28 let gExternalInstallOrigin = "http://mochi.test:8888/";
    29 let gExternalAppsPath = gExternalInstallOrigin + "tests/dom/apps/tests/marketplace/";
    31 let gMarketplaceInstallOrigin = "https://marketplace.firefox.com/";
    32 let gMarketplaceAppsPath = gMarketplaceInstallOrigin + "tests/dom/apps/tests/marketplace/";
    34 SimpleTest.waitForExplicitFinish();
    36 function checkAppOnInstallSuccess(aExpected) {
    37   navigator.mozApps.mgmt.oninstall = function(evt) {
    38     info("Got oninstall event");
    39     gApp = evt.application;
    40     gApp.ondownloaderror = function() {
    41       ok(false, "Download should succeed (got error: " +
    42                 gApp.downloadError.name + ")");
    43       PackagedTestHelper.finish();
    44     };
    45     gApp.ondownloadsuccess = function() {
    46       info("App downloaded");
    47       PackagedTestHelper.checkAppState(gApp, aExpected.version, aExpected,
    48                                        true, true, PackagedTestHelper.next);
    49     };
    50   };
    51 }
    53 function checkAppOnInstallError(aExpectedError) {
    54   navigator.mozApps.mgmt.oninstall = function(evt) {
    55     info("Got oninstall event");
    56     gApp = evt.application;
    57     gApp.ondownloaderror = function() {
    58       is(gApp.downloadError.name, aExpectedError,
    59         "Download fails with expected error: " + aExpectedError);
    60       if (gApp.downloadError.name != aExpectedError) {
    61         PackagedTestHelper.finish();
    62       } else {
    63         PackagedTestHelper.next();
    64       }
    65     };
    66     gApp.ondownloadsuccess = function() {
    67       ok(false, "App download should fail");
    68       PackagedTestHelper.finish();
    69     };
    70   };
    71 }
    73 function checkUninstallApp(aApp) {
    74   let req = navigator.mozApps.mgmt.uninstall(aApp);
    76   req.onsuccess = function() {
    77     info("App uninstalled");
    78     aApp.ondownloadsuccess = null;
    79     aApp.ondownloaderror = null;
    80     aApp.onprogress = null;
    81     PackagedTestHelper.next();
    82   };
    83   req.onerror = function(evt) {
    84     ok(false, "App uninstallation should succeed (got unexpected " +
    85               evt.target.error.name + ")");
    86     PackagedTestHelper.finish();
    87   };
    88 }
    90 function installApp(installOrigin, manifestURL) {
    91   let domParent = document.getElementById('container');
    93   let ifr = document.createElement('iframe');
    94   ifr.setAttribute('mozbrowser', 'true');
    95   ifr.setAttribute("src", installOrigin + "tests/dom/apps/tests/pkg_install_iframe.html");
    97   ifr.addEventListener("load", function onIFrameLoad() {
    98     ifr.removeEventListener("load", onIFrameLoad, false);
   100     ifr.contentWindow.postMessage(manifestURL, "*");
   101   }, false);
   103   ifr.addEventListener("mozbrowsererror", function onCertError(e) {
   104     ifr.removeEventListener("mozbrowsererror", onCertError);
   106     ok(false, "mozbrowsererror: " + e.detail.type);
   107     domParent.removeChild(ifr);
   108     PackagedTestHelper.finish();
   109   });
   111   window.addEventListener("message", function onMessage(event) {
   112     window.removeEventListener("message", onMessage);
   114     is(event.data, "Application installed", "Application installed");
   116     domParent.removeChild(ifr);
   117   });
   119   domParent.appendChild(ifr);
   120 }
   122 PackagedTestHelper.setSteps([
   123   function() {
   124     SpecialPowers.setAllAppsLaunchable(true);
   125     SpecialPowers.addPermission("webapps-manage", true, document);
   126     SpecialPowers.addPermission("browser", true, document);
   127     SpecialPowers.autoConfirmAppInstall(() =>
   128       SpecialPowers.pushPrefEnv({set: [["dom.mozBrowserFramesEnabled", true]]},
   129                                 PackagedTestHelper.next));
   130   },
   131   function() {
   132     info("== TEST == Marketplace packaged app from https://marketplace.firefox.com/");
   133     let miniManifestURL = gMarketplaceAppsPath + "marketplace_app.webapp"
   134     let expected = {
   135       name: "Flashlight (Linterna)",
   136       manifestURL: miniManifestURL,
   137       installOrigin: gMarketplaceInstallOrigin.slice(0, -1),
   138       progress: 0,
   139       installState: "installed",
   140       downloadAvailable: false,
   141       downloading: false,
   142       readyToApplyDownload: false,
   143       launch_path: "/index.html",
   144       version: "2.0",
   145     };
   146     checkAppOnInstallSuccess(expected);
   147     installApp(gMarketplaceInstallOrigin, miniManifestURL);
   148   },
   149   function() {
   150     info("== TEST == Marketplace privileged app from https://marketplace.firefox.com/");
   151     let miniManifestURL = gMarketplaceAppsPath + "marketplace_privileged_app.webapp"
   152     let expected = {
   153       name: "KitchenSink",
   154       manifestURL: miniManifestURL,
   155       installOrigin: gMarketplaceInstallOrigin.slice(0, -1),
   156       progress: 0,
   157       installState: "installed",
   158       downloadAvailable: false,
   159       downloading: false,
   160       readyToApplyDownload: false,
   161       launch_path: "/index.html",
   162       version: "0.2.2",
   163     };
   164     checkAppOnInstallSuccess(expected);
   165     installApp(gMarketplaceInstallOrigin, miniManifestURL);
   166   },
   167   function() {
   168     info("== TEST == Marketplace reviewers packaged app from https://marketplace.firefox.com/");
   169     checkAppOnInstallError("INVALID_SIGNATURE");
   170     installApp(gMarketplaceInstallOrigin, gMarketplaceAppsPath + "marketplace_reviewers_app.webapp");
   171   },
   172   function() {
   173     info("== TEST == Marketplace packaged app not from https://marketplace.firefox.com/");
   174     checkAppOnInstallError("INSTALL_FROM_DENIED");
   175     installApp(gExternalInstallOrigin, gExternalAppsPath + "marketplace_app.webapp");
   176   },
   177   function() {
   178     info("== TEST == Marketplace privileged app not from https://marketplace.firefox.com/");
   179     checkAppOnInstallError("INSTALL_FROM_DENIED");
   180     installApp(gExternalInstallOrigin, gExternalAppsPath + "marketplace_privileged_app.webapp");
   181   },
   182   function() {
   183     info("== TEST == Marketplace reviewers packaged app not from https://marketplace.firefox.com/");
   184     checkAppOnInstallError("INVALID_SIGNATURE");
   185     installApp(gExternalInstallOrigin, gExternalAppsPath + "marketplace_reviewers_app.webapp");
   186   },
   187   function() {
   188     PackagedTestHelper.finish();
   189   }
   190 ]);
   192 addLoadEvent(PackagedTestHelper.start);
   194 </script>
   195 </pre>
   196 <div id="container"></div>
   197 </body>
   198 </html>

mercurial