diff options
Diffstat (limited to 'dom/tests/mochitest/localstorage/frameQuota.html')
-rw-r--r-- | dom/tests/mochitest/localstorage/frameQuota.html | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/dom/tests/mochitest/localstorage/frameQuota.html b/dom/tests/mochitest/localstorage/frameQuota.html new file mode 100644 index 000000000..d3e32ad71 --- /dev/null +++ b/dom/tests/mochitest/localstorage/frameQuota.html @@ -0,0 +1,105 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>slave for sessionStorage test</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +const DOM_QUOTA_REACHED = 2152924150; + +function checkException(func, exc) +{ + var exceptionThrew = false; + try { + func(); + } + catch (ex) { + exceptionThrew = true; + is(ex.result, exc, "Expected "+exc+" exception"); + } + ok(exceptionThrew, "Exception "+exc+" threw at "+location); +} + +function doStep() +{ + var query = location.search.substring(1); + var queries = query.split("&"); + + var operation = queries[0]; + var keyName = queries[1]; + var result = queries[2]; + + switch (result) + { + case "success": + switch (operation) + { + case "add": + // Store 500 bytes long string must succeed + localStorage.setItem(keyName, "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"); + is(localStorage.getItem(keyName), "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "500 bytes key "+keyName+" stored"); + break; + + case "remove": + localStorage.removeItem(keyName); + is(localStorage.getItem(keyName), null, "Key "+keyName+" removed"); + break; + + case "checkclean": + is(localStorage.getItem(keyName), null, "Key "+keyName+" not present"); + break; + + case "checknotclean": + is(localStorage.getItem(keyName), "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "Key "+keyName+" is present"); + break; + } + + break; + + case "failure": + switch (operation) + { + case "add": + // Attempt to store 500 bytes long string that doens't + // fit the quota, have to throw DOM_QUOTA_REACHED exception + checkException(function() { + localStorage.setItem(keyName, "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"); + }, DOM_QUOTA_REACHED); + is(localStorage.getItem(keyName), null, "500 bytes key "+keyName+" is NOT stored"); + break; + + case "add2": + // Attempt to change a key value to reach the DOM quota and + // check it fails and the old key value is still present. + checkException(function() { + localStorage.setItem(keyName, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"); + }, DOM_QUOTA_REACHED); + is(localStorage.getItem(keyName), "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "Key "+keyName+" left unchanged"); + break; + } + + break; + + default: + switch (operation) + { + case "clear": + localStorage.clear(); + break; + } + + break; + } + + // Just inform the master we are finished now + postMsg("done"); + return false; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> +</body> +</html> |