| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <script> |
| function getURL() { |
| TestPage.dispatchEventToFrontend("TestURL", { |
| url: document.URL.substring(0, document.URL.lastIndexOf("/")) + "/resources/data.json" |
| }); |
| } |
| function triggerOverrideLoad() { |
| fetch("resources/data.json").then(() => { |
| TestPage.dispatchEventToFrontend("LoadComplete"); |
| }); |
| } |
| |
| function test() |
| { |
| let suite = ProtocolTest.createAsyncSuite("LocalResourceOverride.ContinueResponse"); |
| |
| suite.addTestCase({ |
| name: "LocalResourceOverride.ContinueResponse", |
| description: "Test an override continue response to let the original load complete.", |
| async test() { |
| // Setup interception. |
| await Promise.all([ |
| InspectorProtocol.awaitCommand({method: "Network.enable", params: {}}), |
| InspectorProtocol.awaitCommand({method: "Network.setInterceptionEnabled", params: {enabled: true}}), |
| ]); |
| |
| // Get URL to override and override it. |
| let [event] = await Promise.all([ |
| ProtocolTest.awaitEvent("TestURL"), |
| ProtocolTest.evaluateInPage(`getURL()`), |
| ]); |
| await InspectorProtocol.awaitCommand({method: "Network.addInterception", params: {url: event.data.url, stage: "response"}}); |
| |
| // Fetch URL and intercept it. |
| let [messageObject] = await Promise.all([ |
| InspectorProtocol.awaitEvent({event: "Network.responseIntercepted"}), |
| ProtocolTest.evaluateInPage(`triggerOverrideLoad()`), |
| ]); |
| ProtocolTest.pass("Intercepted response."); |
| |
| // Let the load continue. |
| await Promise.all([ |
| InspectorProtocol.awaitEvent({event: "Network.responseReceived"}), |
| InspectorProtocol.awaitCommand({method: "Network.interceptContinue", params: {requestId: messageObject.params.requestId, stage: "response"}}), |
| ]); |
| ProtocolTest.pass("Response received."); |
| |
| // Remove override. |
| await InspectorProtocol.awaitCommand({method: "Network.removeInterception", params: {url: event.data.url, stage: "response"}}); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Test an override continue response to let the original load complete.</p> |
| </body> |
| </html> |