166 lines
8.1 KiB
HTML
166 lines
8.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createAsyncSuite("Runtime.getPreview");
|
|
|
|
// ------ RemoteObject.prototype.updatePreview
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.updatePreview.ObjectWithoutPreview",
|
|
description: "Should be able to update the preview of a RemoteObject without a preview.",
|
|
test(resolve, reject) {
|
|
RuntimeAgent.evaluate.invoke({expression: `({a:1, b:2})`, objectGroup: "test", generatePreview: false}, (error, remoteObjectPayload) => {
|
|
InspectorTest.assert(!error, "Should not be a protocol error.");
|
|
let remoteObject = WI.RemoteObject.fromPayload(remoteObjectPayload);
|
|
InspectorTest.expectThat(!remoteObject.preview, "RemoteObject should not have a preview.");
|
|
InspectorTest.expectThat(remoteObject.canLoadPreview(), "RemoteObject should be able to load a preview.");
|
|
remoteObject.updatePreview((preview) => {
|
|
InspectorTest.expectThat(preview instanceof WI.ObjectPreview, "RemoteObject.updatePreview should produce an ObjectPreview.");
|
|
InspectorTest.expectEqual(remoteObject.preview, preview, "RemoteObject.preview should be the same object as the callback.");
|
|
InspectorTest.expectEqual(remoteObject.preview.propertyPreviews.length, 2, "Preview should have 2 properties.");
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.updatePreview.ObjectWithPreview",
|
|
description: "Should be able to update the preview of a RemoteObject with a preview.",
|
|
test(resolve, reject) {
|
|
RuntimeAgent.evaluate.invoke({expression: `window.alpha = ({a:1, b:2, c:3})`, objectGroup: "test", generatePreview: true}, (error, remoteObjectPayload) => {
|
|
InspectorTest.assert(!error, "Should not be a protocol error.");
|
|
let remoteObject = WI.RemoteObject.fromPayload(remoteObjectPayload);
|
|
let originalPreview = remoteObject.preview;
|
|
InspectorTest.expectThat(remoteObject.preview, "RemoteObject should have a preview.");
|
|
InspectorTest.expectThat(remoteObject.canLoadPreview(), "RemoteObject should be able to load a preview.");
|
|
InspectorTest.expectEqual(originalPreview.propertyPreviews.length, 3, "Original preview should have 3 properties.");
|
|
InspectorTest.evaluateInPage(`window.alpha.d = 4`, () => {
|
|
remoteObject.updatePreview((preview) => {
|
|
InspectorTest.expectThat(preview instanceof WI.ObjectPreview, "RemoteObject.updatePreview should produce an ObjectPreview.");
|
|
InspectorTest.expectEqual(remoteObject.preview, preview, "RemoteObject.preview should be the same object as the callback.");
|
|
InspectorTest.expectEqual(remoteObject.preview.propertyPreviews.length, 4, "Preview should now have 4 properties.");
|
|
resolve();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.updatePreview.NonObject",
|
|
description: "Non-object RemoteObjects should not request a preview.",
|
|
test(resolve, reject) {
|
|
function testRemoteObject(remoteObject, preferredTypeName) {
|
|
InspectorTest.expectThat(!remoteObject.canLoadPreview(), `Should not be able to load a preview for a ${preferredTypeName || remoteObject.type} RemoteObject.`);
|
|
remoteObject.updatePreview((preview) => {
|
|
InspectorTest.expectNull(preview, `RemoteObject.updatePreview should return null for a ${preferredTypeName || remoteObject.type} RemoteObject.`);
|
|
});
|
|
}
|
|
|
|
testRemoteObject(WI.RemoteObject.fromPrimitiveValue(true));
|
|
testRemoteObject(WI.RemoteObject.fromPrimitiveValue(100));
|
|
testRemoteObject(WI.RemoteObject.fromPrimitiveValue("str"));
|
|
testRemoteObject(WI.RemoteObject.createFakeRemoteObject(), "fake object");
|
|
InspectorBackend.runAfterPendingDispatches(resolve);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.updatePreview.Symbol",
|
|
description: "Non-object RemoteObjects should not request a preview.",
|
|
test(resolve, reject) {
|
|
InspectorTest.evaluateInPage(`Symbol.iterator`, (error, remoteObject) => {
|
|
InspectorTest.expectThat(!remoteObject.canLoadPreview(), `Should not be able to load a preview for a ${remoteObject.type} RemoteObject.`);
|
|
remoteObject.updatePreview((preview) => {
|
|
InspectorTest.expectNull(preview, `RemoteObject.updatePreview should return null for a ${remoteObject.type} RemoteObject.`);
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.updatePreview.Function",
|
|
description: "Non-object RemoteObjects should not request a preview.",
|
|
test(resolve, reject) {
|
|
InspectorTest.evaluateInPage(`function f() {}; f`, (error, remoteObject) => {
|
|
InspectorTest.expectThat(!remoteObject.canLoadPreview(), `Should not be able to load a preview for a ${remoteObject.type} RemoteObject.`);
|
|
remoteObject.updatePreview((preview) => {
|
|
InspectorTest.expectNull(preview, `RemoteObject.updatePreview should return null for a ${remoteObject.type} RemoteObject.`);
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.updatePreview.Null",
|
|
description: "Non-object RemoteObjects should not request a preview.",
|
|
test(resolve, reject) {
|
|
InspectorTest.evaluateInPage(`null`, (error, remoteObject) => {
|
|
InspectorTest.expectThat(!remoteObject.canLoadPreview(), `Should not be able to load a preview for a ${remoteObject.subtype} RemoteObject.`);
|
|
remoteObject.updatePreview((preview) => {
|
|
InspectorTest.expectNull(preview, `RemoteObject.updatePreview should return null for a ${remoteObject.subtype} RemoteObject.`);
|
|
resolve();
|
|
});
|
|
}, {remoteObjectOnly: true});
|
|
}
|
|
});
|
|
|
|
// ------ Runtime.getPreview
|
|
|
|
suite.addTestCase({
|
|
name: "Runtime.getPreview.Symbol",
|
|
description: "Runtime.getPreview should return an empty preview for non-objects.",
|
|
test(resolve, reject) {
|
|
InspectorTest.evaluateInPage(`Symbol.iterator`, (error, remoteObject) => {
|
|
RuntimeAgent.getPreview(remoteObject.objectId, (error, result) => {
|
|
InspectorTest.log(JSON.stringify(result));
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Runtime.getPreview.Function",
|
|
description: "Runtime.getPreview should return an empty preview for non-objects.",
|
|
test(resolve, reject) {
|
|
InspectorTest.evaluateInPage(`function f() {}; f`, (error, remoteObject) => {
|
|
RuntimeAgent.getPreview(remoteObject.objectId, (error, result) => {
|
|
InspectorTest.log(JSON.stringify(result));
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
// ------
|
|
|
|
suite.addTestCase({
|
|
name: "Runtime.getPreview.InvalidObjectId",
|
|
description: "Invalid objectId should produce and error.",
|
|
test(resolve, reject) {
|
|
const objectId = "DOES_NOT_EXIST";
|
|
RuntimeAgent.getPreview(objectId, (error) => {
|
|
InspectorTest.expectThat(error, "Should produce an error.");
|
|
InspectorTest.log("Error: " + error);
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Tests for the Runtime.getPreview command and associated RemoteObject.prototype.updatePreview.</p>
|
|
</body>
|
|
</html>
|