<html>
<head>
    <style>
        ::-webkit-scrollbar {
            width: 0px;
            height: 0px;
        }
    </style>
    <script>
      window.enablePixelTesting = true;
      if (window.internals)
          window.internals.settings.setFixedElementsLayoutRelativeToFrame(true);

      function scroll() {
          window.scrollTo(100,100);
      }

      function scaleWithEventSender() {
          var scaleFactor = 2.0;
          var scaleOffset = 0;
          if (window.eventSender) {
             eventSender.scalePageBy(scaleFactor, scaleOffset, scaleOffset);
          }
      }

      function test() {
          document.body.style.width = (document.body.clientWidth + 100) + "px";
          scaleWithEventSender();
          scroll();
      }
    </script>
    <script src="../../resources/js-test-pre.js"></script>
</head>
<body style="height: 2000px; width: 2000px; margin:0px;" onload="test();">
    <div style="position: fixed; bottom: 100px; right: 100px; z-index: 1">
        <div style="left:0; top:0; width:100px; height:100px; position:absolute; background:black;"></div>
        <div style="left:100px; top:0; width:100px; height:100px; position:absolute; background:green;"></div>

        <div style="left:0px; top:100px; width:100px; height:100px; position:absolute; background:yellow;"></div>
        <div style="left:100px; top:100px; width:100px; height:100px; position:absolute; background:blue;"></div>
    </div>
</body>
</html>
