summaryrefslogtreecommitdiffstats
path: root/gfx/layers/apz/test/mochitest/helper_hittest_hidden_inactive_scrollframe.html
blob: 0abed821564650baa6804904e79c2e93666121d9 (plain)
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
<!DOCTYPE HTML>
<html>
<head>
  <title>APZ hit-testing with an inactive scrollframe that is visibility:hidden (bug 1673505)</title>
  <script type="application/javascript" src="apz_test_utils.js"></script>
  <script type="application/javascript" src="apz_test_native_event_utils.js"></script>
  <script src="/tests/SimpleTest/paint_listener.js"></script>
  <meta name="viewport" content="width=device-width"/>
</head>
<body style="height: 110vh">
  <div style="position:fixed; top:0px; bottom:0px; left:0px; right:0px; visibility:hidden">
    <div style="overflow-y: scroll; height: 100vh" id="nested">
      <div style="height: 200vh; background-color: red">
        The body of this document is scrollable and is the main scrollable
        element. On top of that we have a hidden fixed-pos item containing another
        scrollframe, but this nested scrollframe is inactive.
        Since the fixed-pos item is hidden, the nested scrollframe is hidden
        too and shouldn't be the target of hit-testing. However, because it is
        an inactive scrollframe, code to generate the "this is an inactive
        scrollframe" area was marking it as hit-testable. This bug led to hit-
        tests being mis-targeted to the nested scrollframe's layers id instead
        of whatever was underneath.
      </div>
    </div>
  </div>
</body>
<script type="application/javascript">

function test(testDriver) {
  var config = getHitTestConfig();
  var utils = config.utils;

  let hasViewId;
  try {
    utils.getViewId(document.getElementById("nested"));
    hasViewId = true;
  } catch (e) {
    hasViewId = false;
  }
  if (!config.activateAllScrollFrames) {
    ok(!hasViewId, "The nested scroller should be inactive and not have a view id");
  }

  checkHitResult(
    hitTest(centerOf(document.body)),
    APZHitResultFlags.VISIBLE,
    utils.getViewId(document.scrollingElement),
    utils.getLayersId(),
    "hit went through the hidden scrollframe");
}

waitUntilApzStable().then(test).then(subtestDone, subtestFailed);

</script>
</html>