| Index: talk/app/webrtc/datachannel.cc
|
| diff --git a/talk/app/webrtc/datachannel.cc b/talk/app/webrtc/datachannel.cc
|
| index 559eec5343f15e3102d5fcd7dbbad0632fdcf847..690ee65d3b713f9f8ee1257b3e48593aaaefd61e 100644
|
| --- a/talk/app/webrtc/datachannel.cc
|
| +++ b/talk/app/webrtc/datachannel.cc
|
| @@ -476,6 +476,7 @@ void DataChannel::SendQueuedDataMessages() {
|
|
|
| ASSERT(state_ == kOpen || state_ == kClosing);
|
|
|
| + uint64 start_buffered_amount = buffered_amount();
|
| while (!queued_send_data_.Empty()) {
|
| DataBuffer* buffer = queued_send_data_.Front();
|
| if (!SendDataMessage(*buffer, false)) {
|
| @@ -485,6 +486,10 @@ void DataChannel::SendQueuedDataMessages() {
|
| queued_send_data_.Pop();
|
| delete buffer;
|
| }
|
| +
|
| + if (observer_ && buffered_amount() < start_buffered_amount) {
|
| + observer_->OnBufferedAmountChange(start_buffered_amount);
|
| + }
|
| }
|
|
|
| bool DataChannel::SendDataMessage(const DataBuffer& buffer,
|
| @@ -534,11 +539,17 @@ bool DataChannel::SendDataMessage(const DataBuffer& buffer,
|
| }
|
|
|
| bool DataChannel::QueueSendDataMessage(const DataBuffer& buffer) {
|
| - if (queued_send_data_.byte_count() >= kMaxQueuedSendDataBytes) {
|
| + size_t start_buffered_amount = buffered_amount();
|
| + if (start_buffered_amount >= kMaxQueuedSendDataBytes) {
|
| LOG(LS_ERROR) << "Can't buffer any more data for the data channel.";
|
| return false;
|
| }
|
| queued_send_data_.Push(new DataBuffer(buffer));
|
| +
|
| + // The buffer can have length zero, in which case there is no change.
|
| + if (observer_ && buffered_amount() > start_buffered_amount) {
|
| + observer_->OnBufferedAmountChange(start_buffered_amount);
|
| + }
|
| return true;
|
| }
|
|
|
|
|