<!-- 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> |