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

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

Issue 2743623003: [mojo-js] Converts binding unittest into layout test. (Closed)
Patch Set: removes references to binding_unittest.js Created 3 years, 9 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
« no previous file with comments | « mojo/public/js/tests/binding_unittest.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 function CalculatorImpl() {
9 this.total = 0;
10 }
11
12 CalculatorImpl.prototype.clear = function() {
13 this.total = 0;
14 return Promise.resolve({value: this.total});
15 };
16
17 CalculatorImpl.prototype.add = function(value) {
18 this.total += value;
19 return Promise.resolve({value: this.total});
20 };
21
22 CalculatorImpl.prototype.multiply = function(value) {
23 this.total *= value;
24 return Promise.resolve({value: this.total});
25 };
26
27 function loadModules(name, func) {
28 return define(
29 name,
30 [
31 'mojo/public/js/bindings',
32 'mojo/public/interfaces/bindings/tests/math_calculator.mojom'
33 ],
34 func);
35 };
36
37 function binding_test(func, name, properties) {
38 promise_test(() => {
39 return loadModules(name, func);
40 }, name, properties);
41 }
42
43 binding_test((bindings, math) => {
44 var binding = new bindings.Binding(math.Calculator, new CalculatorImpl());
45 assert_false(binding.isBound());
46
47 var calc = new math.CalculatorPtr();
48 var request = bindings.makeRequest(calc);
49 binding.bind(request);
50 assert_true(binding.isBound());
51
52 binding.close();
53 assert_false(binding.isBound());
54 }, 'is bound');
55
56 binding_test((bindings, math) => {
jbroman 2017/03/09 20:09:35 Nice! I realize this is mostly code movement, but
alokp 2017/03/09 22:13:38 This is awesome. TIL
57 var calc1 = new math.CalculatorPtr();
58 var calc2 = new math.CalculatorPtr();
59
60 var calcBinding = new bindings.Binding(math.Calculator,
61 new CalculatorImpl(),
62 bindings.makeRequest(calc1));
63
64 var promise = calc1.add(2).then(function(response) {
65 assert_equals(response.value, 2);
66 calcBinding.bind(bindings.makeRequest(calc2));
67 return calc2.add(2);
68 }).then(function(response) {
69 assert_equals(response.value, 4);
70 });
71
72 return promise;
73 }, 'reusable');
74
75 binding_test((bindings, math) => {
76 var calc = new math.CalculatorPtr();
77 var calcBinding = new bindings.Binding(math.Calculator,
78 new CalculatorImpl(),
79 bindings.makeRequest(calc));
80
81 var promise = new Promise(function(resolve, reject) {
82 calcBinding.setConnectionErrorHandler(function() {
83 resolve();
84 });
85 calc.ptr.reset();
86 });
87
88 return promise;
89 }, 'connection error');
90
91 binding_test((bindings, math) => {
92 var calc = new math.CalculatorPtr();
93 var calcBinding = new bindings.Binding(math.Calculator,
94 new CalculatorImpl(),
95 bindings.makeRequest(calc));
96 var newCalcBinding = null;
97
98 var promise = calc.add(2).then(function(response) {
99 assert_equals(response.value, 2);
100 var interfaceRequest = calcBinding.unbind();
101 assert_false(calcBinding.isBound());
102 newCalcBinding = new bindings.Binding(math.Calculator,
103 new CalculatorImpl(),
104 interfaceRequest);
105 return calc.add(2);
106 }).then(function(response) {
107 assert_equals(response.value, 2);
108 });
109
110 return promise;
111 }, 'unbind');
112
113 binding_test((bindings, math) => {
114 var calc1 = new math.CalculatorPtr();
115 var calc2 = new math.CalculatorPtr();
116 var calcImpl = new CalculatorImpl();
117
118 var bindingSet = new bindings.BindingSet(math.Calculator);
119 assert_true(bindingSet.isEmpty());
120 bindingSet.addBinding(calcImpl, bindings.makeRequest(calc1));
121 bindingSet.addBinding(calcImpl, bindings.makeRequest(calc2));
122 assert_false(bindingSet.isEmpty());
123
124 var promise = calc1.add(3).then(function(response) {
125 assert_equals(response.value, 3);
126 return calc2.add(4);
127 }).then(function(response) {
128 assert_equals(response.value, 7);
129
130 var promiseOfConnectionError = new Promise(function(resolve, reject) {
131 bindingSet.setConnectionErrorHandler(function() {
132 resolve();
133 });
134 });
135 calc1.ptr.reset();
136 return promiseOfConnectionError;
137 }).then(function() {
138 return calc2.add(5);
139 }).then(function(response) {
140 assert_equals(response.value, 12);
141
142 bindingSet.closeAllBindings();
143 assert_true(bindingSet.isEmpty());
144 });
145
146 return promise;
147 }, 'binding set');
148
149 </script>
OLDNEW
« no previous file with comments | « mojo/public/js/tests/binding_unittest.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698