110 lines
5.0 KiB
HTML
110 lines
5.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>window.performance.timing attribute ordering on a simple navigation</title>
|
|
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
|
|
<link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="resources/webperftestharness.js"></script>
|
|
<script>
|
|
setup({explicit_done: true});
|
|
|
|
test_namespace('timing');
|
|
|
|
var step = 1;
|
|
function onload_test()
|
|
{
|
|
if (step === 1 && window.performance === undefined)
|
|
{
|
|
// avoid script errors
|
|
done();
|
|
return;
|
|
}
|
|
|
|
var navigation_frame = document.getElementById("frameContext").contentWindow;
|
|
performanceNamespace = navigation_frame.performance;
|
|
switch (step)
|
|
{
|
|
case 1:
|
|
{
|
|
navigation_frame.location.href = '/navigation-timing/resources/blank_page_green.html';
|
|
step++;
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
test_namespace('navigation', true);
|
|
|
|
//
|
|
// Tests
|
|
//
|
|
test_equals(performanceNamespace.navigation.type,
|
|
performanceNamespace.navigation.TYPE_NAVIGATE,
|
|
'window.performance.navigation.type == TYPE_NAVIGATE',{help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
|
|
|
|
// navigiation must be non-0
|
|
test_timing_greater_than('navigationStart', 0);
|
|
|
|
// must be no redirection for this test case
|
|
test_timing_equals('redirectStart', 0);
|
|
test_timing_equals('redirectEnd', 0);
|
|
|
|
// validate attribute ordering
|
|
test_timing_order('fetchStart', 'navigationStart');
|
|
test_timing_order('domainLookupStart', 'fetchStart');
|
|
test_timing_order('domainLookupEnd', 'domainLookupStart');
|
|
test_timing_order('connectStart', 'domainLookupEnd');
|
|
test_timing_order('connectEnd', 'connectStart');
|
|
test_timing_order('requestStart', 'connectEnd');
|
|
test_timing_order('responseStart', 'requestStart');
|
|
test_timing_order('responseEnd', 'responseStart');
|
|
test_timing_order('domLoading', 'fetchStart');
|
|
test_timing_order('domInteractive', 'responseEnd');
|
|
test_timing_order('domContentLoadedEventStart', 'domInteractive');
|
|
test_timing_order('domContentLoadedEventEnd', 'domContentLoadedEventStart');
|
|
test_timing_order('domComplete', 'domContentLoadedEventEnd');
|
|
test_timing_order('loadEventStart', 'domContentLoadedEventEnd');
|
|
test_timing_order('loadEventEnd', 'loadEventStart');
|
|
|
|
// setup requires the frame to have a previous page with an onunload event handler.
|
|
test_timing_order('unloadEventStart', 'navigationStart');
|
|
test_timing_order('unloadEventEnd', 'unloadEventStart');
|
|
|
|
step++;
|
|
done();
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<h1>Description</h1>
|
|
<p>This test validates the ordering of the window.performance.timing attributes.</p>
|
|
|
|
<p>This page should be loaded with a yellow background frame below which contains an unload event
|
|
handler.</p>
|
|
|
|
<p>After the page loads, the frame is navigated to a new blank page with a green background. At this point, the navigation timeline is verified</p>
|
|
|
|
<p>This test passes if all of the checks to the frame.window.performance.timing attributes are
|
|
correct throughout the navigation scenario and the frame below ends with a green background.
|
|
Otherwise, this test fails.</p>
|
|
|
|
<h1>Setup</h1>
|
|
|
|
<div id="log"></div>
|
|
<br />
|
|
<iframe id="frameContext"
|
|
onload="/* Need to make sure we don't examine loadEventEnd
|
|
until after the load event has finished firing */
|
|
setTimeout(onload_test, 0);"
|
|
src="resources/blank_page_unload.html"
|
|
style="width: 250px; height: 250px;"></iframe>
|
|
</body>
|
|
</html>
|