<html>
<head>
<style>
  body {
    margin: 0;
    height: 2000px;
    overflow: hidden;
    background: url('resources/green-blue.png') white;
    background-attachment: fixed;
    background-size: contain;
    background-repeat: no-repeat;
  }
</style>
<script>
  function runTest() {
    if (window.internals) {
      window.internals.setFixedLayoutSize(800, 600);
      window.internals.setPageScaleFactor(0.5, 0, 0);
      window.internals.setUseFixedLayout(true);
      window.internals.settings.setVisualViewportEnabled(false);
    }
  }
  window.addEventListener('load', runTest, false);
</script>
</head>
<body>
</body>
</html>
