Supervised user whitelists: Cleanup
[chromium-blink-merge.git] / net / quic / spdy_utils.cc
blobda2345d3fd48ff836b06721aca300bcb7b1fee7e
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/quic/spdy_utils.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "net/spdy/spdy_frame_builder.h"
9 #include "net/spdy/spdy_framer.h"
10 #include "net/spdy/spdy_protocol.h"
12 using std::string;
14 namespace net {
16 // static
17 SpdyMajorVersion SpdyUtils::GetSpdyVersionForQuicVersion(
18 QuicVersion quic_version) {
19 if (quic_version > QUIC_VERSION_24) {
20 return SPDY4;
22 return SPDY3;
25 // static
26 string SpdyUtils::SerializeUncompressedHeaders(const SpdyHeaderBlock& headers,
27 QuicVersion quic_version) {
28 SpdyMajorVersion spdy_version = GetSpdyVersionForQuicVersion(quic_version);
30 int length = SpdyFramer::GetSerializedLength(spdy_version, &headers);
31 SpdyFrameBuilder builder(length, kDefaultSpdyMajorVersion);
32 SpdyFramer::WriteHeaderBlock(&builder, kDefaultSpdyMajorVersion, &headers);
33 scoped_ptr<SpdyFrame> block(builder.take());
34 return string(block->data(), length);
37 // static
38 SpdyHeaderBlock SpdyUtils::ConvertSpdy3ResponseHeadersToSpdy4(
39 SpdyHeaderBlock response_headers) {
40 // SPDY/4 headers include neither the version field nor the response details.
41 response_headers.erase(":version");
42 size_t end_of_code = response_headers[":status"].find(' ');
43 if (end_of_code != string::npos) {
44 response_headers[":status"].erase(end_of_code);
46 return response_headers;
49 } // namespace net