| <!-- No DOCTYPE to avoid Flakey Strict Mode Console Warning --> |
| <html> |
| <head> |
| <script src="../resources/inspector-test.js"></script> |
| <script> |
| function loadDocumentWithURL(url) { |
| let iframe = document.createElement("iframe"); |
| iframe.src = url; |
| document.body.appendChild(iframe); |
| } |
| |
| function loadScriptWithURL(url) { |
| let script = document.createElement("script"); |
| script.src = url; |
| document.body.appendChild(script); |
| } |
| |
| function loadStyleSheetWithURL(url) { |
| let link = document.createElement("link"); |
| link.rel = "stylesheet"; |
| link.href = url; |
| document.head.appendChild(link); |
| } |
| |
| function loadImageWithURL(url) { |
| let img = document.createElement("img"); |
| img.src = url; |
| document.body.appendChild(img); |
| } |
| |
| function loadXHRWithURL(url) { |
| let xhr = new XMLHttpRequest; |
| xhr.open("GET", url + "?xhr", true); |
| xhr.send(); |
| } |
| |
| function loadFetchWithURL(url) { |
| fetch(url + "?fetch"); |
| } |
| |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("Resource.MIMEType"); |
| |
| function addTestCase({name, description, expression, type, mimeType, synthetic}) { |
| suite.addTestCase({ |
| name, description, |
| test(resolve, reject) { |
| InspectorTest.evaluateInPage(expression); |
| WI.Frame.singleFireEventListener(WI.Frame.Event.ResourceWasAdded, (event) => { |
| let resource = event.data.resource; |
| InspectorTest.expectThat(resource instanceof WI.Resource, "Resource should be created."); |
| resource.singleFireEventListener(WI.Resource.Event.ResponseReceived, (event) => { |
| InspectorTest.expectEqual(resource.type, type, `Resource Type should be '${type}'.`); |
| InspectorTest.expectEqual(resource.mimeType, mimeType, `Resource mimeType should be '${mimeType}'.`); |
| InspectorTest.expectEqual(resource.syntheticMIMEType, synthetic, `Resource syntheticMIMEType should be '${synthetic}'.`); |
| resolve(); |
| }); |
| }); |
| } |
| }); |
| } |
| |
| function addDocumentResourceTestCase({name, description, expression, type, mimeType, synthetic}) { |
| suite.addTestCase({ |
| name, description, |
| test(resolve, reject) { |
| InspectorTest.evaluateInPage(expression); |
| WI.Frame.singleFireEventListener(WI.Frame.Event.ChildFrameWasAdded, (event) => { |
| // At this point the frame's resource has loaded. |
| let resource = event.data.childFrame.mainResource; |
| InspectorTest.expectThat(resource instanceof WI.Resource, "Frame MainResource should be created."); |
| InspectorTest.expectEqual(resource.type, type, `Resource Type should be '${type}'.`); |
| InspectorTest.expectEqual(resource.mimeType, mimeType, `Resource mimeType should be '${mimeType}'.`); |
| InspectorTest.expectEqual(resource.syntheticMIMEType, synthetic, `Resource syntheticMIMEType should be '${synthetic}'.`); |
| resolve(); |
| }); |
| } |
| }); |
| } |
| |
| // These are the Apache MIME types returned for file extensions. |
| let mimeTypeForExtension = { |
| js: "application/x-javascript", |
| json: "application/json", |
| css: "text/css", |
| txt: "text/plain", |
| html: "text/html", |
| png: "image/png", |
| jpg: "image/jpeg", |
| }; |
| |
| // Scripts. |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Script.js", |
| expression: `loadScriptWithURL("resources/script.js")`, |
| type: WI.Resource.Type.Script, |
| mimeType: mimeTypeForExtension.js, |
| synthetic: mimeTypeForExtension.js, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Script.txt", |
| expression: `loadScriptWithURL("resources/script.txt")`, |
| type: WI.Resource.Type.Script, |
| mimeType: mimeTypeForExtension.txt, |
| synthetic: "text/javascript", |
| }); |
| |
| // Stylesheets. |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Stylesheet.css", |
| expression: `loadStyleSheetWithURL("resources/stylesheet.css")`, |
| type: WI.Resource.Type.Stylesheet, |
| mimeType: mimeTypeForExtension.css, |
| synthetic: mimeTypeForExtension.css, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Stylesheet.txt", |
| expression: `loadStyleSheetWithURL("resources/stylesheet.txt")`, |
| type: WI.Resource.Type.Stylesheet, |
| mimeType: mimeTypeForExtension.txt, |
| synthetic: "text/css", |
| }); |
| |
| // Images. |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Image.png", |
| expression: `loadImageWithURL("/resources/square100.png")`, |
| type: WI.Resource.Type.Image, |
| mimeType: mimeTypeForExtension.png, |
| synthetic: mimeTypeForExtension.png, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Image.jpg", |
| expression: `loadImageWithURL("/resources/square20.jpg")`, |
| type: WI.Resource.Type.Image, |
| mimeType: mimeTypeForExtension.jpg, |
| synthetic: mimeTypeForExtension.jpg, |
| }); |
| |
| // XHRs. |
| |
| addTestCase({ |
| name: "Resource.MIMEType.XHR.js", |
| expression: `loadXHRWithURL("resources/script.js")`, |
| type: WI.Resource.Type.XHR, |
| mimeType: mimeTypeForExtension.js, |
| synthetic: mimeTypeForExtension.js, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.XHR.css", |
| expression: `loadXHRWithURL("resources/stylesheet.css")`, |
| type: WI.Resource.Type.XHR, |
| mimeType: mimeTypeForExtension.css, |
| synthetic: mimeTypeForExtension.css, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.XHR.png", |
| expression: `loadXHRWithURL("/resources/square100.png")`, |
| type: WI.Resource.Type.XHR, |
| mimeType: mimeTypeForExtension.png, |
| synthetic: mimeTypeForExtension.png, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.XHR.txt", |
| expression: `loadXHRWithURL("/resources/square20.jpg")`, |
| type: WI.Resource.Type.XHR, |
| mimeType: mimeTypeForExtension.jpg, |
| synthetic: mimeTypeForExtension.jpg, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.XHR.json", |
| expression: `loadXHRWithURL("resources/json.php")`, |
| type: WI.Resource.Type.XHR, |
| mimeType: mimeTypeForExtension.json, |
| synthetic: mimeTypeForExtension.json, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.XHR.html", |
| expression: `loadXHRWithURL("resources/data.html")`, |
| type: WI.Resource.Type.XHR, |
| mimeType: mimeTypeForExtension.html, |
| synthetic: mimeTypeForExtension.html, |
| }); |
| |
| // Fetch. |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Fetch.js", |
| expression: `loadFetchWithURL("resources/script.js")`, |
| type: WI.Resource.Type.Fetch, |
| mimeType: mimeTypeForExtension.js, |
| synthetic: mimeTypeForExtension.js, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Fetch.css", |
| expression: `loadFetchWithURL("resources/stylesheet.css")`, |
| type: WI.Resource.Type.Fetch, |
| mimeType: mimeTypeForExtension.css, |
| synthetic: mimeTypeForExtension.css, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Fetch.png", |
| expression: `loadFetchWithURL("/resources/square100.png")`, |
| type: WI.Resource.Type.Fetch, |
| mimeType: mimeTypeForExtension.png, |
| synthetic: mimeTypeForExtension.png, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Fetch.txt", |
| expression: `loadFetchWithURL("/resources/square20.jpg")`, |
| type: WI.Resource.Type.Fetch, |
| mimeType: mimeTypeForExtension.jpg, |
| synthetic: mimeTypeForExtension.jpg, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Fetch.json", |
| expression: `loadFetchWithURL("resources/json.php")`, |
| type: WI.Resource.Type.Fetch, |
| mimeType: mimeTypeForExtension.json, |
| synthetic: mimeTypeForExtension.json, |
| }); |
| |
| addTestCase({ |
| name: "Resource.MIMEType.Fetch.html", |
| expression: `loadFetchWithURL("resources/data.html")`, |
| type: WI.Resource.Type.Fetch, |
| mimeType: mimeTypeForExtension.html, |
| synthetic: mimeTypeForExtension.html, |
| }); |
| |
| // Documents. |
| |
| addDocumentResourceTestCase({ |
| name: "Resource.MIMEType.Document.js", |
| expression: `loadDocumentWithURL("resources/script.js")`, |
| type: WI.Resource.Type.Document, |
| mimeType: mimeTypeForExtension.js, |
| synthetic: mimeTypeForExtension.js, |
| }); |
| |
| addDocumentResourceTestCase({ |
| name: "Resource.MIMEType.Document.css", |
| expression: `loadDocumentWithURL("resources/stylesheet.css")`, |
| type: WI.Resource.Type.Document, |
| mimeType: mimeTypeForExtension.css, |
| synthetic: mimeTypeForExtension.css, |
| }); |
| |
| addDocumentResourceTestCase({ |
| name: "Resource.MIMEType.Document.png", |
| expression: `loadDocumentWithURL("/resources/square100.png")`, |
| type: WI.Resource.Type.Document, |
| mimeType: mimeTypeForExtension.png, |
| synthetic: mimeTypeForExtension.png, |
| }); |
| |
| addDocumentResourceTestCase({ |
| name: "Resource.MIMEType.Document.txt", |
| expression: `loadDocumentWithURL("/resources/square20.jpg")`, |
| type: WI.Resource.Type.Document, |
| mimeType: mimeTypeForExtension.jpg, |
| synthetic: mimeTypeForExtension.jpg, |
| }); |
| |
| addDocumentResourceTestCase({ |
| name: "Resource.MIMEType.Document.json", |
| expression: `loadDocumentWithURL("resources/json.php")`, |
| type: WI.Resource.Type.Document, |
| mimeType: mimeTypeForExtension.json, |
| synthetic: mimeTypeForExtension.json, |
| }); |
| |
| addDocumentResourceTestCase({ |
| name: "Resource.MIMEType.Document.html", |
| expression: `loadDocumentWithURL("resources/data.html")`, |
| type: WI.Resource.Type.Document, |
| mimeType: mimeTypeForExtension.html, |
| synthetic: mimeTypeForExtension.html, |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for the `mimeType` and `syntheticMIMEType` properties of different Resource Types.</p> |
| </body> |
| </html> |