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

Unified Diff: third_party/WebKit/LayoutTests/mojo/associated_interface_ptr.html

Issue 2820783002: Add associated interfaces & bindings. (Closed)
Patch Set: Change Router.prototype.accept. Add a TODO for endpoint client not attached. Created 3 years, 8 months 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: third_party/WebKit/LayoutTests/mojo/associated_interface_ptr.html
diff --git a/third_party/WebKit/LayoutTests/mojo/associated_interface_ptr.html b/third_party/WebKit/LayoutTests/mojo/associated_interface_ptr.html
new file mode 100644
index 0000000000000000000000000000000000000000..361cff3aafd65806a8fb85df09decb293d72ddd5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/mojo/associated_interface_ptr.html
@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="../resources/mojo-helpers.js"></script>
+<script>
+'use strict';
+
+setup({ explicit_done: true });
+
+define([
+ "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom",
+ "mojo/public/js/associated_bindings",
+ "mojo/public/js/bindings",
+], function(testAssociatedInterfaces, associatedBindings, bindings) {
+
+ function IntegerSenderImpl(callback) {
+ this.callback = callback;
+ }
+
+ IntegerSenderImpl.prototype.echo = function(value) {
+ return Promise.resolve({value: value});
+ };
+
+ IntegerSenderImpl.prototype.send = function(value) {
+ if (this.callback) {
+ this.callback(value);
+ }
+ };
+
+ function IntegerSenderConnectionImpl() {
+ this.integerSenderBinding_ = null;
+ }
+
+ IntegerSenderConnectionImpl.prototype.getSender = function(
+ integerSenderRequest) {
+ this.integerSenderBinding_ = new associatedBindings.AssociatedBinding(
+ testAssociatedInterfaces.IntegerSender,
+ new IntegerSenderImpl(),
+ integerSenderRequest);
+ };
+
+ IntegerSenderConnectionImpl.prototype.asyncGetSender = function() {
+ var integerSenderPtrInfo = new
+ associatedBindings.AssociatedInterfacePtrInfo();
+ var integerSenderRequest = associatedBindings.makeRequest(
+ integerSenderPtrInfo);
+ this.getSender(integerSenderRequest);
+ return Promise.resolve({sender: integerSenderPtrInfo});
+ };
+
+ function IntegerSenderConnectionAtBothEndsImpl() {
+ this.integerSender_ = null;
+ }
+
+ IntegerSenderConnectionAtBothEndsImpl.prototype.getSender =
+ IntegerSenderConnectionImpl.prototype.getSender;
+
+ IntegerSenderConnectionAtBothEndsImpl.prototype.setSender = function(
+ integerSenderPtrInfo) {
+ this.integerSender_ = new
+ testAssociatedInterfaces.AssociatedIntegerSenderPtr();
+ this.integerSender_.ptr.bind(integerSenderPtrInfo);
+ return this.integerSender_.echo(456);
+ };
+
+ function IntegerSenderConnectionImplWithConnectionError() {
+ this.integerSenderBinding_ = null;
+ }
+
+ IntegerSenderConnectionImplWithConnectionError.prototype.getSender =
+ function(integerSenderRequest) {
+ this.integerSenderBinding_ = new associatedBindings.AssociatedBinding(
+ testAssociatedInterfaces.IntegerSender,
+ new IntegerSenderImpl(),
+ integerSenderRequest);
+ this.integerSenderBinding_.closeWithReason(
+ {custom_reason: 42, description: 'hey'});
+ };
+
+ promise_test(async () => {
+ var integerSenderConnection = new
+ testAssociatedInterfaces.IntegerSenderConnectionPtr();
+ var integerSenderConnectionBinding = new bindings.Binding(
+ testAssociatedInterfaces.IntegerSenderConnection,
+ new IntegerSenderConnectionImpl(),
+ bindings.makeRequest(integerSenderConnection));
+
+ // Sending AssociatedInterfaceRequest.
+ var integerSenderPtrInfo0 = new
+ associatedBindings.AssociatedInterfacePtrInfo();
+ var integerSenderRequest0 = associatedBindings.makeRequest(
+ integerSenderPtrInfo0);
+
+ var integerSender0 = new
+ testAssociatedInterfaces.AssociatedIntegerSenderPtr();
+ integerSender0.ptr.bind(integerSenderPtrInfo0);
+
+ integerSenderConnection.getSender(integerSenderRequest0);
+ assert_equals((await integerSender0.echo(123)).value, 123);
+
+ // Recieving AssociatedInterfacePtrInfo.
+ var integerSenderPtrInfo1 =
+ (await integerSenderConnection.asyncGetSender()).sender;
+ var integerSender1 = new
+ testAssociatedInterfaces.AssociatedIntegerSenderPtr();
+ integerSender1.ptr.bind(integerSenderPtrInfo1);
+ assert_equals((await integerSender1.echo(456)).value, 456);
+ }, 'pass associated interfaces');
+
+ // Bind to the same pipe two associated interfaces, whose implementation
+ // lives at different ends. Test that the two don't interfere.
+ promise_test(async () => {
+ var integerSenderConnectionAtBothEnds = new
+ testAssociatedInterfaces.IntegerSenderConnectionAtBothEndsPtr();
+ var integerSenderConnectionAtBothEndsBinding = new bindings.Binding(
+ testAssociatedInterfaces.IntegerSenderConnectionAtBothEnds,
+ new IntegerSenderConnectionAtBothEndsImpl(),
+ bindings.makeRequest(integerSenderConnectionAtBothEnds));
+
+ // Associated Interface whose Binding Impl lives on the other side.
+ // Sending AssociatedInterfaceRequest.
+ var integerSenderPtrInfo0 = new
+ associatedBindings.AssociatedInterfacePtrInfo();
+ var integerSenderRequest0 = associatedBindings.makeRequest(
+ integerSenderPtrInfo0);
+
+ var integerSender0 = new
+ testAssociatedInterfaces.AssociatedIntegerSenderPtr();
+ integerSender0.ptr.bind(integerSenderPtrInfo0);
+
+ integerSenderConnectionAtBothEnds.getSender(integerSenderRequest0);
+ assert_equals((await integerSender0.echo(123)).value, 123);
+
+ // Associated Interface whose Binding Impl lives on this side.
+ // Sending AssociatedInterfacePtrInfo.
+ var integerSenderPtrInfo1 = new
+ associatedBindings.AssociatedInterfacePtrInfo();
+ var integerSenderRequest1 = associatedBindings.makeRequest(
+ integerSenderPtrInfo1);
+
+ var integerSenderBinding = new associatedBindings.AssociatedBinding(
+ testAssociatedInterfaces.IntegerSender,
+ new IntegerSenderImpl(),
+ integerSenderRequest1);
+
+ assert_equals((await integerSenderConnectionAtBothEnds.setSender(
+ integerSenderPtrInfo1)).value, 456);
+ }, 'associated interfaces on both ends');
+
+ promise_test(async () => {
+ var integerSenderConnection = new
+ testAssociatedInterfaces.IntegerSenderConnectionPtr();
+ var integerSenderConnectionBinding = new bindings.Binding(
+ testAssociatedInterfaces.IntegerSenderConnection,
+ new IntegerSenderConnectionImplWithConnectionError(),
+ bindings.makeRequest(integerSenderConnection));
+
+ // Sending AssociatedInterfaceRequest.
+ var integerSenderPtrInfo0 = new
+ associatedBindings.AssociatedInterfacePtrInfo();
+ var integerSenderRequest0 = associatedBindings.makeRequest(
+ integerSenderPtrInfo0);
+
+ var integerSender0 = new
+ testAssociatedInterfaces.AssociatedIntegerSenderPtr();
+ integerSender0.ptr.bind(integerSenderPtrInfo0);
+
+ integerSenderConnection.getSender(integerSenderRequest0);
+ await new Promise((resolve, reject) => {
+ integerSender0.ptr.setConnectionErrorHandler(function({custom_reason,
+ description}) {
+ assert_equals(custom_reason, 42);
+ assert_equals(description, 'hey');
+ resolve();
+ });
+ });
+ }, 'connection error with reason');
+
+ promise_test(async () => {
+ var integerSenderConnection = new
+ testAssociatedInterfaces.IntegerSenderConnectionPtr();
+ var integerSenderConnectionBinding = new bindings.Binding(
+ testAssociatedInterfaces.IntegerSenderConnection,
+ new IntegerSenderConnectionImpl(),
+ bindings.makeRequest(integerSenderConnection));
+
+ // Sending AssociatedInterfaceRequest.
+ var integerSenderPtrInfo0 = new
+ associatedBindings.AssociatedInterfacePtrInfo();
+ var integerSenderRequest0 = associatedBindings.makeRequest(
+ integerSenderPtrInfo0);
+ var integerSender0 = new
+ testAssociatedInterfaces.AssociatedIntegerSenderPtr();
+ integerSender0.ptr.bind(integerSenderPtrInfo0);
+ integerSenderConnection.getSender(integerSenderRequest0);
+
+ // Recieving AssociatedInterfacePtrInfo.
+ var integerSenderPtrInfo1 =
+ (await integerSenderConnection.asyncGetSender()).sender;
+ var integerSender1 = new
+ testAssociatedInterfaces.AssociatedIntegerSenderPtr();
+ integerSender1.ptr.bind(integerSenderPtrInfo1);
+
+ // Master InterfacePtrController reset triggers connection error handler on
+ // interface endpoint clients for all associated endpoints.
+ var connectionErrorHandler0 = new Promise((resolve, reject) => {
+ integerSender0.ptr.setConnectionErrorHandler(() => {
+ resolve();
+ });
+ });
+
+ var connectionErrorHandler1 = new Promise((resolve, reject) => {
+ integerSender1.ptr.setConnectionErrorHandler(() => {
+ resolve();
+ });
+ });
+
+ setTimeout(integerSenderConnection.ptr.reset.bind(
+ integerSenderConnection.ptr), 0);
+ await Promise.all([connectionErrorHandler0, connectionErrorHandler1]);
+ }, 'all endpoints connectionErrorHandler called on master interface reset');
+
+ done();
+});
+
+</script>
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/generate/module.py ('k') | third_party/WebKit/LayoutTests/mojo/codec.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698