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

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

Issue 2832303002: Fifo order should be preserved for messages on associated interfaces. (Closed)
Patch Set: Address codereview 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_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>

Powered by Google App Engine
This is Rietveld 408576698