mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 10:57:34 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
148
dom/indexedDB/test/event_propagation_iframe.html
Normal file
148
dom/indexedDB/test/event_propagation_iframe.html
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Indexed Database Property Test</title>
|
||||
|
||||
<script type="text/javascript;version=1.7">
|
||||
|
||||
let testGenerator = testSteps();
|
||||
|
||||
function ok(val, message) {
|
||||
val = val ? "true" : "false";
|
||||
window.parent.postMessage("SimpleTest.ok(" + val + ", '" + message +
|
||||
"');", "*");
|
||||
}
|
||||
|
||||
function grabEventAndContinueHandler(event) {
|
||||
testGenerator.send(event);
|
||||
}
|
||||
|
||||
function errorHandler(event) {
|
||||
ok(false, "indexedDB error, code " + event.target.error.name);
|
||||
finishTest();
|
||||
}
|
||||
|
||||
function finishTest() {
|
||||
// Let window.onerror have a chance to fire
|
||||
setTimeout(function() {
|
||||
setTimeout(function() {
|
||||
testGenerator.close();
|
||||
ok(windowErrorCount == 1, "Good window.onerror count");
|
||||
window.parent.postMessage("SimpleTest.finish();", "*");
|
||||
}, 0);
|
||||
}, 0);
|
||||
}
|
||||
|
||||
const eventChain = [
|
||||
"IDBRequest",
|
||||
"IDBTransaction",
|
||||
"IDBDatabase"
|
||||
];
|
||||
|
||||
let captureCount = 0;
|
||||
let bubbleCount = 0;
|
||||
let atTargetCount = 0;
|
||||
let windowErrorCount = 0;
|
||||
|
||||
window.onerror = function(event) {
|
||||
ok(!windowErrorCount++, "Correct number of window.onerror events");
|
||||
setTimeout(function() { testGenerator.next(); }, 0);
|
||||
};
|
||||
|
||||
function errorEventCounter(event) {
|
||||
ok(event.type == "error", "Got an error event");
|
||||
ok(event.target instanceof window[eventChain[0]],
|
||||
"Correct event.target");
|
||||
|
||||
let constructor;
|
||||
if (event.eventPhase == event.AT_TARGET) {
|
||||
atTargetCount++;
|
||||
constructor = eventChain[0];
|
||||
}
|
||||
else if (event.eventPhase == event.CAPTURING_PHASE) {
|
||||
constructor = eventChain[eventChain.length - 1 - captureCount++];
|
||||
}
|
||||
else if (event.eventPhase == event.BUBBLING_PHASE) {
|
||||
constructor = eventChain[++bubbleCount];
|
||||
if (windowErrorCount && bubbleCount == eventChain.length - 1) {
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
ok(event.currentTarget instanceof window[constructor],
|
||||
"Correct event.currentTarget");
|
||||
|
||||
if (bubbleCount == eventChain.length - 1) {
|
||||
ok(bubbleCount == captureCount,
|
||||
"Got same number of calls for both phases");
|
||||
ok(atTargetCount == 1, "Got one atTarget event");
|
||||
|
||||
captureCount = bubbleCount = atTargetCount = 0;
|
||||
if (windowErrorCount) {
|
||||
finishTest();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function testSteps() {
|
||||
window.parent.SpecialPowers.addPermission("indexedDB", true, document);
|
||||
|
||||
let request = indexedDB.open(window.location.pathname, 1);
|
||||
request.onerror = errorHandler;
|
||||
request.onupgradeneeded = grabEventAndContinueHandler;
|
||||
let event = yield undefined;
|
||||
|
||||
let db = event.target.result;
|
||||
db.onerror = errorEventCounter;
|
||||
db.addEventListener("error", errorEventCounter, true);
|
||||
|
||||
event.target.onsuccess = grabEventAndContinueHandler;
|
||||
|
||||
db.createObjectStore("foo", { autoIncrement: true });
|
||||
yield undefined;
|
||||
|
||||
let transaction = db.transaction("foo", "readwrite");
|
||||
transaction.addEventListener("error", errorEventCounter, false);
|
||||
transaction.addEventListener("error", errorEventCounter, true);
|
||||
|
||||
let objectStore = transaction.objectStore("foo");
|
||||
|
||||
request = objectStore.add({}, 1);
|
||||
request.onsuccess = grabEventAndContinueHandler;
|
||||
request.onerror = errorHandler;
|
||||
event = yield undefined;
|
||||
|
||||
request = objectStore.add({}, 1);
|
||||
request.onsuccess = function(event) {
|
||||
ok(false, "Did not expect second add to succeed.");
|
||||
};
|
||||
request.onerror = errorEventCounter;
|
||||
yield undefined;
|
||||
|
||||
transaction = db.transaction("foo", "readwrite");
|
||||
transaction.addEventListener("error", errorEventCounter, false);
|
||||
transaction.addEventListener("error", errorEventCounter, true);
|
||||
|
||||
objectStore = transaction.objectStore("foo");
|
||||
|
||||
request = objectStore.add({}, 1);
|
||||
request.onsuccess = grabEventAndContinueHandler;
|
||||
request.onerror = errorHandler;
|
||||
event = yield undefined;
|
||||
|
||||
request = objectStore.add({}, 1);
|
||||
request.onsuccess = function(event) {
|
||||
ok(false, "Did not expect second add to succeed.");
|
||||
};
|
||||
request.onerror = errorEventCounter;
|
||||
yield undefined;
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="testGenerator.next();"></body>
|
||||
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue