<!
DOCTYPE HTML>
<
html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=760851
-->
<
head>
<
meta charset=
"utf-8">
<
title>Test for Bug 760851</
title>
<
script src=
"/tests/SimpleTest/SimpleTest.js"></
script>
<
link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css"/>
<
script type=
"application/javascript">
/** Test for Bug 760851 **/
SimpleTest.waitForExplicitFinish();
// We need to skip all the interface constants.
var keysToSkip = [
"TYPE_NAVIGATE",
"TYPE_RELOAD",
"TYPE_RESERVED",
"TYPE_BACK_FORWARD"];
// Testing window.performance is sufficient, because checkAttributesMatch is
// recursive, so window.performance.navigation and window.performance.timing
// get tested as well.
var toTest = [window.performance];
// The event handler has to be initialized or else jsonObj will be undefined
window.performance.onresourcetimingbufferfull = function() {};
function checkAttributesMatch(obj, jsonObj) {
// EventCounts isn
't going to converted to a JSON string
if (
'EventCounts' in window && obj instanceof EventCounts) {
return;
}
if (typeof(obj) !==
"object") {
throw
"Expected obj to be of type \"object\
". Test failed.";
}
if (typeof(jsonObj) !==
"object") {
is(false,
"Expected object " + jsonObj +
" to be of type object, but gotten otherwise");
}
for (key in obj) {
if (typeof(obj[key]) ===
"function" || keysToSkip.indexOf(key) > -1)
continue;
if (typeof(obj[key]) ===
"object") {
checkAttributesMatch(obj[key], jsonObj[key]);
continue;
}
is(jsonObj[key], obj[key],
"values for " + obj +
" key " + key +
" should match");
}
}
function runTest() {
toTest.forEach(function(testObj) {
var jsonCopy = JSON.parse(JSON.stringify(testObj));
checkAttributesMatch(testObj, jsonCopy);
});
SimpleTest.finish();
}
</
script>
</
head>
<
body onload=
"runTest();">
<a target=
"_blank" href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=760851">Mozill
a Bug 760851</a>
<p id="display"></p>
<div id="content" style="display: none">
<p></p>
<p></p>
<p></p>
</div>
<pre id="test">
</pre>
</body>
</html>