This test verifies that turning off auto resize functions correctly. It only works when run in dumprendertree as it relies on having auto-resize function available.

When it succeeds, there should be a series of PASS messages followed by a DONE message.

PASS: document.body.clientWidth equaled window.innerWidth
PASS: document.body.clientHeight equaled window.innerHeight
PASS: document.scrollingElement.scrollWidth equaled window.innerWidth
PASS: document.scrollingElement.scrollHeight equaled window.innerHeight
PASS: window.innerWidth equaled window.outerWidth
PASS: window.innerHeight equaled window.outerHeight
PASS: window.outerWidth equaled 200
PASS: window.outerHeight equaled 200
PASS: window.outerWidth equaled 200
DONE

