<!DOCTYPE HTML> <html> <head> <title>Test file for Bug 668513</title> <script> var SimpleTest = opener.SimpleTest; var ok = opener.ok; var is = opener.is; function finish() { SimpleTest.finish(); close(); } function onload_test() { var win = frames[0]; ok(win.performance, 'Window.performance should be defined'); ok(win.performance.navigation, 'Window.performance.navigation should be defined'); var navigation = win.performance && win.performance.navigation; if (navigation === undefined) { // avoid script errors finish(); return; } // do this with a timeout to see the visuals of the navigations. setTimeout("nav_frame();", 100); } var step = 1; function nav_frame() { var navigation_frame = frames[0]; var navigation = navigation_frame.performance.navigation; switch (step) { case 1: { navigation_frame.location.href = 'bug570341_recordevents.html'; step++; break; } case 2: { is(navigation.type, navigation.TYPE_NAVIGATE, 'Expected window.performance.navigation.type == TYPE_NAVIGATE'); navigation_frame.history.back(); step++; break; } case 3: { is(navigation.type, navigation.TYPE_BACK_FORWARD, 'Expected window.performance.navigation.type == TYPE_BACK_FORWARD'); step++; navigation_frame.history.forward(); break; } case 4: { is(navigation.type, navigation.TYPE_BACK_FORWARD, 'Expected window.performance.navigation.type == TYPE_BACK_FORWARD'); navigation_frame.location.href = 'bug668513_redirect.html'; step++; break; } case 5: { is(navigation.type, navigation.TYPE_NAVIGATE, 'Expected timing.navigation.type as TYPE_NAVIGATE'); is(navigation.redirectCount, 1, 'Expected navigation.redirectCount == 1 on an server redirected navigation'); var timing = navigation_frame.performance && navigation_frame.performance.timing; if (timing === undefined) { // avoid script errors finish(); break; } ok(timing.navigationStart > 0, 'navigationStart should be > 0'); sequence = ['navigationStart', 'redirectStart', 'redirectEnd', 'fetchStart']; for (var j = 1; j < sequence.length; ++j) { var prop = sequence[j]; var prevProp = sequence[j-1]; ok(timing[prevProp] <= timing[prop], ['Expected ', prevProp, ' to happen before ', prop, ', got ', prevProp, ' = ', timing[prevProp], ', ', prop, ' = ', timing[prop]].join('')); } step++; finish(); } default: break; } } </script> </head> <body> <div id="frames"> <iframe name="child0" onload="onload_test();" src="navigation/blank.html"></iframe> </div> </body> </html>