Bug 783593 - Device Storage - Test to ensure onchange notifications go to the right object. r=khuey
authorDoug Turner <dougt@dougt.org>
Sun, 26 Aug 2012 21:33:13 -0700
changeset 105562 16c5acf424367682bec5be4378720567a0d72c09
parent 105561 9dd60aeba5b7b48260679679bdf347479a0183b4
child 105563 32d1839f85a8887fb5cfe20dbf4825f395aac5cf
push id55
push usershu@rfrn.org
push dateThu, 30 Aug 2012 01:33:09 +0000
reviewerskhuey
bugs783593
milestone17.0a1
Bug 783593 - Device Storage - Test to ensure onchange notifications go to the right object. r=khuey
dom/devicestorage/nsDeviceStorage.cpp
dom/devicestorage/test/Makefile.in
dom/devicestorage/test/test_watch.html
dom/devicestorage/test/test_watchOther.html
--- a/dom/devicestorage/nsDeviceStorage.cpp
+++ b/dom/devicestorage/nsDeviceStorage.cpp
@@ -486,16 +486,25 @@ nsDOMDeviceStorage::SetRootFileForType(c
     if (aType.Equals(NS_LITERAL_STRING("testing"))) {
       dirService->Get(NS_OS_TEMP_DIR, NS_GET_IID(nsIFile), getter_AddRefs(f));
       if (f) {
         f->AppendRelativeNativePath(NS_LITERAL_CSTRING("device-storage-testing"));
         f->Create(nsIFile::DIRECTORY_TYPE, 0777);
         f->Normalize();
       }
     }
+
+    if (aType.Equals(NS_LITERAL_STRING("testing-other"))) {
+      dirService->Get(NS_OS_TEMP_DIR, NS_GET_IID(nsIFile), getter_AddRefs(f));
+      if (f) {
+        f->AppendRelativeNativePath(NS_LITERAL_CSTRING("device-storage-testing-other"));
+        f->Create(nsIFile::DIRECTORY_TYPE, 0777);
+        f->Normalize();
+      }
+    }
   } 
 
 #ifdef MOZ_WIDGET_GONK
   RegisterForSDCardChanges(this);
 #endif
 
   nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
   obs->AddObserver(this, "file-watcher-update", false);
--- a/dom/devicestorage/test/Makefile.in
+++ b/dom/devicestorage/test/Makefile.in
@@ -16,12 +16,13 @@ MOCHITEST_FILES	= \
 		test_enumerate.html \
 		test_enumerateMultipleContinue.html \
 		test_overwrite.html \
 		test_dotdot.html \
 		test_enumerateOptions.html \
 		test_lastModificationFilter.html \
 		test_stat.html \
 		test_watch.html \
+		test_watchOther.html \
 		devicestorage_common.js \
 		$(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/dom/devicestorage/test/test_watch.html
+++ b/dom/devicestorage/test/test_watch.html
@@ -12,17 +12,17 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="text/javascript" src="devicestorage_common.js"></script>
 
 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=717103">Mozilla Bug 717103</a>
 <p id="display"></p>
 <div id="content" style="display: none">
-  
+
 </div>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
 devicestorage_setup();
 
 var gFileName = randomFilename(20);
 
@@ -53,20 +53,17 @@ function makeFile() {
   request = storage.addNamed(createRandomBlob(), gFileName);
   ok(request, "Should have a non-null request");
 
   request.onsuccess = addSuccess;
   request.onerror = addError;
 }
 
 var storage = navigator.getDeviceStorage("testing");
-ok(navigator.getDeviceStorage, "Should have getDeviceStorage");
+ok(storage, "Should have storage");
 storage.addEventListener("change", onChange);
 
-// since addEventListener is async, we have to wait until
-// it's definitely done before we make the file.
 setTimeout(makeFile,100);
 
 </script>
 </pre>
 </body>
 </html>
-
new file mode 100644
--- /dev/null
+++ b/dom/devicestorage/test/test_watchOther.html
@@ -0,0 +1,78 @@
+<!--
+  Any copyright is dedicated to the Public Domain.
+  http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<!DOCTYPE HTML>
+<html> <!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=717103
+-->
+<head>
+  <title>Test for the device storage API </title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="text/javascript" src="devicestorage_common.js"></script>
+
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=717103">Mozilla Bug 717103</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+devicestorage_setup();
+
+var gFileName = randomFilename(20);
+
+function addSuccess(e) {
+}
+
+function addError(e) {
+  ok(false, "addError was called : " + e.target.error.name);
+  devicestorage_cleanup();
+}
+
+function onChange(e) {
+
+  dump("we saw: " + e.path + " " + e.reason + "\n");
+
+  if (e.path == gFileName) {
+    ok(true, "we saw the file get created");
+    storage.removeEventListener("change", onChange);
+    devicestorage_cleanup();
+  }
+  else {
+    // we may see other file changes during the test, and
+    // that is completely ok
+  }
+}
+
+function onChangeFail(e) {
+  dump("onChangeFail: " + e.path + " " + e.reason + "\n");
+  ok(false, "We should never see any changes");
+}
+
+function makeFile() {
+  request = storage.addNamed(createRandomBlob(), gFileName);
+  ok(request, "Should have a non-null request");
+
+  request.onsuccess = addSuccess;
+  request.onerror = addError;
+}
+
+var storage = navigator.getDeviceStorage("testing");
+ok(storage, "Should have storage");
+storage.addEventListener("change", onChange);
+
+var storageOther = navigator.getDeviceStorage("testing-other");
+ok(storageOther, "Should have storage");
+storageOther.addEventListener("change", onChangeFail);
+
+setTimeout(makeFile,100);
+
+</script>
+</pre>
+</body>
+</html>