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

Side by Side 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, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../resources/mojo-helpers.js"></script>
5 <script>
6 'use strict';
7
8 setup({ explicit_done: true });
9
10 define([
11 "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom",
12 "mojo/public/js/associated_bindings",
13 "mojo/public/js/bindings",
14 ], function(testAssociatedInterfaces, associatedBindings, bindings) {
15 function IntegerSenderImpl(callback) {
16 this.callback = callback
17 };
18
19 IntegerSenderImpl.prototype.echo = function(value) {
20 return Promise.resolve({value: value});
21 };
22
23 IntegerSenderImpl.prototype.send = function(value) {
24 if (this.callback) {
25 this.callback(value);
26 }
27 };
28
29 function IntegerSenderConnectionImpl() {
30 };
31
32 IntegerSenderConnectionImpl.prototype.getSender = function(
33 integerSenderRequest) {
34 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
35 testAssociatedInterfaces.IntegerSender,
36 new IntegerSenderImpl(),
37 integerSenderRequest);
38 };
39
40 IntegerSenderConnectionImpl.prototype.asyncGetSender = function() {
41 var integerSenderPtrInfo = new
42 associatedBindings.AssociatedInterfacePtrInfo();
43 var integerSenderRequest = associatedBindings.makeRequest(
44 integerSenderPtrInfo);
45 this.getSender(integerSenderRequest);
46 return Promise.resolve({sender: integerSenderPtrInfo});
47 };
48
49 // 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.
50 // var integerSenderConnection = new
51 // testAssociatedInterfaces.IntegerSenderConnectionPtr();
52 // var integerSenderConnectionBinding = new bindings.Binding(
53 // testAssociatedInterfaces.IntegerSenderConnection,
54 // new IntegerSenderConnectionImpl(),
55 // bindings.makeRequest(integerSenderConnection));
56
57 // // Sending AssociatedInterfaceRequest.
58 // var integerSenderPtrInfo0 = new
59 // associatedBindings.AssociatedInterfacePtrInfo();
60 // var integerSenderRequest = associatedBindings.makeRequest(
61 // integerSenderPtrInfo0);
62 // var integerSender0 = new
63 // testAssociatedInterfaces.AssociatedIntegerSenderPtr();
64 // integerSender0.ptr.bind(integerSenderPtrInfo0);
65 // integerSenderConnection.getSender(integerSenderRequest);
66
67 // // Recieving AssociatedInterfacePtrInfo.
68 // var integerSenderPtrInfo1 =
69 // (await integerSenderConnection.asyncGetSender()).sender;
70 // var integerSender1 = new
71 // testAssociatedInterfaces.AssociatedIntegerSenderPtr();
72 // integerSender1.ptr.bind(integerSenderPtrInfo1);
73
74 // // Master Binding close triggers connection error handler on
75 // // interface endpoint clients for all associated endpoints.
76 // var connectionErrorHandler0 = new Promise((resolve, reject) => {
77 // integerSender0.ptr.setConnectionErrorHandler(() => {
78 // resolve();
79 // });
80 // });
81
82 // var connectionErrorHandler1 = new Promise((resolve, reject) => {
83 // integerSender1.ptr.setConnectionErrorHandler(() => {
84 // resolve();
85 // });
86 // });
87
88 // setTimeout(integerSenderConnectionBinding.close.bind(
89 // integerSenderConnection.ptr), 0);
90 // await Promise.all([connectionErrorHandler0, connectionErrorHandler1]);
91 // }, 'all endpoints connectionErrorHandler called on master binding close');
92
93 promise_test(async () => {
94 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.
95 var calc2 = new math.CalculatorPtr();
96 var calcImpl = new CalculatorImpl();
97
98 var bindingSet = new associatedBindings.BindingSet(math.Calculator);
99 assert_true(bindingSet.isEmpty());
100
101 bindingSet.addBinding(calcImpl, associatedBindings.makeRequest(calc1));
102 bindingSet.addBinding(calcImpl, associatedBindings.makeRequest(calc2));
103 assert_false(bindingSet.isEmpty());
104
105 assert_equals((await calc1.add(3)).value, 3);
106 assert_equals((await calc2.add(4)).value, 7);
107
108 await new Promise((resolve, reject) => {
109 bindingSet.setConnectionErrorHandler(() => { resolve(); });
110 calc1.ptr.reset();
111 });
112
113 assert_equals((await calc2.add(5)).value, 12);
114
115 bindingSet.closeAllBindings();
116 assert_true(bindingSet.isEmpty());
117 }, 'binding set');
118
119 done();
120 });
121
122 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698