Index: net/spdy/buffered_spdy_framer.cc |
diff --git a/net/spdy/buffered_spdy_framer.cc b/net/spdy/buffered_spdy_framer.cc |
index fdc65a93c9fb20bb64c5c1f4b3d6aba5c9c0885f..f3fc575b8c233054fb63c7006fe787e9ae26d158 100644 |
--- a/net/spdy/buffered_spdy_framer.cc |
+++ b/net/spdy/buffered_spdy_framer.cc |
@@ -15,7 +15,8 @@ SpdyMajorVersion NextProtoToSpdyMajorVersion(NextProto next_proto) { |
case kProtoSPDY3: |
case kProtoSPDY31: |
return SPDY3; |
- case kProtoSPDY4: |
+ case kProtoSPDY4_14: |
+ case kProtoSPDY4_15: |
return SPDY4; |
case kProtoUnknown: |
case kProtoHTTP11: |
@@ -76,6 +77,8 @@ void BufferedSpdyFramer::OnSynStream(SpdyStreamId stream_id, |
} |
void BufferedSpdyFramer::OnHeaders(SpdyStreamId stream_id, |
+ bool has_priority, |
+ SpdyPriority priority, |
bool fin, |
bool end) { |
frames_received_++; |
@@ -83,6 +86,10 @@ void BufferedSpdyFramer::OnHeaders(SpdyStreamId stream_id, |
control_frame_fields_.reset(new ControlFrameFields()); |
control_frame_fields_->type = HEADERS; |
control_frame_fields_->stream_id = stream_id; |
+ control_frame_fields_->has_priority = has_priority; |
+ if (control_frame_fields_->has_priority) { |
+ control_frame_fields_->priority = priority; |
+ } |
control_frame_fields_->fin = fin; |
InitHeaderStreaming(stream_id); |
@@ -136,6 +143,8 @@ bool BufferedSpdyFramer::OnControlFrameHeaderData(SpdyStreamId stream_id, |
break; |
case HEADERS: |
visitor_->OnHeaders(control_frame_fields_->stream_id, |
+ control_frame_fields_->has_priority, |
+ control_frame_fields_->priority, |
control_frame_fields_->fin, |
headers); |
break; |
@@ -346,9 +355,14 @@ SpdyFrame* BufferedSpdyFramer::CreateGoAway( |
SpdyFrame* BufferedSpdyFramer::CreateHeaders( |
SpdyStreamId stream_id, |
SpdyControlFlags flags, |
+ SpdyPriority priority, |
const SpdyHeaderBlock* headers) { |
SpdyHeadersIR headers_ir(stream_id); |
headers_ir.set_fin((flags & CONTROL_FLAG_FIN) != 0); |
+ if (flags & HEADERS_FLAG_PRIORITY) { |
+ headers_ir.set_has_priority(true); |
+ headers_ir.set_priority(priority); |
+ } |
headers_ir.set_name_value_block(*headers); |
return spdy_framer_.SerializeHeaders(headers_ir); |
} |