OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 define('data_sender', [ | 5 define('data_sender', [ |
6 'async_waiter', | 6 'async_waiter', |
7 'device/serial/data_stream.mojom', | 7 'device/serial/data_stream.mojom', |
8 'device/serial/data_stream_serialization.mojom', | 8 'device/serial/data_stream_serialization.mojom', |
9 'mojo/public/js/bindings/core', | 9 'mojo/public/js/bindings/core', |
10 'mojo/public/js/bindings/router', | 10 'mojo/public/js/bindings/router', |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 * resolves. | 289 * resolves. |
290 * @return {!Promise.<SerializedDataSender>} A promise that will resolve to | 290 * @return {!Promise.<SerializedDataSender>} A promise that will resolve to |
291 * the serialization of this DataSender. If this DataSender has shut down, | 291 * the serialization of this DataSender. If this DataSender has shut down, |
292 * the promise will resolve to null. | 292 * the promise will resolve to null. |
293 */ | 293 */ |
294 DataSender.prototype.serialize = function() { | 294 DataSender.prototype.serialize = function() { |
295 if (this.shutDown_) | 295 if (this.shutDown_) |
296 return Promise.resolve(null); | 296 return Promise.resolve(null); |
297 | 297 |
298 var readyToSerialize = Promise.resolve(); | 298 var readyToSerialize = Promise.resolve(); |
299 if (this.pendingSends_.length) { | 299 if (this.pendingSends_.length || this.sendsAwaitingAck_.length) { |
300 if (this.pendingCancel_) | 300 if (this.pendingCancel_) |
301 readyToSerialize = this.cancelPromise_; | 301 readyToSerialize = this.cancelPromise_; |
302 else | 302 else |
303 readyToSerialize = this.cancel(this.fatalErrorValue_); | 303 readyToSerialize = this.cancel(this.fatalErrorValue_); |
304 } | 304 } |
305 return readyToSerialize.then(function() { | 305 return readyToSerialize.then(function() { |
306 this.waiter_.stop(); | 306 this.waiter_.stop(); |
307 var serialized = new serialization.SerializedDataSender(); | 307 var serialized = new serialization.SerializedDataSender(); |
308 serialized.sink = this.router_.connector_.handle_, | 308 serialized.sink = this.router_.connector_.handle_, |
309 serialized.data_pipe = this.sendPipe_, | 309 serialized.data_pipe = this.sendPipe_, |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 // Note: Only the first PendingSend in |pendingSends_| will have data to | 468 // Note: Only the first PendingSend in |pendingSends_| will have data to |
469 // flush as only the first can have written data to the data pipe. | 469 // flush as only the first can have written data to the data pipe. |
470 bytesToFlush += result.bytesToFlush; | 470 bytesToFlush += result.bytesToFlush; |
471 } | 471 } |
472 this.callCancelCallback_(); | 472 this.callCancelCallback_(); |
473 return Promise.resolve({bytes_to_flush: bytesToFlush}); | 473 return Promise.resolve({bytes_to_flush: bytesToFlush}); |
474 }; | 474 }; |
475 | 475 |
476 return {DataSender: DataSender}; | 476 return {DataSender: DataSender}; |
477 }); | 477 }); |
OLD | NEW |