File: touch-action-tests.js

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (58 lines) | stat: -rw-r--r-- 2,159 bytes parent folder | download | duplicates (15)
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
49
50
51
52
53
54
55
56
57
58
// 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]');
  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.attachShadow({mode: 'open'});
    var style = document.createElement('style');
    style.innerText = ' .ta-none { -ms-touch-action: none; touch-action: none; }';
    shadowRoot.appendChild(style);
    shadowRoot.appendChild(tree);
  }
  // Generate the canvas element by script to ensure it's a replaced element.
  var canvasParent = document.getElementById('replaced-canvas');
  if (canvasParent) {
    var canvas = document.createElement('canvas');
    canvasParent.appendChild(canvas);
    canvas.className = 'ta-none';
    canvas.style = 'height: 0; margin-bottom: 50px; width: 300px; height: 150px;';
    canvas.setAttribute('expected-action', 'none');
    var context = canvas.getContext('2d');
    context.font = '13px serif';
    context.fillText('Touch action of replaced canvas should not be ignored', 0, 50);
  }
});

/*
 * 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);
  }
}