// grab test metadata from a test file function __result_handler() { function __get_metadata() { var obj = new Object(); var author = []; var assert = []; var help = []; var match = []; var mismatch = []; var flags = []; var nodes; nodes = document.querySelectorAll('link[rel="author"]'); for (var i = 0; i < nodes.length; i++) { var href = nodes[i].getAttribute("href"); var title = nodes[i].getAttribute("title"); var s = title; if (href != null) { s += " <" + href + ">"; } author.push(s); } if (nodes.length > 0) obj.author = author; nodes = document.querySelectorAll('meta[name="assert"]'); for (var i = 0; i < nodes.length; i++) { assert.push(nodes[i].getAttribute("content")); } if (nodes.length > 0) obj.assert = assert; nodes = document.querySelectorAll('link[rel="help"]'); for (var i = 0; i < nodes.length; i++) { help.push(nodes[i].getAttribute("href")); } if (nodes.length > 0) obj.help = help; nodes = document.querySelectorAll('link[rel="match"]'); for (var i = 0; i < nodes.length; i++) { match.push(nodes[i].getAttribute("href")); } if (nodes.length > 0) obj.match = match; nodes = document.querySelectorAll('link[rel="mismatch"]'); for (var i = 0; i < nodes.length; i++) { mismatch.push(nodes[i].getAttribute("href")); } if (nodes.length > 0) obj.match = mismatch; nodes = document.querySelectorAll('meta[name="flags"]'); for (var i = 0; i < nodes.length; i++) { flags.push(nodes[i].getAttribute("content")); } if (nodes.length > 0) obj.flags = flags; return obj; } var meta = __get_metadata(); var nodes; function copy(obj, prop, arr) { if (typeof arr !== "undefined") { var a = []; for (var i = 0; i<arr.length;i++) { a[i] = arr[i]; } obj[prop] = a; } } var ret = new Object(); ret.location = document.location.href; ret.type = "manual"; ret.tests = new Object(); var node = document.querySelector('script[src$="/resources/testharness.js"]'); if (node !== null) { ret.type = "script"; } if (ret.type === "script") { if (typeof metadata_generator === "undefined" || Object.keys(metadata_generator.currentMetadata).length === 0) return "WRAPPER:TRY_AGAIN"; else { for (var key in metadata_generator.currentMetadata) { var obj = metadata_generator.currentMetadata[key]; var newtest = new Object(); ret.tests[key]= newtest; if (typeof obj.help === "undefined") { copy(newtest, "help", meta.help); } else if (typeof obj.help === "string") { newtest.help = [ obj.help ]; } if (typeof obj.author === "undefined") { copy(newtest, "author", meta.author); } else if (typeof obj.author === "string") { newtest.author = [ obj.author ]; } if (typeof obj.assert === "undefined") { copy(newtest, "assert", meta.assert); } else if (typeof obj.assert === "string") { newtest.assert = [ obj.assert ]; } copy(newtest, "match", meta.match); copy(newtest, "mismatch", meta.mismatch); copy(newtest, "flags", meta.flags); } return ret; } } else { var newtest = meta; ret.tests[document.title]= newtest; if (typeof newtest.match !== "undefined" || typeof newtest.mismatch !== "undefined") { ret.type = "reftest"; } return ret; } } function __give_up() { var ret = new Object(); ret.location = document.location.href; ret.type = "manual"; ret.tests = new Object(); var node = document.querySelector('script[src$="/resources/testharness.js"]'); if (node !== null) { ret.type = "script"; } else if (typeof newtest.match !== "undefined" || typeof newtest.mismatch !== "undefined") { ret.type = "reftest"; } var newtest = __get_metadata(); ret.tests[document.title]= newtest; return ret; }