-
Notifications
You must be signed in to change notification settings - Fork 40
/
touch-action-tests.js
48 lines (45 loc) · 1.55 KB
/
touch-action-tests.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Disable compositor hit testing
document.addEventListener('touchstart', function() {});
window.addEventListener('load', function() {
// Create any shadow DOM nodes requested by the test.
var shadowTrees = document.querySelectorAll('[make-shadow-dom]');
if (shadowTrees.length > 0 && !HTMLElement.prototype.createShadowRoot) {
document.body.innerHTML = 'ERROR: Shadow DOM not supported!';
return;
}
for (var i = 0; i < shadowTrees.length; i++) {
var tree = shadowTrees[i];
var host = tree.previousElementSibling;
if (!host.hasAttribute('shadow-host')) {
document.body.innerHTML = 'ERROR: make-shadow-dom node must follow a shadow-host node';
return;
}
tree.parentElement.removeChild(tree);
var shadowRoot = host.createShadowRoot();
shadowRoot.applyAuthorStyles = true;
shadowRoot.appendChild(tree);
}
});
/*
* Visualization of hit test locations for manual testing.
* To be invoked manually (so it doesn't intefere with testing).
*/
function addMarker(x, y)
{
const kMarkerSize = 6;
var marker = document.createElement('div');
marker.className = 'marker';
marker.style.top = (y - kMarkerSize/2) + 'px';
marker.style.left = (x - kMarkerSize/2) + 'px';
document.body.appendChild(marker);
}
function addMarkers()
{
var tests = document.querySelectorAll('[expected-action]');
for (var i = 0; i < tests.length; i++) {
var r = tests[i].getClientRects()[0];
addMarker(r.left, r.top);
addMarker(r.right - 1, r.bottom - 1);
addMarker(r.left + r.width / 2, r.top + r.height / 2);
}
}