Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/mojo/associated_binding.html |
| diff --git a/third_party/WebKit/LayoutTests/mojo/associated_binding.html b/third_party/WebKit/LayoutTests/mojo/associated_binding.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e400f77323a0066cdf082b05df4e04b9126966e0 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/mojo/associated_binding.html |
| @@ -0,0 +1,122 @@ |
| +<!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() { |
| + }; |
| + |
| + IntegerSenderConnectionImpl.prototype.getSender = function( |
| + integerSenderRequest) { |
| + var integerSenderBinding = new associatedBindings.AssociatedBinding( |
|
yzshen1
2017/04/24 19:21:49
As a local variable, this could be garbage-collect
wangjimmy
2017/04/24 21:16:39
Sorry, this test wasn't not suppose to be committe
|
| + 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}); |
| + }; |
| + |
| + // promise_test(async () => { |
|
yzshen1
2017/04/24 19:21:49
Are you planning to un-comment this test?
wangjimmy
2017/04/24 21:16:39
Acknowledged.
|
| + // 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 integerSenderRequest = associatedBindings.makeRequest( |
| + // integerSenderPtrInfo0); |
| + // var integerSender0 = new |
| + // testAssociatedInterfaces.AssociatedIntegerSenderPtr(); |
| + // integerSender0.ptr.bind(integerSenderPtrInfo0); |
| + // integerSenderConnection.getSender(integerSenderRequest); |
| + |
| + // // Recieving AssociatedInterfacePtrInfo. |
| + // var integerSenderPtrInfo1 = |
| + // (await integerSenderConnection.asyncGetSender()).sender; |
| + // var integerSender1 = new |
| + // testAssociatedInterfaces.AssociatedIntegerSenderPtr(); |
| + // integerSender1.ptr.bind(integerSenderPtrInfo1); |
| + |
| + // // Master Binding close 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(integerSenderConnectionBinding.close.bind( |
| + // integerSenderConnection.ptr), 0); |
| + // await Promise.all([connectionErrorHandler0, connectionErrorHandler1]); |
| + // }, 'all endpoints connectionErrorHandler called on master binding close'); |
| + |
| + promise_test(async () => { |
| + var calc1 = new math.CalculatorPtr(); |
|
yzshen1
2017/04/24 19:21:49
Does this test work? These are not associated ptrs
wangjimmy
2017/04/24 21:16:39
Acknowledged.
|
| + var calc2 = new math.CalculatorPtr(); |
| + var calcImpl = new CalculatorImpl(); |
| + |
| + var bindingSet = new associatedBindings.BindingSet(math.Calculator); |
| + assert_true(bindingSet.isEmpty()); |
| + |
| + bindingSet.addBinding(calcImpl, associatedBindings.makeRequest(calc1)); |
| + bindingSet.addBinding(calcImpl, associatedBindings.makeRequest(calc2)); |
| + assert_false(bindingSet.isEmpty()); |
| + |
| + assert_equals((await calc1.add(3)).value, 3); |
| + assert_equals((await calc2.add(4)).value, 7); |
| + |
| + await new Promise((resolve, reject) => { |
| + bindingSet.setConnectionErrorHandler(() => { resolve(); }); |
| + calc1.ptr.reset(); |
| + }); |
| + |
| + assert_equals((await calc2.add(5)).value, 12); |
| + |
| + bindingSet.closeAllBindings(); |
| + assert_true(bindingSet.isEmpty()); |
| + }, 'binding set'); |
| + |
| + done(); |
| +}); |
| + |
| +</script> |