blob: 6468d40ac7b1f02d936efd48f3ea724d9d495fc5 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<style>
#spacer {
width: 1000px;
height: 1000px;
}
#target {
width: 100px;
height: 100px;
position: absolute;
left: 200px;
top: 200px;
background-color: green;
z-index: -1;
}
body {
margin: 0px;
}
</style>
<script>
var rect;
var rectAfterScaleAndScroll;
var layoutXScroll = 20;
var layoutYScroll = 30;
var xPos = 200;
var yPos = 200;
var visualXScroll = 40;
var visualYScroll = 50;
var expectedX = xPos - layoutXScroll;
var expectedY = yPos - layoutYScroll;
onload = function() {
description("This test ensures that getBoundingClientRect remains relative to the layout viewport under page scale.");
var target = document.getElementById('target');
rect = target.getBoundingClientRect();
shouldBe('rect.left', 'xPos');
shouldBe('rect.top', 'yPos');
if (window.internals) {
window.scrollTo(layoutXScroll, layoutYScroll);
internals.setPageScaleFactor(2.0);
internals.setVisualViewportOffset(visualXScroll, visualYScroll);
}
debug(' ');
debug('===getBoundingClientRect===');
debug(' ');
rectAfterScaleAndScroll = target.getBoundingClientRect();
shouldBe('rectAfterScaleAndScroll.left', 'expectedX');
shouldBe('rectAfterScaleAndScroll.top', 'expectedY');
shouldBe('rectAfterScaleAndScroll.width', 'rect.width');
shouldBe('rectAfterScaleAndScroll.height', 'rect.height');
rectAfterScaleAndScroll = target.getClientRects()[0];
debug(' ');
debug('===getClientRects===');
debug(' ');
shouldBe('rectAfterScaleAndScroll.left', 'expectedX');
shouldBe('rectAfterScaleAndScroll.top', 'expectedY');
shouldBe('rectAfterScaleAndScroll.width', 'rect.width');
shouldBe('rectAfterScaleAndScroll.height', 'rect.height');
}
</script>
<div id="target"></div>
<div id="spacer"></div>