| <!doctype html> |
| <html> |
| <head> |
| <script src="../resources/inspector-test.js"></script> |
| <script> |
| |
| function replay() { |
| let videoElement = document.getElementById("video"); |
| videoElement.pause(); |
| videoElement.currentTime = 0; |
| videoElement.load(); |
| } |
| |
| function loadPoster(url) { |
| document.getElementById("video").poster = url; |
| |
| replay(); |
| } |
| |
| function loadSource(url, type) { |
| let sourceElement = document.createElement("source"); |
| sourceElement.type = type; |
| sourceElement.src = url; |
| |
| document.getElementById("video").appendChild(sourceElement); |
| |
| replay(); |
| } |
| |
| function loadTrack(url, kind) { |
| let trackElement = document.createElement("track"); |
| trackElement.kind = kind; |
| trackElement.default = true; |
| trackElement.src = url; |
| |
| trackElement.track.mode = "hidden"; |
| |
| document.getElementById("video").appendChild(trackElement); |
| |
| replay(); |
| } |
| |
| function handleVideoEnded(event) { |
| TestPage.dispatchEventToFrontend("TestPage-video-ended"); |
| } |
| |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("WI.Resource.initiatorNode"); |
| |
| let videoNode = null; |
| |
| suite.addTestCase({ |
| name: "WI.Resource.initiatorNode.posterPNG", |
| test(resolve, reject) { |
| let file = "white.png"; |
| |
| WI.Frame.awaitEvent(WI.Frame.Event.ResourceWasAdded) |
| .then((event) => { |
| let resource = event.data.resource; |
| |
| InspectorTest.assert(resource.url.endsWith(file), `Resource should be "${file}"`); |
| |
| InspectorTest.expectNotNull(resource.initiatorNode, "Resource should have an initiatorNode"); |
| if (resource.initiatorNode) |
| InspectorTest.expectEqual(resource.initiatorNode.id, videoNode.id, "Resource initiatorNode should match video node id"); |
| }) |
| .then(resolve, reject); |
| |
| InspectorTest.evaluateInPage(`loadPoster("resources/${file}")`); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "WI.Resource.initiatorNode.sourceMP4", |
| test(resolve, reject) { |
| let file = "white.mp4"; |
| |
| WI.Frame.awaitEvent(WI.Frame.Event.ResourceWasAdded) |
| .then((event) => { |
| let resource = event.data.resource; |
| |
| InspectorTest.assert(resource.url.endsWith(file), `Resource should be "${file}"`); |
| |
| InspectorTest.expectNotNull(resource.initiatorNode, "Resource should have an initiatorNode"); |
| if (resource.initiatorNode) |
| InspectorTest.expectEqual(resource.initiatorNode.id, videoNode.id, "Resource initiatorNode should match video node id"); |
| }) |
| .then(resolve, reject); |
| |
| InspectorTest.evaluateInPage(`loadSource("resources/${file}", "video/mp4")`); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "WI.Resource.initiatorNode.trackVTT", |
| test(resolve, reject) { |
| let file = "white.vtt"; |
| |
| // Loading a track causes a bunch of media controls to be loaded. |
| let listener = WI.Frame.addEventListener(WI.Frame.Event.ResourceWasAdded, (event) => { |
| let resource = event.data.resource; |
| if (!resource.url.endsWith(file)) |
| return; |
| |
| InspectorTest.expectNotNull(resource.initiatorNode, "Resource should have an initiatorNode"); |
| if (resource.initiatorNode) |
| InspectorTest.expectEqual(resource.initiatorNode.id, videoNode.id, "Resource initiatorNode should match video node id"); |
| |
| WI.Frame.removeEventListener(WI.Frame.Event.ResourceWasAdded, listener); |
| |
| resolve(); |
| }); |
| |
| InspectorTest.evaluateInPage(`loadTrack("resources/${file}", "captions")`); |
| } |
| }); |
| |
| WI.domManager.requestDocument((documentNode) => { |
| WI.domManager.querySelector(documentNode.id, "video#video", (videoNodeId) => { |
| videoNode = WI.domManager.nodeForId(videoNodeId); |
| if (videoNode) |
| suite.runTestCasesAndFinish(); |
| else { |
| InspectorTest.fail(`DOM node for "video#video" not found.`); |
| InspectorTest.completeTest(); |
| } |
| }); |
| }); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests that Request initiatorNode is set correctly.</p> |
| <video id="video" muted autoplay></video> |
| </body> |
| </html> |