Chromium Code Reviews| Index: mojo/public/js/tests/interface_ptr_unittest.js |
| diff --git a/mojo/public/js/tests/interface_ptr_unittest.js b/mojo/public/js/tests/interface_ptr_unittest.js |
| index 22e0d6f15f3db3e3d1291050cbb8b9bb8adc028a..feca13539598be3570245262993cd759123da7a9 100644 |
| --- a/mojo/public/js/tests/interface_ptr_unittest.js |
| +++ b/mojo/public/js/tests/interface_ptr_unittest.js |
| @@ -7,12 +7,14 @@ define([ |
| "mojo/public/js/bindings", |
| "mojo/public/js/core", |
| "mojo/public/interfaces/bindings/tests/math_calculator.mojom", |
| + "mojo/public/interfaces/bindings/tests/sample_interfaces.mojom", |
| "mojo/public/js/threading", |
| "gc", |
| ], function(expect, |
| bindings, |
| core, |
| math, |
| + sampleInterfaces, |
| threading, |
| gc) { |
| testIsBound() |
| @@ -21,6 +23,8 @@ define([ |
| .then(testConnectionError) |
| .then(testPassInterface) |
| .then(testBindRawHandle) |
| + .then(testQueryVersion) |
| + .then(testRequireVersion) |
| .then(function() { |
| this.result = "PASS"; |
| gc.collectGarbage(); // should not crash |
| @@ -49,6 +53,18 @@ define([ |
| return Promise.resolve({value: this.total}); |
| }; |
| + function IntegerAccessorImpl() { |
| + this.integer = 0; |
| + } |
| + |
| + IntegerAccessorImpl.prototype.getInteger = function() { |
| + return Promise.resolve({data: this.integer}); |
| + }; |
| + |
| + IntegerAccessorImpl.prototype.setInteger = function(value) { |
| + this.integer = value; |
| + }; |
| + |
| function testIsBound() { |
| var calc = new math.CalculatorPtr(); |
| expect(calc.ptr.isBound()).toBeFalsy(); |
| @@ -157,4 +173,70 @@ define([ |
| return promise; |
| } |
| + |
| + function testQueryVersion() { |
| + var integerAccessorPtr = new sampleInterfaces.IntegerAccessorPtr(); |
| + |
| + var integerAccessorBinding = new bindings.Binding( |
| + sampleInterfaces.IntegerAccessor, |
|
yzshen1
2017/02/11 01:11:29
4 spaces
please see: https://google.github.io/styl
wangjimmy
2017/02/13 20:43:07
Done.
|
| + new IntegerAccessorImpl(), |
| + bindings.makeRequest(integerAccessorPtr) |
| + ); |
|
yzshen1
2017/02/11 01:11:30
");" should not be on a separate line.
wangjimmy
2017/02/13 20:43:07
Done.
|
| + expect(integerAccessorPtr.ptr.version).toBe(0); |
| + |
| + return integerAccessorPtr.ptr.queryVersion().then(function(version) { |
| + expect(version).toBe(3); |
| + expect(integerAccessorPtr.ptr.version).toBe(3); |
| + }); |
| + } |
| + |
| + function testRequireVersion() { |
| + var integerAccessorImpl = new IntegerAccessorImpl(); |
| + var integerAccessorPtr = new sampleInterfaces.IntegerAccessorPtr(); |
| + var integerAccessorBinding = new bindings.Binding( |
| + sampleInterfaces.IntegerAccessor, |
|
yzshen1
2017/02/11 01:11:29
4 spaces.
wangjimmy
2017/02/13 20:43:07
Done.
|
| + integerAccessorImpl, |
| + bindings.makeRequest(integerAccessorPtr)); |
| + |
| + // Inital version is 0. |
| + expect(integerAccessorPtr.ptr.version).toBe(0); |
| + |
| + function requireVersion1() { |
| + integerAccessorPtr.ptr.requireVersion(1); |
| + expect(integerAccessorPtr.ptr.version).toBe(1); |
| + integerAccessorPtr.setInteger(123, sampleInterfaces.Enum.VALUE); |
| + return integerAccessorPtr.getInteger().then(function(responseParams) { |
| + expect(responseParams.data).toBe(123); |
| + }); |
| + } |
| + |
| + function requireVersion3() { |
| + integerAccessorPtr.ptr.requireVersion(3); |
| + expect(integerAccessorPtr.ptr.version).toBe(3); |
| + integerAccessorPtr.setInteger(456, sampleInterfaces.Enum.VALUE); |
| + return integerAccessorPtr.getInteger().then(function(responseParams) { |
| + expect(responseParams.data).toBe(456); |
| + }); |
| + } |
| + |
| + // Require a version that is not supported by the impl side. |
| + function requireVersion4() { |
| + integerAccessorPtr.ptr.requireVersion(4); |
| + expect(integerAccessorPtr.ptr.version).toBe(4); |
| + |
| + var promise = new Promise(function(resolve, reject) { |
| + integerAccessorPtr.ptr.setConnectionErrorHandler(function() { |
| + resolve(); |
| + }); |
| + }); |
| + |
| + // The call to setInteger() after requireVersion(4) is ignored. |
| + integerAccessorPtr.setInteger(789, sampleInterfaces.Enum.VALUE); |
| + expect(integerAccessorImpl.integer).toBe(456); |
|
yzshen1
2017/02/11 01:11:29
Because the call on line 234 is completed asynchro
wangjimmy
2017/02/13 20:43:07
Done.
|
| + |
| + return promise; |
| + } |
| + |
| + return requireVersion1().then(requireVersion3).then(requireVersion4); |
| + } |
| }); |