<html>
<head>
	<script>
		function overflowChanged(event) {
		    var result = [event.orient, event.horizontalOverflow, event.verticalOverflow];

            if ('' + result == testResults[currentTest++])
                numSuccessful ++;
            
            if (testResults.length == numSuccessful)
                document.getElementById('result').innerHTML = "SUCCESS";
		}
		
		function forceLayout() {
			document.body.offsetTop;		    
		}
		
		function runTest() {
		    if (window.layoutTestController)
		        layoutTestController.dumpAsText();
		        
		    testResults = [[1, true, false],
		                   [1, false, false],
		                   [0, false, true],
		                   [0, false, false],
		                   [2, true, true],
		                   [2, false, false],
		                   [0, false, true],
		                   [2, true, false],		                
		                   [2, false, true]];
		                   
		    currentTest = 0;
		    numSuccessful = 0;
		    
			var c = document.getElementById('container');
			c.addEventListener('overflowchanged', overflowChanged, false);
			
			forceLayout();
			document.getElementById('child').style.width='200px';

			forceLayout();
			document.getElementById('child').style.width='50px';
			forceLayout();

			document.getElementById('child').style.height='200px';
			forceLayout();
			document.getElementById('child').style.height='50px';
			forceLayout();

            forceLayout();
			document.getElementById('child').style.width='200px';
			document.getElementById('child').style.height='200px';
			forceLayout();

			document.getElementById('child').style.width='50px';
			document.getElementById('child').style.height='50px';
			forceLayout();		

			document.getElementById('child').style.height='200px';
			forceLayout();		

			document.getElementById('child').style.width='200px';
			document.getElementById('child').style.height='50px';
			forceLayout();		

			document.getElementById('child').style.width='50px';
			document.getElementById('child').style.height='200px';
			forceLayout();		

		}
	</script>
</head>
<body onload="runTest()">
	<div id="container" style="width:100; height:100px; border: solid red 2px; overflow: hidden">
		<div id="child" style="margin-top: 30px; margin-left: 30px; width:50px; height:50px; border: solid blue 2px;"></div>
	</div>
	This tests that overflowchanged events are fired correctly. If the test is successful, the text "SUCCESS" should be shown below.
	<div id="result">FAILURE</div>
</body>
</html>
