Chromium Code Reviews| Index: net/spdy/spdy_stream.cc |
| diff --git a/net/spdy/spdy_stream.cc b/net/spdy/spdy_stream.cc |
| index 214a67febc59809f2523779d3422423fb89a169c..8213480dfec1b5c121b1200c919091cc265d2cf2 100644 |
| --- a/net/spdy/spdy_stream.cc |
| +++ b/net/spdy/spdy_stream.cc |
| @@ -480,6 +480,10 @@ void SpdyStream::OnPushPromiseHeadersReceived(const SpdyHeaderBlock& headers) { |
| void SpdyStream::OnDataReceived(scoped_ptr<SpdyBuffer> buffer) { |
| DCHECK(session_->IsStreamActive(stream_id_)); |
| + // Track our bandwidth. |
| + recv_bytes_ += buffer ? buffer->GetRemainingSize() : 0; |
| + recv_last_byte_time_ = base::TimeTicks::Now(); |
| + |
| // If we're still buffering data for a push stream, we will do the |
| // check for data received with incomplete headers in |
| // PushedStreamReplayData(). |
| @@ -541,10 +545,6 @@ void SpdyStream::OnDataReceived(scoped_ptr<SpdyBuffer> buffer) { |
| buffer->AddConsumeCallback( |
| base::Bind(&SpdyStream::OnReadBufferConsumed, GetWeakPtr())); |
| - // Track our bandwidth. |
| - recv_bytes_ += length; |
| - recv_last_byte_time_ = base::TimeTicks::Now(); |
| - |
| // May close |this|. |
| delegate_->OnDataReceived(std::move(buffer)); |
| } |
| @@ -576,9 +576,9 @@ void SpdyStream::OnFrameWriteComplete(SpdyFrameType frame_type, |
| } |
| if (pending_send_status_ == NO_MORE_DATA_TO_SEND) { |
| - if(io_state_ == STATE_OPEN) { |
| + if (io_state_ == STATE_OPEN) { |
| io_state_ = STATE_HALF_CLOSED_LOCAL; |
| - } else if(io_state_ == STATE_HALF_CLOSED_REMOTE) { |
| + } else if (io_state_ == STATE_HALF_CLOSED_REMOTE) { |
| io_state_ = STATE_CLOSED; |
| } else { |
| NOTREACHED() << io_state_; |
| @@ -774,8 +774,15 @@ void SpdyStream::AddRawSentBytes(size_t sent_bytes) { |
| bool SpdyStream::GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const { |
| if (stream_id_ == 0) |
| return false; |
| - |
| - return session_->GetLoadTimingInfo(stream_id_, load_timing_info); |
| + bool result = session_->GetLoadTimingInfo(stream_id_, load_timing_info); |
| + if (type_ == SPDY_PUSH_STREAM) { |
| + load_timing_info->push_start = recv_first_byte_time_; |
| + bool done_receiving = IsClosed() || (!pending_recv_data_.empty() && |
| + !pending_recv_data_.back()); |
| + load_timing_info->push_end = |
|
Bence
2016/03/25 14:42:54
How about this instead:
if (done_receiving) push_e
|
| + done_receiving ? recv_last_byte_time_ : base::TimeTicks(); |
| + } |
| + return result; |
| } |
| GURL SpdyStream::GetUrlFromHeaders() const { |