Bug 803628 - Fixing test file for bug 795164 [r=fabrice]
authorEtienne Segonzac <etienne@segonzac.info>
Mon, 22 Oct 2012 22:07:46 -0700
changeset 111245 1f5c210cc85508df38298fd34dcde23fbe744a87
parent 111244 2263f8c760ff526d355e7c43cad0f65c3e58ea86
child 111246 618a14edc7e0aa5f3e81719e6717f5e5ec183188
push id93
push usernmatsakis@mozilla.com
push dateWed, 31 Oct 2012 21:26:57 +0000
reviewersfabrice
bugs803628, 795164
milestone19.0a1
Bug 803628 - Fixing test file for bug 795164 [r=fabrice]
dom/tests/mochitest/webapps/Makefile.in
dom/tests/mochitest/webapps/test_bug_795164.xul
--- a/dom/tests/mochitest/webapps/Makefile.in
+++ b/dom/tests/mochitest/webapps/Makefile.in
@@ -14,16 +14,17 @@ DIRS = \
     apps \
     $(NULL)
 
 MOCHITEST_CHROME_FILES = \
     bug_765063.xul \
     cross_origin.html \
     head.js \
     test_bug_765063.xul \
+    test_bug_795164.xul \
     test_cross_origin.xul \
     test_install_app.xul \
     test_list_api.xul \
     test_install_errors.xul \
     test_install_utf8.xul \
     test_install_receipts.xul \
     test_getNotInstalled.xul \
     test_launch_paths.xul \
new file mode 100644
--- /dev/null
+++ b/dom/tests/mochitest/webapps/test_bug_795164.xul
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+
+<!-- Any copyright is dedicated to the Public Domain.
+   - http://creativecommons.org/publicdomain/zero/1.0/ -->
+
+<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
+<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        title="Mozilla Bug 795164">
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
+  <script type="application/javascript" src="head.js"/>
+  <!-- test results are displayed in the html:body -->
+  <body xmlns="http://www.w3.org/1999/xhtml">
+  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=741549"
+     target="_blank">Mozilla Bug 795164</a>
+  </body>
+<script>
+
+var url1 = "http://test1.example.com/chrome/dom/tests/mochitest/webapps/apps/basic.webapp";
+var url2 = "http://test2.example.com/chrome/dom/tests/mochitest/webapps/apps/basic.webapp";
+
+var app1, app2;
+
+// Keeping track of the number of times `mozApps.mgmt.onuninstall` gets triggered
+var uninstallCount = 0;
+
+var steps = [
+  listenToUninstall,
+  installTwoApps,
+  uninstallTwoApps,
+  checkUninstallCount,
+  cleanUp
+];
+
+runAll(steps);
+
+function listenToUninstall(next) {
+  navigator.mozApps.mgmt.onuninstall = function onUnInstall() {
+    uninstallCount++;
+  };
+  next();
+}
+
+function installTwoApps(next) {
+  confirmNextInstall();
+  navigator.mozApps.install(url1, null).onsuccess = function onInstall(evt) {
+    app1 = evt.target.result;
+    confirmNextInstall();
+    navigator.mozApps.install(url2, null).onsuccess = function onInstall(evt) {
+      app2 = evt.target.result;
+      next();
+    };
+  };
+}
+
+function uninstallTwoApps(next) {
+  app1.uninstall().onsuccess = function onUninstallApp1() {
+    app2.uninstall().onsuccess = function onUninstallApp2() {
+      next();
+    };
+  };
+}
+
+function checkUninstallCount(next) {
+  is(uninstallCount, 2, "mgmt.onuninstall got triggered only twice");
+  next();
+}
+
+function cleanUp(next) {
+  navigator.mozApps.mgmt.onuninstall = null;
+  next();
+}
+
+</script>
+</window>