Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(646)

Unified Diff: LayoutTests/fast/events/message-port-clone.html

Issue 114363002: Structured cloning: improve DataCloneError reporting. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebased + reset V8TestInterfaceConstructor.cpp result Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/events/message-port-clone.html
diff --git a/LayoutTests/fast/events/message-port-clone.html b/LayoutTests/fast/events/message-port-clone.html
index b738887c39dac0ee28e5e7149b694e40b1022833..8b3ef59fb57d9d4cbfcab9a09193e7d13efe8643 100644
--- a/LayoutTests/fast/events/message-port-clone.html
+++ b/LayoutTests/fast/events/message-port-clone.html
@@ -13,20 +13,36 @@ channel.port1.onmessage = channel.port2.onmessage = function(evt) {
}
// Posting port to itself should throw an exception.
-shouldThrow("channel.port1.postMessage('msg', [channel.port1])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': Item #0 in the array of ports contains the source port."');
+shouldThrow("channel.port1.postMessage('msg', [channel.port1])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': Port at index 0 contains the source port."');
debug("Posting port to entangled pair neuters the port and does nothing else:");
channel = new MessageChannel;
var channel2 = new MessageChannel;
channel.port1.postMessage("msg", [channel.port2]);
-shouldThrow("channel2.port1.postMessage('msg', [channel.port2])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': Item #0 in the array of ports is already neutered."');
+shouldThrow("channel2.port1.postMessage('msg', [channel.port2])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': Port at index 0 is already neutered."');
channel = new MessageChannel;
channel2 = new MessageChannel
channel.port1.postMessage("msg", [channel2.port1]);
+debug("Posting a neutered ArrayBuffer should throw.");
+channel = new MessageChannel;
+var arrayBuffer = new ArrayBuffer(2);
+
+channel.port1.postMessage("msg", [arrayBuffer]);
+shouldThrow("channel.port1.postMessage(arrayBuffer, [])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': An ArrayBuffer is neutered and could not be cloned."');
+
+debug("Posting a neutered ArrayBufferView should throw.");
+channel = new MessageChannel;
+var uint16Array = new Uint16Array(10);
+
+shouldThrow("channel.port1.postMessage('msg', [uint16Array])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': Value at index 0 does not have a transferable type."');
+
+channel.port1.postMessage("msg", [uint16Array.buffer]);
+shouldThrow("channel.port1.postMessage(uint16Array, [])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': An ArrayBuffer is neutered and could not be cloned."');
+
// Should not be able to post a cloned port.
-shouldThrow("channel.port1.postMessage('msg', [channel2.port1])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': Item #0 in the array of ports is already neutered."');
+shouldThrow("channel.port1.postMessage('msg', [channel2.port1])", '"DataCloneError: Failed to execute \'postMessage\' on \'MessagePort\': Port at index 0 is already neutered."');
// Test posting messages to a port in cloned state.
@@ -90,6 +106,7 @@ function testPostClosePort()
finishJSTest();
}
}
+
</script>
</body>
</html>

Powered by Google App Engine
This is Rietveld 408576698