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 { |