| // 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; | |
| } |