| 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 =
|
| + done_receiving ? recv_last_byte_time_ : base::TimeTicks();
|
| + }
|
| + return result;
|
| }
|
|
|
| GURL SpdyStream::GetUrlFromHeaders() const {
|
|
|