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

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

Issue 2820783002: Add associated interfaces & bindings. (Closed)
Patch Set: Remove changes to vibration-iframe-expected.txt because it was removed in master. 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 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(
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 IntegerSenderConnectionImpl.prototype.setSender = function(
50 integerSenderPtrInfo) {
51 var integerSender = new
52 testAssociatedInterfaces.AssociatedIntegerSenderPtr();
53 integerSender.ptr.bind(integerSenderPtrInfo);
54 return integerSender.echo(456);
55 };
56
57 function IntegerSenderConnectionImplWithConnectionError() {
58 };
59
60 IntegerSenderConnectionImplWithConnectionError.prototype.getSender =
61 function(integerSenderRequest) {
62 var integerSenderBinding = new associatedBindings.AssociatedBinding(
63 testAssociatedInterfaces.IntegerSender,
64 new IntegerSenderImpl(),
65 integerSenderRequest);
66 integerSenderBinding.closeWithReason(
67 {custom_reason: 42, description: 'hey'});
68 };
69
70 promise_test(async () => {
71 var integerSenderConnection = new
72 testAssociatedInterfaces.IntegerSenderConnectionPtr();
73 var integerSenderConnectionBinding = new bindings.Binding(
74 testAssociatedInterfaces.IntegerSenderConnection,
75 new IntegerSenderConnectionImpl(),
76 bindings.makeRequest(integerSenderConnection));
77
78 // Sending AssociatedInterfaceRequest.
79 var integerSenderPtrInfo0 = new
80 associatedBindings.AssociatedInterfacePtrInfo();
81 var integerSenderRequest0 = associatedBindings.makeRequest(
82 integerSenderPtrInfo0);
83
84 var integerSender0 = new
85 testAssociatedInterfaces.AssociatedIntegerSenderPtr();
86 integerSender0.ptr.bind(integerSenderPtrInfo0);
87
88 integerSenderConnection.getSender(integerSenderRequest0);
89 assert_equals((await integerSender0.echo(123)).value, 123);
90
91 // Recieving AssociatedInterfacePtrInfo.
92 var integerSenderPtrInfo1 =
93 (await integerSenderConnection.asyncGetSender()).sender;
94 var integerSender1 = new
95 testAssociatedInterfaces.AssociatedIntegerSenderPtr();
96 integerSender1.ptr.bind(integerSenderPtrInfo1);
97 assert_equals((await integerSender1.echo(456)).value, 456);
98 }, 'pass associated interfaces');
99
100 // Bind to the same pipe two associated interfaces, whose implementation
101 // lives at different ends. Test that the two don't interfere.
102 promise_test(async () => {
103 var integerSenderConnection = new
104 testAssociatedInterfaces.IntegerSenderConnectionPtr();
105 var integerSenderConnectionBinding = new bindings.Binding(
106 testAssociatedInterfaces.IntegerSenderConnection,
107 new IntegerSenderConnectionImpl(),
108 bindings.makeRequest(integerSenderConnection));
109
110 // Associated Interface whose Binding Impl lives on the other side.
111 // Sending AssociatedInterfaceRequest.
112 var integerSenderPtrInfo0 = new
113 associatedBindings.AssociatedInterfacePtrInfo();
114 var integerSenderRequest0 = associatedBindings.makeRequest(
115 integerSenderPtrInfo0);
116
117 var integerSender0 = new
118 testAssociatedInterfaces.AssociatedIntegerSenderPtr();
119 integerSender0.ptr.bind(integerSenderPtrInfo0);
120
121 integerSenderConnection.getSender(integerSenderRequest0);
122 assert_equals((await integerSender0.echo(123)).value, 123);
123
124 // Associated Interface whose Binding Impl lives on this side.
125 // Sending AssociatedInterfacePtrInfo.
126 var integerSenderPtrInfo1 = new
127 associatedBindings.AssociatedInterfacePtrInfo();
128 var integerSenderRequest1 = associatedBindings.makeRequest(
129 integerSenderPtrInfo1);
130
131 var integerSenderBinding = new associatedBindings.AssociatedBinding(
132 testAssociatedInterfaces.IntegerSender,
133 new IntegerSenderImpl(),
134 integerSenderRequest1);
135
136 assert_equals((await integerSenderConnection.setSender(
137 integerSenderPtrInfo1)).value, 456);
138 }, 'associated interfaces on both ends');
139
140 promise_test(async () => {
141 var integerSenderConnection = new
142 testAssociatedInterfaces.IntegerSenderConnectionPtr();
143 var integerSenderConnectionBinding = new bindings.Binding(
144 testAssociatedInterfaces.IntegerSenderConnection,
145 new IntegerSenderConnectionImplWithConnectionError(),
146 bindings.makeRequest(integerSenderConnection));
147
148 // Sending AssociatedInterfaceRequest.
149 var integerSenderPtrInfo0 = new
150 associatedBindings.AssociatedInterfacePtrInfo();
151 var integerSenderRequest0 = associatedBindings.makeRequest(
152 integerSenderPtrInfo0);
153
154 var integerSender0 = new
155 testAssociatedInterfaces.AssociatedIntegerSenderPtr();
156 integerSender0.ptr.bind(integerSenderPtrInfo0);
157
158 integerSenderConnection.getSender(integerSenderRequest0);
159 await new Promise((resolve, reject) => {
160 integerSender0.ptr.setConnectionErrorHandler(function({custom_reason,
161 description}) {
162 assert_equals(custom_reason, 42);
163 assert_equals(description, 'hey');
164 resolve();
165 });
166 });
167 }, 'connection error with reason');
168
169 promise_test(async () => {
170 var integerSenderConnection = new
171 testAssociatedInterfaces.IntegerSenderConnectionPtr();
172 var integerSenderConnectionBinding = new bindings.Binding(
173 testAssociatedInterfaces.IntegerSenderConnection,
174 new IntegerSenderConnectionImpl(),
175 bindings.makeRequest(integerSenderConnection));
176
177 // Sending AssociatedInterfaceRequest.
178 var integerSenderPtrInfo0 = new
179 associatedBindings.AssociatedInterfacePtrInfo();
180 var integerSenderRequest0 = associatedBindings.makeRequest(
181 integerSenderPtrInfo0);
182 var integerSender0 = new
183 testAssociatedInterfaces.AssociatedIntegerSenderPtr();
184 integerSender0.ptr.bind(integerSenderPtrInfo0);
185 integerSenderConnection.getSender(integerSenderRequest0);
186
187 // Recieving AssociatedInterfacePtrInfo.
188 var integerSenderPtrInfo1 =
189 (await integerSenderConnection.asyncGetSender()).sender;
190 var integerSender1 = new
191 testAssociatedInterfaces.AssociatedIntegerSenderPtr();
192 integerSender1.ptr.bind(integerSenderPtrInfo1);
193
194 // Master InterfacePtrController reset triggers connection error handler on
195 // interface endpoint clients for all associated endpoints.
196 var connectionErrorHandler0 = new Promise((resolve, reject) => {
197 integerSender0.ptr.setConnectionErrorHandler(() => {
198 resolve();
199 });
200 });
201
202 var connectionErrorHandler1 = new Promise((resolve, reject) => {
203 integerSender1.ptr.setConnectionErrorHandler(() => {
204 resolve();
205 });
206 });
207
208 setTimeout(integerSenderConnection.ptr.reset.bind(
209 integerSenderConnection.ptr), 0);
210 await Promise.all([connectionErrorHandler0, connectionErrorHandler1]);
211 }, 'all endpoints connectionErrorHandler called on master interface reset');
212
213 done();
214 });
215
216 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698