summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/localstorage/test_lowDeviceStorage.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/mochitest/localstorage/test_lowDeviceStorage.html')
-rw-r--r--dom/tests/mochitest/localstorage/test_lowDeviceStorage.html76
1 files changed, 76 insertions, 0 deletions
diff --git a/dom/tests/mochitest/localstorage/test_lowDeviceStorage.html b/dom/tests/mochitest/localstorage/test_lowDeviceStorage.html
new file mode 100644
index 000000000..046587150
--- /dev/null
+++ b/dom/tests/mochitest/localstorage/test_lowDeviceStorage.html
@@ -0,0 +1,76 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Test localStorage usage while in a low device storage situation</title>
+
+<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="localStorageCommon.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+
+<script type="text/javascript">
+
+/*
+This test does the following:
+- Stores an item in localStorage.
+- Checks the stored value.
+- Emulates a low device storage situation.
+- Gets the stored item again.
+- Removes the stored item.
+- Fails storing a new value.
+- Emulates recovering from a low device storage situation.
+- Stores a new value.
+- Checks the stored value.
+*/
+
+function lowDeviceStorage(lowStorage) {
+ var data = lowStorage ? "full" : "free";
+ os().notifyObservers(null, "disk-space-watcher", data);
+}
+
+function startTest() {
+ // Add a test item.
+ localStorage.setItem("item", "value");
+ is(localStorage.getItem("item"), "value", "getItem()");
+
+ // Emulates a low device storage situation.
+ lowDeviceStorage(true);
+
+ // Checks that we can still access to the stored item.
+ is(localStorage.getItem("item"), "value",
+ "getItem() during a device storage situation");
+
+ // Removes the stored item.
+ localStorage.removeItem("item");
+ is(localStorage.getItem("item"), null,
+ "getItem() after removing the item");
+
+ // Fails storing a new item.
+ try {
+ localStorage.setItem("newItem", "value");
+ ok(false, "Storing a new item is expected to fail");
+ } catch(e) {
+ ok(true, "Got an expected exception " + e);
+ } finally {
+ is(localStorage.getItem("newItem"), null,
+ "setItem while device storage is low");
+ }
+
+ // Emulates recovering from a low device storage situation.
+ lowDeviceStorage(false);
+
+ // Add a test item after recovering from the low device storage situation.
+ localStorage.setItem("newItem", "value");
+ is(localStorage.getItem("newItem"), "value",
+ "getItem() with available storage");
+
+ SimpleTest.finish();
+}
+
+SimpleTest.waitForExplicitFinish();
+
+</script>
+
+</head>
+
+<body onload="startTest();">
+</body>
+</html>