mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
run selectionchange tests eventually
This commit is contained in:
@@ -188,7 +188,7 @@
|
|||||||
const input = document.createElement('input');
|
const input = document.createElement('input');
|
||||||
input.value = 'Hello World';
|
input.value = 'Hello World';
|
||||||
document.body.appendChild(input);
|
document.body.appendChild(input);
|
||||||
|
|
||||||
let eventCount = 0;
|
let eventCount = 0;
|
||||||
let lastEvent = null;
|
let lastEvent = null;
|
||||||
|
|
||||||
@@ -200,29 +200,24 @@
|
|||||||
testing.expectEqual(0, eventCount);
|
testing.expectEqual(0, eventCount);
|
||||||
|
|
||||||
input.setSelectionRange(0, 5);
|
input.setSelectionRange(0, 5);
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
testing.expectEqual('selectionchange', lastEvent.type);
|
|
||||||
testing.expectEqual(input, lastEvent.target);
|
|
||||||
testing.expectEqual(true, lastEvent.bubbles);
|
|
||||||
testing.expectEqual(false, lastEvent.cancelable);
|
|
||||||
|
|
||||||
input.select();
|
input.select();
|
||||||
testing.expectEqual(2, eventCount);
|
|
||||||
|
|
||||||
input.selectionStart = 3;
|
input.selectionStart = 3;
|
||||||
testing.expectEqual(3, eventCount);
|
|
||||||
|
|
||||||
input.selectionEnd = 8;
|
input.selectionEnd = 8;
|
||||||
testing.expectEqual(4, eventCount);
|
|
||||||
|
|
||||||
let bubbledToBody = false;
|
let bubbledToBody = false;
|
||||||
document.body.addEventListener('selectionchange', () => {
|
document.body.addEventListener('selectionchange', () => {
|
||||||
bubbledToBody = true;
|
bubbledToBody = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
input.setSelectionRange(1, 4);
|
input.setSelectionRange(1, 4);
|
||||||
testing.expectEqual(true, bubbledToBody);
|
|
||||||
|
testing.eventually(() => {
|
||||||
|
testing.expectEqual(5, eventCount);
|
||||||
|
testing.expectEqual('selectionchange', lastEvent.type);
|
||||||
|
testing.expectEqual(input, lastEvent.target);
|
||||||
|
testing.expectEqual(true, lastEvent.bubbles);
|
||||||
|
testing.expectEqual(false, lastEvent.cancelable);
|
||||||
|
testing.expectEqual(true, bubbledToBody);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -247,28 +247,23 @@
|
|||||||
testing.expectEqual(0, eventCount);
|
testing.expectEqual(0, eventCount);
|
||||||
|
|
||||||
textarea.setSelectionRange(0, 5);
|
textarea.setSelectionRange(0, 5);
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
testing.expectEqual('selectionchange', lastEvent.type);
|
|
||||||
testing.expectEqual(textarea, lastEvent.target);
|
|
||||||
testing.expectEqual(true, lastEvent.bubbles);
|
|
||||||
testing.expectEqual(false, lastEvent.cancelable);
|
|
||||||
|
|
||||||
textarea.select();
|
textarea.select();
|
||||||
testing.expectEqual(2, eventCount);
|
|
||||||
|
|
||||||
textarea.selectionStart = 3;
|
textarea.selectionStart = 3;
|
||||||
testing.expectEqual(3, eventCount);
|
|
||||||
|
|
||||||
textarea.selectionEnd = 8;
|
textarea.selectionEnd = 8;
|
||||||
testing.expectEqual(4, eventCount);
|
|
||||||
|
|
||||||
let bubbledToBody = false;
|
let bubbledToBody = false;
|
||||||
document.body.addEventListener('selectionchange', () => {
|
document.body.addEventListener('selectionchange', () => {
|
||||||
bubbledToBody = true;
|
bubbledToBody = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
textarea.setSelectionRange(1, 4);
|
textarea.setSelectionRange(1, 4);
|
||||||
testing.expectEqual(true, bubbledToBody);
|
|
||||||
|
testing.eventually(() => {
|
||||||
|
testing.expectEqual(5, eventCount);
|
||||||
|
testing.expectEqual('selectionchange', lastEvent.type);
|
||||||
|
testing.expectEqual(textarea, lastEvent.target);
|
||||||
|
testing.expectEqual(true, lastEvent.bubbles);
|
||||||
|
testing.expectEqual(false, lastEvent.cancelable);
|
||||||
|
testing.expectEqual(true, bubbledToBody);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -546,92 +546,50 @@
|
|||||||
{
|
{
|
||||||
const sel = window.getSelection();
|
const sel = window.getSelection();
|
||||||
sel.removeAllRanges();
|
sel.removeAllRanges();
|
||||||
|
|
||||||
let eventCount = 0;
|
let eventCount = 0;
|
||||||
let lastEvent = null;
|
let lastEvent = null;
|
||||||
|
|
||||||
document.addEventListener('selectionchange', (e) => {
|
document.addEventListener('selectionchange', (e) => {
|
||||||
eventCount++;
|
eventCount++;
|
||||||
lastEvent = e;
|
lastEvent = e;
|
||||||
});
|
});
|
||||||
|
|
||||||
testing.expectEqual(0, eventCount);
|
|
||||||
|
|
||||||
const p1 = document.getElementById("p1");
|
const p1 = document.getElementById("p1");
|
||||||
const textNode = p1.firstChild;
|
const textNode = p1.firstChild;
|
||||||
|
const nested = document.getElementById("nested");
|
||||||
// Test 1: collapse should fire event
|
|
||||||
sel.collapse(textNode, 5);
|
sel.collapse(textNode, 5);
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
testing.expectEqual('selectionchange', lastEvent.type);
|
|
||||||
testing.expectEqual(document, lastEvent.target);
|
|
||||||
testing.expectEqual(false, lastEvent.bubbles);
|
|
||||||
testing.expectEqual(false, lastEvent.cancelable);
|
|
||||||
|
|
||||||
// Test 2: extend should fire event
|
|
||||||
sel.extend(textNode, 10);
|
sel.extend(textNode, 10);
|
||||||
testing.expectEqual(2, eventCount);
|
|
||||||
|
|
||||||
// Test 3: collapseToStart should fire event
|
|
||||||
sel.collapseToStart();
|
sel.collapseToStart();
|
||||||
testing.expectEqual(3, eventCount);
|
sel.collapseToEnd();
|
||||||
|
|
||||||
// Test 4: collapseToEnd should fire event
|
|
||||||
eventCount = 0;
|
|
||||||
sel.removeAllRanges();
|
sel.removeAllRanges();
|
||||||
const range = document.createRange();
|
const range = document.createRange();
|
||||||
range.setStart(textNode, 4);
|
range.setStart(textNode, 4);
|
||||||
range.setEnd(textNode, 15);
|
range.setEnd(textNode, 15);
|
||||||
sel.addRange(range);
|
sel.addRange(range);
|
||||||
sel.collapseToEnd();
|
|
||||||
testing.expectEqual(3, eventCount);
|
sel.removeRange(range);
|
||||||
|
|
||||||
// Test 5: addRange should fire event
|
|
||||||
eventCount = 0;
|
|
||||||
sel.removeAllRanges();
|
|
||||||
const newRange = document.createRange();
|
const newRange = document.createRange();
|
||||||
newRange.selectNodeContents(p1);
|
newRange.selectNodeContents(p1);
|
||||||
sel.addRange(newRange);
|
sel.addRange(newRange);
|
||||||
testing.expectEqual(2, eventCount);
|
|
||||||
|
|
||||||
// Test 6: removeRange should fire event
|
|
||||||
eventCount = 0;
|
|
||||||
sel.removeRange(newRange);
|
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
|
|
||||||
// Test 7: removeAllRanges should fire event
|
|
||||||
sel.addRange(newRange);
|
|
||||||
eventCount = 0;
|
|
||||||
sel.removeAllRanges();
|
sel.removeAllRanges();
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
|
|
||||||
// Test 8: selectAllChildren should fire event
|
|
||||||
eventCount = 0;
|
|
||||||
const nested = document.getElementById("nested");
|
|
||||||
sel.selectAllChildren(nested);
|
sel.selectAllChildren(nested);
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
|
|
||||||
// Test 9: setBaseAndExtent should fire event
|
|
||||||
eventCount = 0;
|
|
||||||
sel.setBaseAndExtent(textNode, 4, textNode, 15);
|
sel.setBaseAndExtent(textNode, 4, textNode, 15);
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
|
|
||||||
// Test 10: deleteFromDocument should fire event
|
|
||||||
sel.collapse(textNode, 5);
|
sel.collapse(textNode, 5);
|
||||||
sel.extend(textNode, 10);
|
sel.extend(textNode, 10);
|
||||||
eventCount = 0;
|
|
||||||
sel.deleteFromDocument();
|
sel.deleteFromDocument();
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
|
testing.eventually(() => {
|
||||||
// Test 11: Event doesn't bubble
|
testing.expectEqual(14, eventCount);
|
||||||
let bubbledToBody = false;
|
testing.expectEqual('selectionchange', lastEvent.type);
|
||||||
document.body.addEventListener('selectionchange', () => {
|
testing.expectEqual(document, lastEvent.target);
|
||||||
bubbledToBody = true;
|
testing.expectEqual(false, lastEvent.bubbles);
|
||||||
|
testing.expectEqual(false, lastEvent.cancelable);
|
||||||
});
|
});
|
||||||
|
|
||||||
eventCount = 0;
|
|
||||||
sel.collapse(textNode, 7);
|
|
||||||
testing.expectEqual(1, eventCount);
|
|
||||||
testing.expectEqual(false, bubbledToBody);
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user