blob: eac22bcb67cf2019107b5e43bd8621d6042c0d3b [file] [log] [blame]
<!-- saved from url=(0014)about:internet -->
<!-- Please preserve the CR/LF at the end of the previous line. -->
<html>
<!-- This page is meant to load inside the host browser like IE/FF -->
<head>
<script type="text/javascript" src="chrome_frame_tester_helpers.js"></script>
<script type="text/javascript">
function onLoad() {
var chromeFrame = GetChromeFrame();
chromeFrame.onmessage = OnChromeFrameResize;
setTimeout(NavigateToURL, 100);
}
function NavigateToURL() {
var chromeFrame = GetChromeFrame();
chromeFrame.src = "chrome_frame_resize_hosted.html";
setTimeout(CheckIfNavigationFailed, 15000);
}
var navigation_success = false;
function CheckIfNavigationFailed() {
if (!navigation_success) {
onFailure("Resize", 1, "ChromeFrame Navigation failed");
}
}
function OnNavigationSucceeded() {
navigation_success = true;
appendStatus("ChromeFrame hosted page loaded, beginning test...");
setTimeout(ResizeChromeFrame, 100);
}
var resize_step = 0;
function ResizeChromeFrame() {
var chromeFrame = GetChromeFrame();
if (resize_step == 0) {
appendStatus("Setting chromeFrame to 100x100");
resize_step = 1;
chromeFrame.width = 100;
setTimeout("OnResizeFailure(0)", 2000);
} else if (resize_step == 1) {
resize_step = 2;
chromeFrame.height = 100;
setTimeout("OnResizeFailure(1)", 2000);
} else if (resize_step == 2) {
appendStatus("Setting chromeFrame to 10x10");
resize_step = 3;
chromeFrame.width = 10;
setTimeout("OnResizeFailure(0)", 2000);
} else if (resize_step == 3) {
resize_step = 4;
chromeFrame.height = 10;
setTimeout("OnResizeFailure(1)", 2000);
}
// Note that setting the ChromeFrame window to 0x0 (or < 2x2 if we have the
// WS_BORDER style defined on our window) currently results
// in a check failure from the child chrome.exe process.
// TODO(robertshield): Figure out why and fix it.
}
var resize_step_received = 0;
function OnChromeFrameResize(evt) {
resize_step_received++;
appendStatus("ChromeFrame resized: " + evt.data + "step=" +
resize_step_received);
if (resize_step == 4) {
onSuccess("Resize", 1);
} else {
setTimeout(ResizeChromeFrame, 100);
}
}
function OnResizeFailure(step) {
// It turns out that the hosted page gets two calls to onresize()
// every time a single size parameter (i.e. width OR height) is changed.
// As such this check doesn't quite guarantee success, but if it fails,
// then we should fail the unit test.
if (step >= resize_step_received) {
onFailure("Resize", 1, "Did not receive resize reply back from frame.");
}
}
function GetChromeFrame() {
return window.document.ChromeFrame;
}
var debug_counter = 0;
function DebugResizeChromeFrame(delta) {
var chromeFrame = GetChromeFrame();
var newWidth = chromeFrame.clientWidth + delta;
var newHeight = chromeFrame.clientHeight + delta;
appendStatus(debug_counter + ". DEBUG resizing CF to (" + newWidth + "," +
newHeight + ")");
debug_counter++;
chromeFrame.width = newWidth;
chromeFrame.height = newHeight;
}
</script>
</head>
<body onload="onLoad();">
<div id="description" style="border: 2px solid black; width: 100%">
Test for resizing the chrome frame control.
</div>
<div id="statusPanel" style="border: 1px solid red; width: 100%">
Test running....
</div>
<span id="ChromeFrameSpan"></span>
<script type="text/javascript">
insertControl("ChromeFrameSpan",
{ "width": null,
"height": null,
"objectAttributes": { "style": "border: 1px solid blue" },
"eventHandlers": { "onload": "return OnNavigationSucceeded();" },
"embedAttributes": { "style": "border: 1px solid green" }
});
</script>
<br />
<br />
<button onclick="javascript:DebugResizeChromeFrame(20);">Bigger</button>
<button onclick="javascript:DebugResizeChromeFrame(-20);">Smaller</button>
</body>
</html>