forked from mirrors/gecko-dev
This is split from the previous changeset since if we include dom/ the file size is too large for phabricator to handle. This is an autogenerated commit to handle scripts loading mochitest harness files, in the simple case where the script src is on the same line as the tag. This was generated with https://bug1544322.bmoattachments.org/attachment.cgi?id=9058170 using the `--part 2` argument. Differential Revision: https://phabricator.services.mozilla.com/D27457 --HG-- extra : moz-landing-system : lando
182 lines
5.9 KiB
HTML
182 lines
5.9 KiB
HTML
<!--
|
|
Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/
|
|
-->
|
|
<html>
|
|
<head>
|
|
<title>Indexed Database Property Test</title>
|
|
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
|
|
<script type="text/javascript">
|
|
let testGenerator = testSteps();
|
|
|
|
function ok(val, message) {
|
|
val = val ? "true" : "false";
|
|
window.parent.postMessage("SimpleTest.ok(" + val + ", '" + message +
|
|
"');", "*");
|
|
}
|
|
|
|
function is(a, b, message) {
|
|
ok(a == b, message);
|
|
}
|
|
|
|
function grabEventAndContinueHandler(event) {
|
|
testGenerator.next(event);
|
|
}
|
|
|
|
function errorHandler(event) {
|
|
ok(false, "indexedDB error, code " + event.target.error.name);
|
|
finishTest();
|
|
}
|
|
|
|
function unexpectedSuccessHandler(event) {
|
|
ok(false, "got success when it was not expected!");
|
|
finishTest();
|
|
}
|
|
|
|
function finishTest() {
|
|
// Let window.onerror have a chance to fire
|
|
setTimeout(function() {
|
|
setTimeout(function() {
|
|
testGenerator.return();
|
|
window.parent.postMessage("SimpleTest.finish();", "*");
|
|
}, 0);
|
|
}, 0);
|
|
}
|
|
|
|
window.onerror = function() {
|
|
return false;
|
|
};
|
|
|
|
function* testSteps() {
|
|
window.parent.SpecialPowers.addPermission("indexedDB", true, document);
|
|
|
|
// Test 1: Throwing an exception in an upgradeneeded handler should
|
|
// abort the versionchange transaction and fire an error at the request.
|
|
let request = indexedDB.open(window.location.pathname, 1);
|
|
request.onerror = errorHandler;
|
|
request.onsuccess = unexpectedSuccessHandler;
|
|
request.onupgradeneeded = function() {
|
|
let transaction = request.transaction;
|
|
transaction.oncomplete = unexpectedSuccessHandler;
|
|
transaction.onabort = grabEventAndContinueHandler;
|
|
throw new Error("STOP");
|
|
};
|
|
|
|
let event = yield undefined;
|
|
is(event.type, "abort",
|
|
"Throwing during an upgradeneeded event should abort the transaction.");
|
|
is(event.target.error.name, "AbortError", "Got AbortError object");
|
|
|
|
request.onerror = grabEventAndContinueHandler;
|
|
event = yield undefined;
|
|
|
|
is(event.type, "error",
|
|
"Throwing during an upgradeneeded event should fire an error.");
|
|
|
|
// Test 2: Throwing during a request's success handler should abort the
|
|
// transaction.
|
|
request = indexedDB.open(window.location.pathname, 1);
|
|
request.onerror = errorHandler;
|
|
request.onblocked = errorHandler;
|
|
request.onupgradeneeded = grabEventAndContinueHandler;
|
|
request.onsuccess = unexpectedSuccessHandler;
|
|
let openrequest = request;
|
|
event = yield undefined;
|
|
|
|
request.onupgradeneeded = unexpectedSuccessHandler;
|
|
|
|
let db = event.target.result;
|
|
db.onerror = function(event) {
|
|
event.preventDefault();
|
|
};
|
|
|
|
event.target.transaction.oncomplete = unexpectedSuccessHandler;
|
|
event.target.transaction.onabort = grabEventAndContinueHandler;
|
|
|
|
is(db.version, 1, "Correct version");
|
|
is(db.objectStoreNames.length, 0, "Correct objectStoreNames length");
|
|
|
|
let objectStore = db.createObjectStore("foo");
|
|
|
|
is(db.objectStoreNames.length, 1, "Correct objectStoreNames length");
|
|
ok(db.objectStoreNames.contains("foo"), "Has correct objectStore");
|
|
|
|
request = objectStore.add({}, 1);
|
|
request.onsuccess = function(event) {
|
|
throw new Error("foo");
|
|
};
|
|
|
|
event = yield undefined;
|
|
|
|
is(event.type, "abort", "Got transaction abort event");
|
|
is(event.target.error.name, "AbortError", "Got AbortError object");
|
|
openrequest.onerror = grabEventAndContinueHandler;
|
|
|
|
event = yield undefined;
|
|
|
|
is(event.type, "error", "Got IDBOpenDBRequest error event");
|
|
is(event.target, openrequest, "Right event target");
|
|
is(event.target.error.name, "AbortError", "Right error name");
|
|
|
|
// Test 3: Throwing during a request's error handler should abort the
|
|
// transaction, even if preventDefault is called on the error event.
|
|
request = indexedDB.open(window.location.pathname, 1);
|
|
request.onerror = errorHandler;
|
|
request.onblocked = errorHandler;
|
|
request.onupgradeneeded = grabEventAndContinueHandler;
|
|
request.onsuccess = unexpectedSuccessHandler;
|
|
openrequest = request;
|
|
event = yield undefined;
|
|
|
|
request.onupgradeneeded = unexpectedSuccessHandler;
|
|
|
|
db = event.target.result;
|
|
db.onerror = function(event) {
|
|
event.preventDefault();
|
|
};
|
|
|
|
event.target.transaction.oncomplete = unexpectedSuccessHandler;
|
|
event.target.transaction.onabort = grabEventAndContinueHandler;
|
|
|
|
is(db.version, 1, "Correct version");
|
|
is(db.objectStoreNames.length, 0, "Correct objectStoreNames length");
|
|
|
|
objectStore = db.createObjectStore("foo");
|
|
|
|
is(db.objectStoreNames.length, 1, "Correct objectStoreNames length");
|
|
ok(db.objectStoreNames.contains("foo"), "Has correct objectStore");
|
|
|
|
request = objectStore.add({}, 1);
|
|
request.onerror = errorHandler;
|
|
request = objectStore.add({}, 1);
|
|
request.onsuccess = unexpectedSuccessHandler;
|
|
request.onerror = function(event) {
|
|
event.preventDefault();
|
|
throw new Error("STOP");
|
|
};
|
|
|
|
event = yield undefined;
|
|
|
|
is(event.type, "abort", "Got transaction abort event");
|
|
is(event.target.error.name, "AbortError", "Got AbortError object");
|
|
openrequest.onerror = grabEventAndContinueHandler;
|
|
|
|
event = yield undefined;
|
|
|
|
is(event.type, "error", "Got IDBOpenDBRequest error event");
|
|
is(event.target, openrequest, "Right event target");
|
|
is(event.target.error.name, "AbortError", "Right error name");
|
|
|
|
finishTest();
|
|
yield undefined;
|
|
}
|
|
</script>
|
|
|
|
</head>
|
|
|
|
<body onload="testGenerator.next();"></body>
|
|
|
|
</html>
|