| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../resources/inspector-test.js"></script> |
| <script> |
| if (window.testRunner && window.internals) |
| internals.settings.setHyperlinkAuditingEnabled(true); |
| |
| function clickElement(element) { |
| let x = element.offsetLeft + 2; |
| let y = element.offsetTop + 2; |
| let supportsTouchEvents = "TouchEvent" in window; |
| if (supportsTouchEvents && window.testRunner && testRunner.runUIScript) |
| testRunner.runUIScript("(function() { uiController.singleTapAtPoint(" + x + ", " + y + ", function() { /* Do nothing */ }); })();", function() { /* Do nothing */ }); |
| else if (window.eventSender) { |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| } |
| } |
| |
| function triggerPingWith204Response() { |
| clickElement(document.getElementById("a204")); |
| } |
| |
| function triggerPingWith404Response() { |
| clickElement(document.getElementById("a404")); |
| } |
| |
| // ---- |
| |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("Resource.Type.Ping"); |
| |
| function addTestCase({name, description, expression, resourceHandler}) { |
| suite.addTestCase({ |
| name, description, |
| test(resolve, reject) { |
| let resource = null; |
| InspectorTest.evaluateInPage(expression); |
| WI.Frame.awaitEvent(WI.Frame.Event.ResourceWasAdded) |
| .then((event) => { |
| resource = event.data.resource; |
| alwaysTest(resource); |
| if (resource.isLoading()) { |
| return Promise.race([ |
| resource.awaitEvent(WI.Resource.Event.LoadingDidFinish), |
| resource.awaitEvent(WI.Resource.Event.LoadingDidFail), |
| ]); |
| } |
| }) |
| .then(() => { resourceHandler(resource); }) |
| .then(resolve, reject); |
| } |
| }); |
| } |
| |
| function alwaysTest(resource) { |
| InspectorTest.expectEqual(resource.type, WI.Resource.Type.Ping, "Resource should be Ping type."); |
| InspectorTest.expectEqual(resource.requestMethod, "POST", "Resource should be a POST request."); |
| InspectorTest.expectEqual(resource.requestData, "PING", "Resource data should be 'PING'."); |
| InspectorTest.log("Ping-To: " + resource.requestHeaders.valueForCaseInsensitiveKey("Ping-To")); |
| } |
| |
| addTestCase({ |
| name: "Resource.Type.Ping.204", |
| description: "Send a ping that gets a 204 response.", |
| expression: "triggerPingWith204Response()", |
| resourceHandler(resource) { |
| InspectorTest.expectEqual(resource.statusCode, 204, "Resource should have a 204 response."); |
| } |
| }); |
| |
| addTestCase({ |
| name: "Resource.Type.Ping.404", |
| description: "Send a ping that gets a 404 response.", |
| expression: "triggerPingWith404Response()", |
| resourceHandler(resource) { |
| InspectorTest.expectEqual(resource.statusCode, 404, "Resource should have a 404 response."); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for Resource.Type.Ping.</p> |
| <a id="a204" href="#a204" ping="resources/ping.php?status=204">Ping 204</a> |
| <a id="a404" href="#a404" ping="resources/ping.php?status=404">Ping 404</a> |
| </body> |
| </html> |