mirror of
https://github.com/servo/servo.git
synced 2025-06-23 08:34:42 +01:00
84 lines
3.2 KiB
HTML
84 lines
3.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta name='author' title='Takayoshi Kochi' href='mailto:kochi@chromium.org'>
|
|
<meta name='assert' content='Test for DocumentOrShadowRoot.pointerLockElement.'>
|
|
<link rel='help' href='https://w3c.github.io/pointerlock/#widl-DocumentOrShadowRoot-pointerLockElement'>
|
|
<meta name='flags' content='interact'>
|
|
<meta name='timeout' content='long'>
|
|
<script src='/resources/testharness.js'></script>
|
|
<script src='/resources/testharnessreport.js'></script>
|
|
<script src='../shadow-dom/resources/shadow-dom.js'></script>
|
|
</head>
|
|
<body>
|
|
<div id='host'>
|
|
<template data-mode='open' id='root'>
|
|
<slot></slot>
|
|
</template>
|
|
<div id='host2'>
|
|
<template data-mode='open' id='root2'>
|
|
<div id='host3'>
|
|
<template data-mode='open' id='root3'>
|
|
<canvas id='canvas'></canvas>
|
|
<div id='host4'>
|
|
<template data-mode='open' id='root4'>
|
|
<div></div>
|
|
</template>
|
|
</div>
|
|
</template>
|
|
</div>
|
|
<div id='host5'>
|
|
<template data-mode='open' id='root5'>
|
|
<div></div>
|
|
</template>
|
|
</div>
|
|
</template>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function run_test() {
|
|
async_test((test) => {
|
|
document.onpointerlockerror = test.unreached_func('onpointerlockerror is not expected.');
|
|
|
|
document.onpointerlockchange = test.step_func(() => {
|
|
// Not interested in handling before or after exitPointerLock.
|
|
if (document.pointerLockElement === null)
|
|
return;
|
|
|
|
assert_equals(document.pointerLockElement, ids.host2, 'document.pointerLockElement should be shadow #host2.');
|
|
assert_equals(ids.root.pointerLockElement, null, '#root\'s shadowRoot.pointerLockElement should be null.');
|
|
assert_equals(ids.root2.pointerLockElement, ids.host3, '#root2\'s shadowRoot.pointerLockElement should be host3.');
|
|
assert_equals(ids.root3.pointerLockElement, ids.canvas, '#root3\'s shadowRoot.pointerLockElement should be canvas element.');
|
|
assert_equals(ids.root4.pointerLockElement, null, '#root4\'s shadowRoot.pointerLockElement should be null.');
|
|
assert_equals(ids.root5.pointerLockElement, null, '#root5\'s shadowRoot.pointerLockElement should be null.');
|
|
|
|
document.exitPointerLock();
|
|
test.done();
|
|
});
|
|
|
|
var ids = createTestTree(host);
|
|
document.body.appendChild(ids.host);
|
|
|
|
// All pointerLockElement should default to null.
|
|
test.step(() => {
|
|
assert_equals(document.pointerLockElement, null);
|
|
assert_equals(ids.root.pointerLockElement, null);
|
|
assert_equals(ids.root2.pointerLockElement, null);
|
|
assert_equals(ids.root3.pointerLockElement, null);
|
|
assert_equals(ids.root4.pointerLockElement, null);
|
|
assert_equals(ids.root5.pointerLockElement, null);
|
|
});
|
|
|
|
var canvas = ids.canvas;
|
|
canvas.requestPointerLock();
|
|
}, 'Test for pointerLockElement adjustment for Shadow DOM.');
|
|
}
|
|
</script>
|
|
<div>
|
|
<h2>Description</h2>
|
|
<p>Click the button below to trigger pointer lock on an element in a shadow root.</p>
|
|
<button onclick="run_test()">Click Me!</button>
|
|
</div>
|
|
</body>
|
|
</html>
|