blob: a243f7757d5fb97274f8472b05b7d8a7d7d92681 [file] [log] [blame]
<!-- 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",
});
// Style Sheets.
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>