summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-into-view-scrolls-layout-viewport.html
blob: b20e79efff37fe3ec22febc51fc222c75194b5bb (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
56
57
58
59
<!DOCTYPE html>
<style>
  body {
    height: 800px;
    width: 800px;
  }
  #box {
    background-color: black;
    top: 700px;
    left: 100px;
    height: 40px;
    width: 40px;
    position: absolute;
  }
</style>
<script src="../../resources/js-test.js"></script>
<script>
  if (window.testRunner && window.internals) {
    window.jsTestIsAsync = true;
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
    setPrintTestResultsLazily();
  }

  description("Test that element.scrollIntoView() only scrolls the layout\
    viewport when the intertVisualViewport is set.");

  function runTest() {
    if (!window.testRunner || !window.internals) {
      testFailed("This test requires test runner and internals");
      finishJSTest();
      return;
    }
    internals.setPageScaleFactor(2.0);
    var target = document.getElementById("box");

    internals.settings.setInertVisualViewport(true);
    window.scrollTo(0, 0);
    internals.setVisualViewportOffset(0, 0);
    target.scrollIntoView();
    shouldBe('internals.visualViewportScrollX()', 'window.scrollX');
    shouldBe('internals.visualViewportScrollY()', 'window.scrollY');
    shouldBe('window.scrollX', '0');
    shouldBeGreaterThan('window.scrollY', '0');
    window.scrollTo(0, 0);
    internals.setVisualViewportOffset(0, 0);
    target.scrollIntoViewIfNeeded();
    shouldBe('internals.visualViewportScrollX()', 'window.scrollX');
    shouldBe('internals.visualViewportScrollY()', 'window.scrollY');
    shouldBe('window.scrollX', '0');
    shouldBeGreaterThan('window.scrollY', '0');

    finishJSTest();
  }

  onload = runTest;
</script>

<div id="box"></div>