Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Unified Diff: net/spdy/spdy_protocol.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/spdy_priority_tree_test.cc ('k') | net/spdy/spdy_protocol.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_protocol.h
diff --git a/net/spdy/spdy_protocol.h b/net/spdy/spdy_protocol.h
deleted file mode 100644
index 80f46d7745c81abf782c181c8ce929f3e529163e..0000000000000000000000000000000000000000
--- a/net/spdy/spdy_protocol.h
+++ /dev/null
@@ -1,1100 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains some protocol structures for use with SPDY 2 and 3
-// The SPDY 2 spec can be found at:
-// http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2
-// The SPDY 3 spec can be found at:
-// http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3
-
-#ifndef NET_SPDY_SPDY_PROTOCOL_H_
-#define NET_SPDY_SPDY_PROTOCOL_H_
-
-#include <limits>
-#include <map>
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_piece.h"
-#include "base/sys_byteorder.h"
-#include "net/base/net_export.h"
-#include "net/spdy/spdy_bitmasks.h"
-
-namespace net {
-
-// The major versions of SPDY. Major version differences indicate
-// framer-layer incompatibility, as opposed to minor version numbers
-// which indicate application-layer incompatibility. Do not rely on
-// the mapping from enum value SPDYn to the integer n.
-enum SpdyMajorVersion {
- SPDY2 = 2,
- SPDY_MIN_VERSION = SPDY2,
- SPDY3 = 3,
- SPDY4 = 4,
- HTTP2 = SPDY4,
- SPDY_MAX_VERSION = SPDY4
-};
-
-// A SPDY stream id is a 31 bit entity.
-typedef uint32 SpdyStreamId;
-
-// Specifies the stream ID used to denote the current session (for
-// flow control).
-const SpdyStreamId kSessionFlowControlStreamId = 0;
-
-// The maxmium possible control frame size allowed by the spec.
-const int32 kSpdyMaxControlFrameSize = (1 << 24) - 1;
-
-// The maximum control frame size we accept.
-const int32 kControlFrameSizeLimit = 1 << 14;
-
-// Maximum window size for a Spdy stream or session.
-const int32 kSpdyMaximumWindowSize = 0x7FFFFFFF; // Max signed 32bit int
-
-// Maximum padding size in octets for one DATA or HEADERS or PUSH_PROMISE frame.
-const int32 kPaddingSizePerFrame = 256;
-
-// SPDY 2 dictionary.
-// This is just a hacked dictionary to use for shrinking HTTP-like headers.
-const char kV2Dictionary[] =
- "optionsgetheadpostputdeletetraceacceptaccept-charsetaccept-encodingaccept-"
- "languageauthorizationexpectfromhostif-modified-sinceif-matchif-none-matchi"
- "f-rangeif-unmodifiedsincemax-forwardsproxy-authorizationrangerefererteuser"
- "-agent10010120020120220320420520630030130230330430530630740040140240340440"
- "5406407408409410411412413414415416417500501502503504505accept-rangesageeta"
- "glocationproxy-authenticatepublicretry-afterservervarywarningwww-authentic"
- "ateallowcontent-basecontent-encodingcache-controlconnectiondatetrailertran"
- "sfer-encodingupgradeviawarningcontent-languagecontent-lengthcontent-locati"
- "oncontent-md5content-rangecontent-typeetagexpireslast-modifiedset-cookieMo"
- "ndayTuesdayWednesdayThursdayFridaySaturdaySundayJanFebMarAprMayJunJulAugSe"
- "pOctNovDecchunkedtext/htmlimage/pngimage/jpgimage/gifapplication/xmlapplic"
- "ation/xhtmltext/plainpublicmax-agecharset=iso-8859-1utf-8gzipdeflateHTTP/1"
- ".1statusversionurl";
-const int kV2DictionarySize = arraysize(kV2Dictionary);
-
-// SPDY 3 dictionary.
-const char kV3Dictionary[] = {
- 0x00, 0x00, 0x00, 0x07, 0x6f, 0x70, 0x74, 0x69, // ....opti
- 0x6f, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x04, 0x68, // ons....h
- 0x65, 0x61, 0x64, 0x00, 0x00, 0x00, 0x04, 0x70, // ead....p
- 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x03, 0x70, // ost....p
- 0x75, 0x74, 0x00, 0x00, 0x00, 0x06, 0x64, 0x65, // ut....de
- 0x6c, 0x65, 0x74, 0x65, 0x00, 0x00, 0x00, 0x05, // lete....
- 0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00, // trace...
- 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x00, // .accept.
- 0x00, 0x00, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep
- 0x74, 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // t-charse
- 0x74, 0x00, 0x00, 0x00, 0x0f, 0x61, 0x63, 0x63, // t....acc
- 0x65, 0x70, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ept-enco
- 0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x0f, // ding....
- 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x6c, // accept-l
- 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x00, // anguage.
- 0x00, 0x00, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep
- 0x74, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, // t-ranges
- 0x00, 0x00, 0x00, 0x03, 0x61, 0x67, 0x65, 0x00, // ....age.
- 0x00, 0x00, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, // ...allow
- 0x00, 0x00, 0x00, 0x0d, 0x61, 0x75, 0x74, 0x68, // ....auth
- 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, // orizatio
- 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x63, 0x61, 0x63, // n....cac
- 0x68, 0x65, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, // he-contr
- 0x6f, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x63, 0x6f, // ol....co
- 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, // nnection
- 0x00, 0x00, 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, // ....cont
- 0x65, 0x6e, 0x74, 0x2d, 0x62, 0x61, 0x73, 0x65, // ent-base
- 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, 0x6e, 0x74, // ....cont
- 0x65, 0x6e, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ent-enco
- 0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, // ding....
- 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, // content-
- 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, // language
- 0x00, 0x00, 0x00, 0x0e, 0x63, 0x6f, 0x6e, 0x74, // ....cont
- 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x65, 0x6e, 0x67, // ent-leng
- 0x74, 0x68, 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, // th....co
- 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x6f, // ntent-lo
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // cation..
- 0x00, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten
- 0x74, 0x2d, 0x6d, 0x64, 0x35, 0x00, 0x00, 0x00, // t-md5...
- 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, // .content
- 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, // -range..
- 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten
- 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, // t-type..
- 0x00, 0x04, 0x64, 0x61, 0x74, 0x65, 0x00, 0x00, // ..date..
- 0x00, 0x04, 0x65, 0x74, 0x61, 0x67, 0x00, 0x00, // ..etag..
- 0x00, 0x06, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, // ..expect
- 0x00, 0x00, 0x00, 0x07, 0x65, 0x78, 0x70, 0x69, // ....expi
- 0x72, 0x65, 0x73, 0x00, 0x00, 0x00, 0x04, 0x66, // res....f
- 0x72, 0x6f, 0x6d, 0x00, 0x00, 0x00, 0x04, 0x68, // rom....h
- 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x08, 0x69, // ost....i
- 0x66, 0x2d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, // f-match.
- 0x00, 0x00, 0x11, 0x69, 0x66, 0x2d, 0x6d, 0x6f, // ...if-mo
- 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2d, 0x73, // dified-s
- 0x69, 0x6e, 0x63, 0x65, 0x00, 0x00, 0x00, 0x0d, // ince....
- 0x69, 0x66, 0x2d, 0x6e, 0x6f, 0x6e, 0x65, 0x2d, // if-none-
- 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, // match...
- 0x08, 0x69, 0x66, 0x2d, 0x72, 0x61, 0x6e, 0x67, // .if-rang
- 0x65, 0x00, 0x00, 0x00, 0x13, 0x69, 0x66, 0x2d, // e....if-
- 0x75, 0x6e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, // unmodifi
- 0x65, 0x64, 0x2d, 0x73, 0x69, 0x6e, 0x63, 0x65, // ed-since
- 0x00, 0x00, 0x00, 0x0d, 0x6c, 0x61, 0x73, 0x74, // ....last
- 0x2d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, // -modifie
- 0x64, 0x00, 0x00, 0x00, 0x08, 0x6c, 0x6f, 0x63, // d....loc
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // ation...
- 0x0c, 0x6d, 0x61, 0x78, 0x2d, 0x66, 0x6f, 0x72, // .max-for
- 0x77, 0x61, 0x72, 0x64, 0x73, 0x00, 0x00, 0x00, // wards...
- 0x06, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x00, // .pragma.
- 0x00, 0x00, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, // ...proxy
- 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, // -authent
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, // icate...
- 0x13, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, // .proxy-a
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, // uthoriza
- 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, // tion....
- 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, 0x00, // range...
- 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, // .referer
- 0x00, 0x00, 0x00, 0x0b, 0x72, 0x65, 0x74, 0x72, // ....retr
- 0x79, 0x2d, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, // y-after.
- 0x00, 0x00, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, // ...serve
- 0x72, 0x00, 0x00, 0x00, 0x02, 0x74, 0x65, 0x00, // r....te.
- 0x00, 0x00, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, // ...trail
- 0x65, 0x72, 0x00, 0x00, 0x00, 0x11, 0x74, 0x72, // er....tr
- 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x65, // ansfer-e
- 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x00, // ncoding.
- 0x00, 0x00, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, // ...upgra
- 0x64, 0x65, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x73, // de....us
- 0x65, 0x72, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, // er-agent
- 0x00, 0x00, 0x00, 0x04, 0x76, 0x61, 0x72, 0x79, // ....vary
- 0x00, 0x00, 0x00, 0x03, 0x76, 0x69, 0x61, 0x00, // ....via.
- 0x00, 0x00, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, // ...warni
- 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, 0x77, 0x77, // ng....ww
- 0x77, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, // w-authen
- 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, // ticate..
- 0x00, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, // ..method
- 0x00, 0x00, 0x00, 0x03, 0x67, 0x65, 0x74, 0x00, // ....get.
- 0x00, 0x00, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, // ...statu
- 0x73, 0x00, 0x00, 0x00, 0x06, 0x32, 0x30, 0x30, // s....200
- 0x20, 0x4f, 0x4b, 0x00, 0x00, 0x00, 0x07, 0x76, // .OK....v
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ersion..
- 0x00, 0x08, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, // ..HTTP.1
- 0x2e, 0x31, 0x00, 0x00, 0x00, 0x03, 0x75, 0x72, // .1....ur
- 0x6c, 0x00, 0x00, 0x00, 0x06, 0x70, 0x75, 0x62, // l....pub
- 0x6c, 0x69, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x73, // lic....s
- 0x65, 0x74, 0x2d, 0x63, 0x6f, 0x6f, 0x6b, 0x69, // et-cooki
- 0x65, 0x00, 0x00, 0x00, 0x0a, 0x6b, 0x65, 0x65, // e....kee
- 0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x00, // p-alive.
- 0x00, 0x00, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, // ...origi
- 0x6e, 0x31, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, // n1001012
- 0x30, 0x31, 0x32, 0x30, 0x32, 0x32, 0x30, 0x35, // 01202205
- 0x32, 0x30, 0x36, 0x33, 0x30, 0x30, 0x33, 0x30, // 20630030
- 0x32, 0x33, 0x30, 0x33, 0x33, 0x30, 0x34, 0x33, // 23033043
- 0x30, 0x35, 0x33, 0x30, 0x36, 0x33, 0x30, 0x37, // 05306307
- 0x34, 0x30, 0x32, 0x34, 0x30, 0x35, 0x34, 0x30, // 40240540
- 0x36, 0x34, 0x30, 0x37, 0x34, 0x30, 0x38, 0x34, // 64074084
- 0x30, 0x39, 0x34, 0x31, 0x30, 0x34, 0x31, 0x31, // 09410411
- 0x34, 0x31, 0x32, 0x34, 0x31, 0x33, 0x34, 0x31, // 41241341
- 0x34, 0x34, 0x31, 0x35, 0x34, 0x31, 0x36, 0x34, // 44154164
- 0x31, 0x37, 0x35, 0x30, 0x32, 0x35, 0x30, 0x34, // 17502504
- 0x35, 0x30, 0x35, 0x32, 0x30, 0x33, 0x20, 0x4e, // 505203.N
- 0x6f, 0x6e, 0x2d, 0x41, 0x75, 0x74, 0x68, 0x6f, // on-Autho
- 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, // ritative
- 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, // .Informa
- 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x30, 0x34, 0x20, // tion204.
- 0x4e, 0x6f, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, // No.Conte
- 0x6e, 0x74, 0x33, 0x30, 0x31, 0x20, 0x4d, 0x6f, // nt301.Mo
- 0x76, 0x65, 0x64, 0x20, 0x50, 0x65, 0x72, 0x6d, // ved.Perm
- 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x34, // anently4
- 0x30, 0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52, // 00.Bad.R
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x34, 0x30, // equest40
- 0x31, 0x20, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, // 1.Unauth
- 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x34, 0x30, // orized40
- 0x33, 0x20, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, // 3.Forbid
- 0x64, 0x65, 0x6e, 0x34, 0x30, 0x34, 0x20, 0x4e, // den404.N
- 0x6f, 0x74, 0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64, // ot.Found
- 0x35, 0x30, 0x30, 0x20, 0x49, 0x6e, 0x74, 0x65, // 500.Inte
- 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, // rnal.Ser
- 0x76, 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6f, // ver.Erro
- 0x72, 0x35, 0x30, 0x31, 0x20, 0x4e, 0x6f, 0x74, // r501.Not
- 0x20, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, // .Impleme
- 0x6e, 0x74, 0x65, 0x64, 0x35, 0x30, 0x33, 0x20, // nted503.
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, // Service.
- 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, // Unavaila
- 0x62, 0x6c, 0x65, 0x4a, 0x61, 0x6e, 0x20, 0x46, // bleJan.F
- 0x65, 0x62, 0x20, 0x4d, 0x61, 0x72, 0x20, 0x41, // eb.Mar.A
- 0x70, 0x72, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x4a, // pr.May.J
- 0x75, 0x6e, 0x20, 0x4a, 0x75, 0x6c, 0x20, 0x41, // un.Jul.A
- 0x75, 0x67, 0x20, 0x53, 0x65, 0x70, 0x74, 0x20, // ug.Sept.
- 0x4f, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x76, 0x20, // Oct.Nov.
- 0x44, 0x65, 0x63, 0x20, 0x30, 0x30, 0x3a, 0x30, // Dec.00.0
- 0x30, 0x3a, 0x30, 0x30, 0x20, 0x4d, 0x6f, 0x6e, // 0.00.Mon
- 0x2c, 0x20, 0x54, 0x75, 0x65, 0x2c, 0x20, 0x57, // ..Tue..W
- 0x65, 0x64, 0x2c, 0x20, 0x54, 0x68, 0x75, 0x2c, // ed..Thu.
- 0x20, 0x46, 0x72, 0x69, 0x2c, 0x20, 0x53, 0x61, // .Fri..Sa
- 0x74, 0x2c, 0x20, 0x53, 0x75, 0x6e, 0x2c, 0x20, // t..Sun..
- 0x47, 0x4d, 0x54, 0x63, 0x68, 0x75, 0x6e, 0x6b, // GMTchunk
- 0x65, 0x64, 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, // ed.text.
- 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x69, 0x6d, 0x61, // html.ima
- 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0x2c, 0x69, // ge.png.i
- 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x67, // mage.jpg
- 0x2c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, // .image.g
- 0x69, 0x66, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // if.appli
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x
- 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // ml.appli
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x
- 0x68, 0x74, 0x6d, 0x6c, 0x2b, 0x78, 0x6d, 0x6c, // html.xml
- 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, // .text.pl
- 0x61, 0x69, 0x6e, 0x2c, 0x74, 0x65, 0x78, 0x74, // ain.text
- 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, // .javascr
- 0x69, 0x70, 0x74, 0x2c, 0x70, 0x75, 0x62, 0x6c, // ipt.publ
- 0x69, 0x63, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, // icprivat
- 0x65, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, // emax-age
- 0x3d, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x64, 0x65, // .gzip.de
- 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, // flate.sd
- 0x63, 0x68, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // chcharse
- 0x74, 0x3d, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x63, // t.utf-8c
- 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x69, // harset.i
- 0x73, 0x6f, 0x2d, 0x38, 0x38, 0x35, 0x39, 0x2d, // so-8859-
- 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x2c, 0x2a, // 1.utf-..
- 0x2c, 0x65, 0x6e, 0x71, 0x3d, 0x30, 0x2e // .enq.0.
-};
-const int kV3DictionarySize = arraysize(kV3Dictionary);
-
-// The HTTP/2 connection header prefix, which must be the first bytes
-// sent by the client upon starting an HTTP/2 connection, and which
-// must be followed by a SETTINGS frame.
-//
-// Equivalent to the string "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
-// (without the null terminator).
-const char kHttp2ConnectionHeaderPrefix[] = {
- 0x50, 0x52, 0x49, 0x20, 0x2a, 0x20, 0x48, 0x54, // PRI * HT
- 0x54, 0x50, 0x2f, 0x32, 0x2e, 0x30, 0x0d, 0x0a, // TP/2.0..
- 0x0d, 0x0a, 0x53, 0x4d, 0x0d, 0x0a, 0x0d, 0x0a // ..SM....
-};
-const int kHttp2ConnectionHeaderPrefixSize =
- arraysize(kHttp2ConnectionHeaderPrefix);
-
-const char kHttp2VersionString[] = "HTTP/1.1";
-
-// Types of SPDY frames.
-enum SpdyFrameType {
- DATA,
- SYN_STREAM,
- SYN_REPLY,
- RST_STREAM,
- SETTINGS,
- PING,
- GOAWAY,
- HEADERS,
- WINDOW_UPDATE,
- CREDENTIAL = 10, // No longer valid. Kept for identifiability.
- PUSH_PROMISE,
- CONTINUATION,
- PRIORITY,
- // BLOCKED and ALTSVC are recognized extensions.
- BLOCKED,
- ALTSVC,
-};
-
-// Flags on data packets.
-enum SpdyDataFlags {
- DATA_FLAG_NONE = 0x00,
- DATA_FLAG_FIN = 0x01,
- DATA_FLAG_END_SEGMENT = 0x02,
- DATA_FLAG_PADDED = 0x08,
- DATA_FLAG_COMPRESSED = 0x20,
-};
-
-// Flags on control packets
-enum SpdyControlFlags {
- CONTROL_FLAG_NONE = 0x00,
- CONTROL_FLAG_FIN = 0x01,
- CONTROL_FLAG_UNIDIRECTIONAL = 0x02,
-};
-
-enum SpdyPingFlags {
- PING_FLAG_ACK = 0x01,
-};
-
-// Used by HEADERS, PUSH_PROMISE, and CONTINUATION.
-enum SpdyHeadersFlags {
- HEADERS_FLAG_END_SEGMENT = 0x02,
- HEADERS_FLAG_END_HEADERS = 0x04,
- HEADERS_FLAG_PADDED = 0x08,
- HEADERS_FLAG_PRIORITY = 0x20,
-};
-
-enum SpdyPushPromiseFlags {
- PUSH_PROMISE_FLAG_END_PUSH_PROMISE = 0x04,
- PUSH_PROMISE_FLAG_PADDED = 0x08,
-};
-
-// Flags on the SETTINGS control frame.
-enum SpdySettingsControlFlags {
- SETTINGS_FLAG_CLEAR_PREVIOUSLY_PERSISTED_SETTINGS = 0x01,
-};
-
-enum Http2SettingsControlFlags {
- SETTINGS_FLAG_ACK = 0x01,
-};
-
-// Flags for settings within a SETTINGS frame.
-enum SpdySettingsFlags {
- SETTINGS_FLAG_NONE = 0x00,
- SETTINGS_FLAG_PLEASE_PERSIST = 0x01,
- SETTINGS_FLAG_PERSISTED = 0x02,
-};
-
-// List of known settings. Avoid changing these enum values, as persisted
-// settings are keyed on them, and they are also exposed in net-internals.
-enum SpdySettingsIds {
- SETTINGS_UPLOAD_BANDWIDTH = 0x1,
- SETTINGS_DOWNLOAD_BANDWIDTH = 0x2,
- // Network round trip time in milliseconds.
- SETTINGS_ROUND_TRIP_TIME = 0x3,
- // The maximum number of simultaneous live streams in each direction.
- SETTINGS_MAX_CONCURRENT_STREAMS = 0x4,
- // TCP congestion window in packets.
- SETTINGS_CURRENT_CWND = 0x5,
- // Downstream byte retransmission rate in percentage.
- SETTINGS_DOWNLOAD_RETRANS_RATE = 0x6,
- // Initial window size in bytes
- SETTINGS_INITIAL_WINDOW_SIZE = 0x7,
- // HPACK header table maximum size.
- SETTINGS_HEADER_TABLE_SIZE = 0x8,
- // Whether or not server push (PUSH_PROMISE) is enabled.
- SETTINGS_ENABLE_PUSH = 0x9,
- // The size of the largest frame payload that a receiver is willing to accept.
- SETTINGS_MAX_FRAME_SIZE = 0xa,
- // The maximum size of header list that the sender is prepared to accept.
- SETTINGS_MAX_HEADER_LIST_SIZE = 0xb,
-};
-
-// Status codes for RST_STREAM frames.
-enum SpdyRstStreamStatus {
- RST_STREAM_INVALID = 0,
- RST_STREAM_PROTOCOL_ERROR = 1,
- RST_STREAM_INVALID_STREAM = 2,
- RST_STREAM_STREAM_CLOSED = 2, // Equivalent to INVALID_STREAM
- RST_STREAM_REFUSED_STREAM = 3,
- RST_STREAM_UNSUPPORTED_VERSION = 4,
- RST_STREAM_CANCEL = 5,
- RST_STREAM_INTERNAL_ERROR = 6,
- RST_STREAM_FLOW_CONTROL_ERROR = 7,
- RST_STREAM_STREAM_IN_USE = 8,
- RST_STREAM_STREAM_ALREADY_CLOSED = 9,
- RST_STREAM_INVALID_CREDENTIALS = 10,
- // FRAME_TOO_LARGE (defined by SPDY versions 3.1 and below), and
- // FRAME_SIZE_ERROR (defined by HTTP/2) are mapped to the same internal
- // reset status.
- RST_STREAM_FRAME_TOO_LARGE = 11,
- RST_STREAM_FRAME_SIZE_ERROR = 11,
- RST_STREAM_SETTINGS_TIMEOUT = 12,
- RST_STREAM_CONNECT_ERROR = 13,
- RST_STREAM_ENHANCE_YOUR_CALM = 14,
- RST_STREAM_INADEQUATE_SECURITY = 15,
- RST_STREAM_HTTP_1_1_REQUIRED = 16,
- RST_STREAM_NUM_STATUS_CODES = 17
-};
-
-// Status codes for GOAWAY frames.
-enum SpdyGoAwayStatus {
- GOAWAY_OK = 0,
- GOAWAY_NO_ERROR = GOAWAY_OK,
- GOAWAY_PROTOCOL_ERROR = 1,
- GOAWAY_INTERNAL_ERROR = 2,
- GOAWAY_FLOW_CONTROL_ERROR = 3,
- GOAWAY_SETTINGS_TIMEOUT = 4,
- GOAWAY_STREAM_CLOSED = 5,
- GOAWAY_FRAME_SIZE_ERROR = 6,
- GOAWAY_REFUSED_STREAM = 7,
- GOAWAY_CANCEL = 8,
- GOAWAY_COMPRESSION_ERROR = 9,
- GOAWAY_CONNECT_ERROR = 10,
- GOAWAY_ENHANCE_YOUR_CALM = 11,
- GOAWAY_INADEQUATE_SECURITY = 12,
- GOAWAY_HTTP_1_1_REQUIRED = 13
-};
-
-// A SPDY priority is a number between 0 and 7 (inclusive).
-// SPDY priority range is version-dependent. For SPDY 2 and below, priority is a
-// number between 0 and 3.
-typedef uint8 SpdyPriority;
-
-typedef std::map<std::string, std::string> SpdyNameValueBlock;
-
-typedef uint64 SpdyPingId;
-
-typedef std::string SpdyProtocolId;
-
-enum class SpdyHeaderValidatorType { REQUEST, RESPONSE };
-
-// TODO(hkhalil): Add direct testing for this? It won't increase coverage any,
-// but is good to do anyway.
-class NET_EXPORT_PRIVATE SpdyConstants {
- public:
- // Returns true if a given on-the-wire enumeration of a frame type is valid
- // for a given protocol version, false otherwise.
- static bool IsValidFrameType(SpdyMajorVersion version, int frame_type_field);
-
- // Parses a frame type from an on-the-wire enumeration of a given protocol
- // version.
- // Behavior is undefined for invalid frame type fields; consumers should first
- // use IsValidFrameType() to verify validity of frame type fields.
- static SpdyFrameType ParseFrameType(SpdyMajorVersion version,
- int frame_type_field);
-
- // Serializes a given frame type to the on-the-wire enumeration value for the
- // given protocol version.
- // Returns -1 on failure (I.E. Invalid frame type for the given version).
- static int SerializeFrameType(SpdyMajorVersion version,
- SpdyFrameType frame_type);
-
- // Returns the frame type for non-control (i.e. data) frames
- // in the given SPDY version.
- static int DataFrameType(SpdyMajorVersion version);
-
- // Returns true if a given on-the-wire enumeration of a setting id is valid
- // for a given protocol version, false otherwise.
- static bool IsValidSettingId(SpdyMajorVersion version, int setting_id_field);
-
- // Parses a setting id from an on-the-wire enumeration of a given protocol
- // version.
- // Behavior is undefined for invalid setting id fields; consumers should first
- // use IsValidSettingId() to verify validity of setting id fields.
- static SpdySettingsIds ParseSettingId(SpdyMajorVersion version,
- int setting_id_field);
-
- // Serializes a given setting id to the on-the-wire enumeration value for the
- // given protocol version.
- // Returns -1 on failure (I.E. Invalid setting id for the given version).
- static int SerializeSettingId(SpdyMajorVersion version, SpdySettingsIds id);
-
- // Returns true if a given on-the-wire enumeration of a RST_STREAM status code
- // is valid for a given protocol version, false otherwise.
- static bool IsValidRstStreamStatus(SpdyMajorVersion version,
- int rst_stream_status_field);
-
- // Parses a RST_STREAM status code from an on-the-wire enumeration of a given
- // protocol version.
- // Behavior is undefined for invalid RST_STREAM status code fields; consumers
- // should first use IsValidRstStreamStatus() to verify validity of RST_STREAM
- // status code fields..
- static SpdyRstStreamStatus ParseRstStreamStatus(SpdyMajorVersion version,
- int rst_stream_status_field);
-
- // Serializes a given RST_STREAM status code to the on-the-wire enumeration
- // value for the given protocol version.
- // Returns -1 on failure (I.E. Invalid RST_STREAM status code for the given
- // version).
- static int SerializeRstStreamStatus(SpdyMajorVersion version,
- SpdyRstStreamStatus rst_stream_status);
-
- // Returns true if a given on-the-wire enumeration of a GOAWAY status code is
- // valid for the given protocol version, false otherwise.
- static bool IsValidGoAwayStatus(SpdyMajorVersion version,
- int goaway_status_field);
-
- // Parses a GOAWAY status from an on-the-wire enumeration of a given protocol
- // version.
- // Behavior is undefined for invalid GOAWAY status fields; consumers should
- // first use IsValidGoAwayStatus() to verify validity of GOAWAY status fields.
- static SpdyGoAwayStatus ParseGoAwayStatus(SpdyMajorVersion version,
- int goaway_status_field);
-
- // Serializes a given GOAWAY status to the on-the-wire enumeration value for
- // the given protocol version.
- // Returns -1 on failure (I.E. Invalid GOAWAY status for the given version).
- static int SerializeGoAwayStatus(SpdyMajorVersion version,
- SpdyGoAwayStatus status);
-
- // Size, in bytes, of the data frame header. Future versions of SPDY
- // will likely vary this, so we allow for the flexibility of a function call
- // for this value as opposed to a constant.
- static size_t GetDataFrameMinimumSize(SpdyMajorVersion version);
-
- // Size, in bytes, of the control frame header.
- static size_t GetControlFrameHeaderSize(SpdyMajorVersion version);
-
- static size_t GetPrefixLength(SpdyFrameType type, SpdyMajorVersion version);
-
- static size_t GetFrameMaximumSize(SpdyMajorVersion version);
-
- // Returns the size of a header block size field. Valid only for SPDY
- // versions <= 3.
- static size_t GetSizeOfSizeField(SpdyMajorVersion version);
-
- // Returns the size (in bytes) of a wire setting ID and value.
- static size_t GetSettingSize(SpdyMajorVersion version);
-
- // Initial window size for a stream in bytes.
- static int32 GetInitialStreamWindowSize(SpdyMajorVersion version);
-
- // Initial window size for a session in bytes.
- static int32 GetInitialSessionWindowSize(SpdyMajorVersion version);
-
- static SpdyMajorVersion ParseMajorVersion(int version_number);
-
- static int SerializeMajorVersion(SpdyMajorVersion version);
-
- static std::string GetVersionString(SpdyMajorVersion version);
-};
-
-class SpdyFrame;
-typedef SpdyFrame SpdySerializedFrame;
-
-class SpdyFrameVisitor;
-
-// Intermediate representation for SPDY frames.
-// TODO(hkhalil): Rename this class to SpdyFrame when the existing SpdyFrame is
-// gone.
-class NET_EXPORT_PRIVATE SpdyFrameIR {
- public:
- virtual ~SpdyFrameIR() {}
-
- virtual void Visit(SpdyFrameVisitor* visitor) const = 0;
-
- protected:
- SpdyFrameIR() {}
-
- private:
- DISALLOW_COPY_AND_ASSIGN(SpdyFrameIR);
-};
-
-// Abstract class intended to be inherited by IRs that have a stream associated
-// to them.
-class NET_EXPORT_PRIVATE SpdyFrameWithStreamIdIR : public SpdyFrameIR {
- public:
- ~SpdyFrameWithStreamIdIR() override {}
- SpdyStreamId stream_id() const { return stream_id_; }
- void set_stream_id(SpdyStreamId stream_id) {
- DCHECK_EQ(0u, stream_id & ~kStreamIdMask);
- stream_id_ = stream_id;
- }
-
- protected:
- explicit SpdyFrameWithStreamIdIR(SpdyStreamId stream_id) {
- set_stream_id(stream_id);
- }
-
- private:
- SpdyStreamId stream_id_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithStreamIdIR);
-};
-
-// Abstract class intended to be inherited by IRs that have the option of a FIN
-// flag. Implies SpdyFrameWithStreamIdIR.
-class NET_EXPORT_PRIVATE SpdyFrameWithFinIR : public SpdyFrameWithStreamIdIR {
- public:
- ~SpdyFrameWithFinIR() override {}
- bool fin() const { return fin_; }
- void set_fin(bool fin) { fin_ = fin; }
-
- protected:
- explicit SpdyFrameWithFinIR(SpdyStreamId stream_id)
- : SpdyFrameWithStreamIdIR(stream_id),
- fin_(false) {}
-
- private:
- bool fin_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithFinIR);
-};
-
-// Abstract class intended to be inherited by IRs that contain a name-value
-// block. Implies SpdyFrameWithFinIR.
-class NET_EXPORT_PRIVATE SpdyFrameWithNameValueBlockIR
- : public NON_EXPORTED_BASE(SpdyFrameWithFinIR) {
- public:
- const SpdyNameValueBlock& name_value_block() const {
- return name_value_block_;
- }
- void set_name_value_block(const SpdyNameValueBlock& name_value_block) {
- // Deep copy.
- name_value_block_ = name_value_block;
- }
- void SetHeader(const base::StringPiece& name,
- const base::StringPiece& value) {
- name_value_block_[name.as_string()] = value.as_string();
- }
- SpdyNameValueBlock* mutable_name_value_block() {
- return &name_value_block_;
- }
-
- protected:
- explicit SpdyFrameWithNameValueBlockIR(SpdyStreamId stream_id);
- ~SpdyFrameWithNameValueBlockIR() override;
-
- private:
- SpdyNameValueBlock name_value_block_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithNameValueBlockIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyDataIR
- : public NON_EXPORTED_BASE(SpdyFrameWithFinIR) {
- public:
- // Performs deep copy on data.
- SpdyDataIR(SpdyStreamId stream_id, const base::StringPiece& data);
-
- // Use in conjunction with SetDataShallow() for shallow-copy on data.
- explicit SpdyDataIR(SpdyStreamId stream_id);
-
- ~SpdyDataIR() override;
-
- base::StringPiece data() const { return data_; }
-
- bool padded() const { return padded_; }
-
- int padding_payload_len() const { return padding_payload_len_; }
-
- void set_padding_len(int padding_len) {
- DCHECK_GT(padding_len, 0);
- DCHECK_LE(padding_len, kPaddingSizePerFrame);
- padded_ = true;
- // The pad field takes one octet on the wire.
- padding_payload_len_ = padding_len - 1;
- }
-
- // Deep-copy of data (keep private copy).
- void SetDataDeep(const base::StringPiece& data) {
- data_store_.reset(new std::string(data.data(), data.length()));
- data_ = *(data_store_.get());
- }
-
- // Shallow-copy of data (do not keep private copy).
- void SetDataShallow(const base::StringPiece& data) {
- data_store_.reset();
- data_ = data;
- }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- // Used to store data that this SpdyDataIR should own.
- scoped_ptr<std::string> data_store_;
- base::StringPiece data_;
-
- bool padded_;
- // padding_payload_len_ = desired padding length - len(padding length field).
- int padding_payload_len_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyDataIR);
-};
-
-class NET_EXPORT_PRIVATE SpdySynStreamIR
- : public SpdyFrameWithNameValueBlockIR {
- public:
- explicit SpdySynStreamIR(SpdyStreamId stream_id)
- : SpdyFrameWithNameValueBlockIR(stream_id),
- associated_to_stream_id_(0),
- priority_(0),
- unidirectional_(false) {}
- SpdyStreamId associated_to_stream_id() const {
- return associated_to_stream_id_;
- }
- void set_associated_to_stream_id(SpdyStreamId stream_id) {
- associated_to_stream_id_ = stream_id;
- }
- SpdyPriority priority() const { return priority_; }
- void set_priority(SpdyPriority priority) { priority_ = priority; }
- bool unidirectional() const { return unidirectional_; }
- void set_unidirectional(bool unidirectional) {
- unidirectional_ = unidirectional;
- }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- SpdyStreamId associated_to_stream_id_;
- SpdyPriority priority_;
- bool unidirectional_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdySynStreamIR);
-};
-
-class NET_EXPORT_PRIVATE SpdySynReplyIR : public SpdyFrameWithNameValueBlockIR {
- public:
- explicit SpdySynReplyIR(SpdyStreamId stream_id)
- : SpdyFrameWithNameValueBlockIR(stream_id) {}
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(SpdySynReplyIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyRstStreamIR : public SpdyFrameWithStreamIdIR {
- public:
- SpdyRstStreamIR(SpdyStreamId stream_id, SpdyRstStreamStatus status,
- base::StringPiece description);
-
- ~SpdyRstStreamIR() override;
-
- SpdyRstStreamStatus status() const {
- return status_;
- }
- void set_status(SpdyRstStreamStatus status) {
- status_ = status;
- }
-
- base::StringPiece description() const { return description_; }
-
- void set_description(base::StringPiece description) {
- description_ = description;
- }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- SpdyRstStreamStatus status_;
- base::StringPiece description_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyRstStreamIR);
-};
-
-class NET_EXPORT_PRIVATE SpdySettingsIR : public SpdyFrameIR {
- public:
- // Associates flags with a value.
- struct Value {
- Value() : persist_value(false),
- persisted(false),
- value(0) {}
- bool persist_value;
- bool persisted;
- int32 value;
- };
- typedef std::map<SpdySettingsIds, Value> ValueMap;
-
- SpdySettingsIR();
-
- ~SpdySettingsIR() override;
-
- // Overwrites as appropriate.
- const ValueMap& values() const { return values_; }
- void AddSetting(SpdySettingsIds id,
- bool persist_value,
- bool persisted,
- int32 value) {
- values_[id].persist_value = persist_value;
- values_[id].persisted = persisted;
- values_[id].value = value;
- }
-
- bool clear_settings() const { return clear_settings_; }
- void set_clear_settings(bool clear_settings) {
- clear_settings_ = clear_settings;
- }
- bool is_ack() const { return is_ack_; }
- void set_is_ack(bool is_ack) {
- is_ack_ = is_ack;
- }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- ValueMap values_;
- bool clear_settings_;
- bool is_ack_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdySettingsIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyPingIR : public SpdyFrameIR {
- public:
- explicit SpdyPingIR(SpdyPingId id) : id_(id), is_ack_(false) {}
- SpdyPingId id() const { return id_; }
-
- // ACK logic is valid only for SPDY versions 4 and above.
- bool is_ack() const { return is_ack_; }
- void set_is_ack(bool is_ack) { is_ack_ = is_ack; }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- SpdyPingId id_;
- bool is_ack_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyPingIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyGoAwayIR : public SpdyFrameIR {
- public:
- SpdyGoAwayIR(SpdyStreamId last_good_stream_id, SpdyGoAwayStatus status,
- const base::StringPiece& description);
- ~SpdyGoAwayIR() override;
- SpdyStreamId last_good_stream_id() const { return last_good_stream_id_; }
- void set_last_good_stream_id(SpdyStreamId last_good_stream_id) {
- DCHECK_LE(0u, last_good_stream_id);
- DCHECK_EQ(0u, last_good_stream_id & ~kStreamIdMask);
- last_good_stream_id_ = last_good_stream_id;
- }
- SpdyGoAwayStatus status() const { return status_; }
- void set_status(SpdyGoAwayStatus status) {
- // TODO(hkhalil): Check valid ranges of status?
- status_ = status;
- }
-
- const base::StringPiece& description() const;
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- SpdyStreamId last_good_stream_id_;
- SpdyGoAwayStatus status_;
- const base::StringPiece description_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyGoAwayIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyHeadersIR : public SpdyFrameWithNameValueBlockIR {
- public:
- explicit SpdyHeadersIR(SpdyStreamId stream_id)
- : SpdyFrameWithNameValueBlockIR(stream_id),
- has_priority_(false),
- priority_(0),
- padded_(false),
- padding_payload_len_(0) {}
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- bool has_priority() const { return has_priority_; }
- void set_has_priority(bool has_priority) { has_priority_ = has_priority; }
- uint32 priority() const { return priority_; }
- void set_priority(SpdyPriority priority) { priority_ = priority; }
-
- bool padded() const { return padded_; }
- int padding_payload_len() const { return padding_payload_len_; }
- void set_padding_len(int padding_len) {
- DCHECK_GT(padding_len, 0);
- DCHECK_LE(padding_len, kPaddingSizePerFrame);
- padded_ = true;
- // The pad field takes one octet on the wire.
- padding_payload_len_ = padding_len - 1;
- }
-
- private:
- bool has_priority_;
- // 31-bit priority.
- uint32 priority_;
-
- bool padded_;
- int padding_payload_len_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyHeadersIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyWindowUpdateIR : public SpdyFrameWithStreamIdIR {
- public:
- SpdyWindowUpdateIR(SpdyStreamId stream_id, int32 delta)
- : SpdyFrameWithStreamIdIR(stream_id) {
- set_delta(delta);
- }
- int32 delta() const { return delta_; }
- void set_delta(int32 delta) {
- DCHECK_LT(0, delta);
- DCHECK_LE(delta, kSpdyMaximumWindowSize);
- delta_ = delta;
- }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- int32 delta_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyWindowUpdateIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyBlockedIR
- : public NON_EXPORTED_BASE(SpdyFrameWithStreamIdIR) {
- public:
- explicit SpdyBlockedIR(SpdyStreamId stream_id)
- : SpdyFrameWithStreamIdIR(stream_id) {}
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(SpdyBlockedIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyPushPromiseIR
- : public SpdyFrameWithNameValueBlockIR {
- public:
- SpdyPushPromiseIR(SpdyStreamId stream_id, SpdyStreamId promised_stream_id)
- : SpdyFrameWithNameValueBlockIR(stream_id),
- promised_stream_id_(promised_stream_id),
- padded_(false),
- padding_payload_len_(0) {}
- SpdyStreamId promised_stream_id() const { return promised_stream_id_; }
- void set_promised_stream_id(SpdyStreamId id) { promised_stream_id_ = id; }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- bool padded() const { return padded_; }
- int padding_payload_len() const { return padding_payload_len_; }
- void set_padding_len(int padding_len) {
- DCHECK_GT(padding_len, 0);
- DCHECK_LE(padding_len, kPaddingSizePerFrame);
- padded_ = true;
- // The pad field takes one octet on the wire.
- padding_payload_len_ = padding_len - 1;
- }
-
- private:
- SpdyStreamId promised_stream_id_;
-
- bool padded_;
- int padding_payload_len_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdyPushPromiseIR);
-};
-
-// TODO(jgraettinger): This representation needs review. SpdyContinuationIR
-// needs to frame a portion of a single, arbitrarily-broken encoded buffer.
-class NET_EXPORT_PRIVATE SpdyContinuationIR
- : public SpdyFrameWithNameValueBlockIR {
- public:
- explicit SpdyContinuationIR(SpdyStreamId stream_id)
- : SpdyFrameWithNameValueBlockIR(stream_id),
- end_headers_(false) {}
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- bool end_headers() const { return end_headers_; }
- void set_end_headers(bool end_headers) {end_headers_ = end_headers;}
-
- private:
- bool end_headers_;
- DISALLOW_COPY_AND_ASSIGN(SpdyContinuationIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyAltSvcIR : public SpdyFrameWithStreamIdIR {
- public:
- explicit SpdyAltSvcIR(SpdyStreamId stream_id);
-
- uint32 max_age() const { return max_age_; }
- uint16 port() const { return port_; }
- SpdyProtocolId protocol_id() const {
- return protocol_id_;
- }
- std::string host() const { return host_; }
- std::string origin() const { return origin_; }
-
- void set_max_age(uint32 max_age) { max_age_ = max_age; }
- void set_port(uint16 port) { port_ = port; }
- void set_protocol_id(SpdyProtocolId protocol_id) {
- protocol_id_ = protocol_id;
- }
- void set_host(std::string host) { host_ = host; }
- void set_origin(std::string origin) { origin_ = origin; }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- uint32 max_age_;
- uint16 port_;
- SpdyProtocolId protocol_id_;
- std::string host_;
- std::string origin_;
- DISALLOW_COPY_AND_ASSIGN(SpdyAltSvcIR);
-};
-
-class NET_EXPORT_PRIVATE SpdyPriorityIR : public SpdyFrameWithStreamIdIR {
- public:
- explicit SpdyPriorityIR(SpdyStreamId stream_id);
- explicit SpdyPriorityIR(SpdyStreamId stream_id,
- SpdyStreamId parent_stream_id,
- uint8 weight,
- bool exclusive);
- SpdyStreamId parent_stream_id() const { return parent_stream_id_; }
- void set_parent_stream_id(SpdyStreamId id) { parent_stream_id_ = id; }
- uint8 weight() const { return weight_; }
- void set_weight(uint8 weight) { weight_ = weight; }
- bool exclusive() const { return exclusive_; }
- void set_exclusive(bool exclusive) { exclusive_ = exclusive; }
-
- void Visit(SpdyFrameVisitor* visitor) const override;
-
- private:
- SpdyStreamId parent_stream_id_;
- uint8 weight_;
- bool exclusive_;
- DISALLOW_COPY_AND_ASSIGN(SpdyPriorityIR);
-};
-
-// -------------------------------------------------------------------------
-// Wrapper classes for various SPDY frames.
-
-// All Spdy Frame types derive from this SpdyFrame class.
-class SpdyFrame {
- public:
- // Create a SpdyFrame using a pre-created buffer.
- // If |owns_buffer| is true, this class takes ownership of the buffer
- // and will delete it on cleanup. The buffer must have been created using
- // new char[].
- // If |owns_buffer| is false, the caller retains ownership of the buffer and
- // is responsible for making sure the buffer outlives this frame. In other
- // words, this class does NOT create a copy of the buffer.
- SpdyFrame(char* data, size_t size, bool owns_buffer)
- : frame_(data),
- size_(size),
- owns_buffer_(owns_buffer) {
- DCHECK(frame_);
- }
-
- ~SpdyFrame() {
- if (owns_buffer_) {
- delete [] frame_;
- }
- frame_ = NULL;
- }
-
- // Provides access to the frame bytes, which is a buffer containing
- // the frame packed as expected for sending over the wire.
- char* data() const { return frame_; }
-
- // Returns the actual size of the underlying buffer.
- size_t size() const { return size_; }
-
- protected:
- char* frame_;
-
- private:
- size_t size_;
- bool owns_buffer_;
- DISALLOW_COPY_AND_ASSIGN(SpdyFrame);
-};
-
-// This interface is for classes that want to process SpdyFrameIRs without
-// having to know what type they are. An instance of this interface can be
-// passed to a SpdyFrameIR's Visit method, and the appropriate type-specific
-// method of this class will be called.
-class SpdyFrameVisitor {
- public:
- virtual void VisitSynStream(const SpdySynStreamIR& syn_stream) = 0;
- virtual void VisitSynReply(const SpdySynReplyIR& syn_reply) = 0;
- virtual void VisitRstStream(const SpdyRstStreamIR& rst_stream) = 0;
- virtual void VisitSettings(const SpdySettingsIR& settings) = 0;
- virtual void VisitPing(const SpdyPingIR& ping) = 0;
- virtual void VisitGoAway(const SpdyGoAwayIR& goaway) = 0;
- virtual void VisitHeaders(const SpdyHeadersIR& headers) = 0;
- virtual void VisitWindowUpdate(const SpdyWindowUpdateIR& window_update) = 0;
- virtual void VisitBlocked(const SpdyBlockedIR& blocked) = 0;
- virtual void VisitPushPromise(const SpdyPushPromiseIR& push_promise) = 0;
- virtual void VisitContinuation(const SpdyContinuationIR& continuation) = 0;
- virtual void VisitAltSvc(const SpdyAltSvcIR& altsvc) = 0;
- virtual void VisitPriority(const SpdyPriorityIR& priority) = 0;
- virtual void VisitData(const SpdyDataIR& data) = 0;
-
- protected:
- SpdyFrameVisitor() {}
- virtual ~SpdyFrameVisitor() {}
-
- private:
- DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor);
-};
-
-} // namespace net
-
-#endif // NET_SPDY_SPDY_PROTOCOL_H_
« no previous file with comments | « net/spdy/spdy_priority_tree_test.cc ('k') | net/spdy/spdy_protocol.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698