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

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

Issue 2891193002: Mojo JS bindings: switch all mojo/ layout tests to use the new mode. (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
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script> 2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script> 3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../resources/mojo-helpers.js"></script> 4 <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></scr ipt>
5 <script src="file:///gen/mojo/public/interfaces/bindings/tests/test_associated_i nterfaces.mojom.js"></script>
5 <script> 6 <script>
6 'use strict'; 7 'use strict';
7 8
8 setup({ explicit_done: true }); 9 function SenderImpl(callback) {
10 this.callback = callback;
11 }
9 12
10 define([ 13 SenderImpl.prototype.echo = function(value) {
11 "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom", 14 return Promise.resolve({value: value});
12 "mojo/public/js/associated_bindings", 15 };
13 "mojo/public/js/bindings",
14 ], function(testAssociatedInterfaces, associatedBindings, bindings) {
15 16
16 function SenderImpl(callback) { 17 SenderImpl.prototype.send = function(value) {
17 this.callback = callback; 18 if (this.callback) {
19 this.callback(value);
20 }
21 };
22
23 var IntegerSenderImpl = SenderImpl;
24
25 function IntegerSenderConnectionImpl() {
26 this.integerSenderBindings = new mojo.AssociatedBindingSet(
27 mojo.test.IntegerSender);
28 }
29
30 IntegerSenderConnectionImpl.prototype.getSender = function(
31 integerSenderRequest) {
32 this.integerSenderBindings.addBinding(new IntegerSenderImpl(),
33 integerSenderRequest);
34 };
35
36 promise_test(async () => {
37 var integerSenderConnection = new mojo.test.IntegerSenderConnectionPtr();
38 var integerSenderConnectionImpl = new IntegerSenderConnectionImpl();
39 var integerSenderConnectionBinding = new mojo.Binding(
40 mojo.test.IntegerSenderConnection,
41 integerSenderConnectionImpl,
42 mojo.makeRequest(integerSenderConnection));
43
44 // AssociatedInterfaceRequest for integerSender.
45 var integerSenderPtrInfo0 = new mojo.AssociatedInterfacePtrInfo();
46 var integerSenderRequest0 = mojo.makeRequest(integerSenderPtrInfo0);
47 var integerSender0 = new mojo.test.IntegerSenderAssociatedPtr(
48 integerSenderPtrInfo0);
49
50 var integerSenderPtrInfo1 = new mojo.AssociatedInterfacePtrInfo();
51 var integerSenderRequest1 = mojo.makeRequest(integerSenderPtrInfo1);
52 var integerSender1 = new mojo.test.IntegerSenderAssociatedPtr(
53 integerSenderPtrInfo1);
54
55 integerSenderConnection.getSender(integerSenderRequest0);
56 integerSenderConnection.getSender(integerSenderRequest1);
57
58 // Master Binding close triggers connection error handler on
59 // interface endpoint clients for all associated endpoints.
60 var connectionErrorHandler0 = new Promise((resolve, reject) => {
61 integerSender0.ptr.setConnectionErrorHandler(() => {
62 resolve();
63 });
64 });
65
66 var connectionErrorHandler1 = new Promise((resolve, reject) => {
67 integerSender1.ptr.setConnectionErrorHandler(() => {
68 resolve();
69 });
70 });
71
72 setTimeout(integerSenderConnectionBinding.close.bind(
73 integerSenderConnectionBinding), 0);
74 await Promise.all([connectionErrorHandler0, connectionErrorHandler1]);
75 }, 'all endpoints connectionErrorHandler called on master binding close');
76
77 promise_test(async () => {
78 var integerSenderConnection = new mojo.test.IntegerSenderConnectionPtr();
79 var integerSenderConnectionImpl = new IntegerSenderConnectionImpl();
80 var integerSenderConnectionBinding = new mojo.Binding(
81 mojo.test.IntegerSenderConnection,
82 integerSenderConnectionImpl,
83 mojo.makeRequest(integerSenderConnection));
84
85 var integerSenders = [];
86 for (var i = 0; i < 3; i++) {
87 // AssociatedInterfaceRequest for integerSender.
88 var integerSenderPtrInfo = new mojo.AssociatedInterfacePtrInfo();
89 var integerSenderRequest = mojo.makeRequest(integerSenderPtrInfo);
90 var integerSender =
91 new mojo.test.IntegerSenderAssociatedPtr(integerSenderPtrInfo);
92 integerSenderConnection.getSender(integerSenderRequest);
93
94 // Wait for integerSenderConnection getSender message to be received by
95 // integerSenderConnection's binding side and all integerSender binding
96 // to be created.
97 assert_equals((await integerSender.echo(3)).value, 3);
98 integerSenders.push(integerSender);
18 } 99 }
19 100
20 SenderImpl.prototype.echo = function(value) { 101 await new Promise((resolve, reject) => {
21 return Promise.resolve({value: value}); 102 integerSenderConnectionImpl.integerSenderBindings
22 }; 103 .setConnectionErrorHandler(() => {resolve();});
104 integerSenders[0].ptr.reset();
105 });
23 106
24 SenderImpl.prototype.send = function(value) { 107 await new Promise((resolve, reject) => {
25 if (this.callback) { 108 integerSenderConnectionImpl.integerSenderBindings
26 this.callback(value); 109 .setConnectionErrorHandler(function({customReason, description}) {
27 } 110 assert_equals(customReason, 32);
28 }; 111 assert_equals(description, 'goodbye');
112 resolve();
113 });
114 integerSenders[1].ptr.resetWithReason({customReason: 32,
115 description: 'goodbye'});
116 });
29 117
30 var IntegerSenderImpl = SenderImpl; 118 // integerSender2's binding should still exist.
119 assert_equals((await integerSenders[2].echo(11)).value, 11);
31 120
32 function IntegerSenderConnectionImpl() { 121 integerSenderConnectionImpl.integerSenderBindings.closeAllBindings();
33 this.integerSenderBindings = new associatedBindings.AssociatedBindingSet( 122 assert_true(integerSenderConnectionImpl.integerSenderBindings.isEmpty());
34 testAssociatedInterfaces.IntegerSender); 123 }, 'associated binding set');
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(
87 integerSenderConnectionBinding), 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 var integerSenders = [];
101 for (var i = 0; i < 3; i++) {
102 // AssociatedInterfaceRequest for integerSender.
103 var integerSenderPtrInfo =
104 new associatedBindings.AssociatedInterfacePtrInfo();
105 var integerSenderRequest = associatedBindings.makeRequest(
106 integerSenderPtrInfo);
107 var integerSender =
108 new testAssociatedInterfaces.AssociatedIntegerSenderPtr(
109 integerSenderPtrInfo);
110 integerSenderConnection.getSender(integerSenderRequest);
111
112 // Wait for integerSenderConnection getSender message to be received by
113 // integerSenderConnection's binding side and all integerSender binding
114 // to be created.
115 assert_equals((await integerSender.echo(3)).value, 3);
116 integerSenders.push(integerSender);
117 }
118
119 await new Promise((resolve, reject) => {
120 integerSenderConnectionImpl.integerSenderBindings
121 .setConnectionErrorHandler(() => {resolve();});
122 integerSenders[0].ptr.reset();
123 });
124
125 await new Promise((resolve, reject) => {
126 integerSenderConnectionImpl.integerSenderBindings
127 .setConnectionErrorHandler(function({custom_reason, description}) {
128 assert_equals(custom_reason, 32);
129 assert_equals(description, 'goodbye');
130 resolve();
131 });
132 integerSenders[1].ptr.resetWithReason({custom_reason: 32,
133 description: 'goodbye'});
134 });
135
136 // integerSender2's binding should still exist.
137 assert_equals((await integerSenders[2].echo(11)).value, 11);
138
139 integerSenderConnectionImpl.integerSenderBindings.closeAllBindings();
140 assert_true(integerSenderConnectionImpl.integerSenderBindings.isEmpty());
141 }, 'associated binding set');
142
143 done();
144 });
145 124
146 </script> 125 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698