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

Side by Side Diff: third_party/WebKit/LayoutTests/mojo/associated_binding.html

Issue 2844133003: Add associated binding set. Add associated_binding.html layout test. (Closed)
Patch Set: 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
16 function SenderImpl(callback) {
17 this.callback = callback;
18 }
19
20 SenderImpl.prototype.echo = function(value) {
21 return Promise.resolve({value: value});
22 };
23
24 SenderImpl.prototype.send = function(value) {
25 if (this.callback) {
26 this.callback(value);
27 }
28 };
29
30 var IntegerSenderImpl = SenderImpl;
31
32 function IntegerSenderConnectionImpl() {
33 this.integerSenderBindings = new associatedBindings.AssociatedBindingSet(
34 testAssociatedInterfaces.IntegerSender);
35 }
36
37 IntegerSenderConnectionImpl.prototype.getSender = function(
38 integerSenderRequest) {
39 this.integerSenderBindings.addBinding(new IntegerSenderImpl(),
40 integerSenderRequest);
41 };
42
43 promise_test(async () => {
44 var integerSenderConnection =
45 new testAssociatedInterfaces.IntegerSenderConnectionPtr();
46 var integerSenderConnectionImpl = new IntegerSenderConnectionImpl();
47 var integerSenderConnectionBinding = new bindings.Binding(
48 testAssociatedInterfaces.IntegerSenderConnection,
49 integerSenderConnectionImpl,
50 bindings.makeRequest(integerSenderConnection));
51
52 // AssociatedInterfaceRequest for integerSender.
53 var integerSenderPtrInfo0 =
54 new associatedBindings.AssociatedInterfacePtrInfo();
55 var integerSenderRequest0 = associatedBindings.makeRequest(
56 integerSenderPtrInfo0);
57 var integerSender0 =
58 new testAssociatedInterfaces.AssociatedIntegerSenderPtr(
59 integerSenderPtrInfo0);
60
61 var integerSenderPtrInfo1 =
62 new associatedBindings.AssociatedInterfacePtrInfo();
63 var integerSenderRequest1 = associatedBindings.makeRequest(
64 integerSenderPtrInfo1);
65 var integerSender1 =
66 new testAssociatedInterfaces.AssociatedIntegerSenderPtr(
67 integerSenderPtrInfo1);
68
69 integerSenderConnection.getSender(integerSenderRequest0);
70 integerSenderConnection.getSender(integerSenderRequest1);
71
72 // Master Binding close triggers connection error handler on
73 // interface endpoint clients for all associated endpoints.
74 var connectionErrorHandler0 = new Promise((resolve, reject) => {
75 integerSender0.ptr.setConnectionErrorHandler(() => {
76 resolve();
77 });
78 });
79
80 var connectionErrorHandler1 = new Promise((resolve, reject) => {
81 integerSender1.ptr.setConnectionErrorHandler(() => {
82 resolve();
83 });
84 });
85
86 setTimeout(integerSenderConnectionBinding.close.bind(
yzshen1 2017/04/27 17:28:38 Would you please explain this line?
wangjimmy 2017/04/27 20:26:49 Fixed.
87 integerSenderConnection.ptr), 0);
88 await Promise.all([connectionErrorHandler0, connectionErrorHandler1]);
89 }, 'all endpoints connectionErrorHandler called on master binding close');
90
91 promise_test(async () => {
92 var integerSenderConnection =
93 new testAssociatedInterfaces.IntegerSenderConnectionPtr();
94 var integerSenderConnectionImpl = new IntegerSenderConnectionImpl();
95 var integerSenderConnectionBinding = new bindings.Binding(
96 testAssociatedInterfaces.IntegerSenderConnection,
97 integerSenderConnectionImpl,
98 bindings.makeRequest(integerSenderConnection));
99
100 // AssociatedInterfaceRequest for integerSender.
101 var integerSenderPtrInfo0 =
yzshen1 2017/04/27 17:28:38 Please use a for loop to do the work, instead of d
wangjimmy 2017/04/27 20:26:49 Done.
102 new associatedBindings.AssociatedInterfacePtrInfo();
103 var integerSenderRequest0 = associatedBindings.makeRequest(
104 integerSenderPtrInfo0);
105 var integerSender0 =
106 new testAssociatedInterfaces.AssociatedIntegerSenderPtr(
107 integerSenderPtrInfo0);
108
109 var integerSenderPtrInfo1 =
110 new associatedBindings.AssociatedInterfacePtrInfo();
111 var integerSenderRequest1 = associatedBindings.makeRequest(
112 integerSenderPtrInfo1);
113 var integerSender1 =
114 new testAssociatedInterfaces.AssociatedIntegerSenderPtr(
115 integerSenderPtrInfo1);
116
117 var integerSenderPtrInfo2 =
118 new associatedBindings.AssociatedInterfacePtrInfo();
119 var integerSenderRequest2 = associatedBindings.makeRequest(
120 integerSenderPtrInfo2);
121 var integerSender2 =
122 new testAssociatedInterfaces.AssociatedIntegerSenderPtr(
123 integerSenderPtrInfo2);
124
125 integerSenderConnection.getSender(integerSenderRequest0);
126 integerSenderConnection.getSender(integerSenderRequest1);
127 integerSenderConnection.getSender(integerSenderRequest2);
128
129 // Wait for integerSenderConnection getSender message to be received by
130 // integerSenderConnection's binding side and all integerSender bindings
131 // to be created.
132 assert_equals((await integerSender0.echo(3)).value, 3);
133 assert_equals((await integerSender1.echo(4)).value, 4);
134 assert_equals((await integerSender2.echo(5)).value, 5);
135
136 await new Promise((resolve, reject) => {
137 integerSenderConnectionImpl.integerSenderBindings
138 .setConnectionErrorHandler(() => {resolve();});
139 integerSender0.ptr.reset();
140 });
141
142 await new Promise((resolve, reject) => {
143 integerSenderConnectionImpl.integerSenderBindings
144 .setConnectionErrorHandler(function({custom_reason, description}) {
145 assert_equals(custom_reason, 32);
146 assert_equals(description, 'goodbye');
147 resolve();
148 });
149 integerSender1.ptr.resetWithReason({custom_reason: 32,
150 description: 'goodbye'});
151 });
152
153 // integerSender2's binding should still exist.
154 assert_equals((await integerSender2.echo(11)).value, 11);
155
156 integerSenderConnectionImpl.integerSenderBindings.closeAllBindings();
157 assert_true(integerSenderConnectionImpl.integerSenderBindings.isEmpty());
158 }, 'associated binding set');
159
160 done();
161 });
162
163 </script>
OLDNEW
« mojo/public/js/associated_bindings.js ('K') | « mojo/public/js/bindings.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698