| Index: net/spdy/spdy_framer_test.cc
|
| diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
|
| index 623ad506a4d8547ec50bb3edc8ba01a4a4adc8b2..039f4de87093b7ed6bfd315f5d838cb68b326be1 100644
|
| --- a/net/spdy/spdy_framer_test.cc
|
| +++ b/net/spdy/spdy_framer_test.cc
|
| @@ -568,18 +568,6 @@ class SpdyFramerTest : public ::testing::TestWithParam<SpdyMajorVersion> {
|
| return true;
|
| }
|
|
|
| - void AddSpdySettingFromWireFormat(SettingsMap* settings,
|
| - uint32 key,
|
| - uint32 value) {
|
| - SettingsFlagsAndId flags_and_id =
|
| - SettingsFlagsAndId::FromWireFormat(spdy_version_, key);
|
| - SpdySettingsIds id = static_cast<SpdySettingsIds>(flags_and_id.id());
|
| - SpdySettingsFlags flags =
|
| - static_cast<SpdySettingsFlags>(flags_and_id.flags());
|
| - CHECK(settings->find(id) == settings->end());
|
| - settings->insert(std::make_pair(id, SettingsFlagsAndValue(flags, value)));
|
| - }
|
| -
|
| bool IsSpdy2() { return spdy_version_ == SPDY2; }
|
| bool IsSpdy3() { return spdy_version_ == SPDY3; }
|
| bool IsSpdy4() { return spdy_version_ == SPDY4; }
|
| @@ -2216,20 +2204,20 @@ TEST_P(SpdyFramerTest, CreateSettings) {
|
| 0x80, spdy_version_ch_, 0x00, 0x04,
|
| 0x00, 0x00, 0x00, 0x0c,
|
| 0x00, 0x00, 0x00, 0x01,
|
| - 0x04, 0x03, 0x02, 0x01,
|
| + 0x07, 0x00, 0x00, 0x01,
|
| 0x0a, 0x0b, 0x0c, 0x0d,
|
| };
|
| const unsigned char kV3FrameData[] = {
|
| 0x80, spdy_version_ch_, 0x00, 0x04,
|
| 0x00, 0x00, 0x00, 0x0c,
|
| 0x00, 0x00, 0x00, 0x01,
|
| - 0x01, 0x02, 0x03, 0x04,
|
| + 0x01, 0x00, 0x00, 0x07,
|
| 0x0a, 0x0b, 0x0c, 0x0d,
|
| };
|
| const unsigned char kV4FrameData[] = {
|
| 0x00, 0x05, 0x04, 0x00,
|
| 0x00, 0x00, 0x00, 0x00,
|
| - 0x01, 0x0a, 0x0b, 0x0c,
|
| + 0x04, 0x0a, 0x0b, 0x0c,
|
| 0x0d,
|
| };
|
|
|
| @@ -2237,10 +2225,7 @@ TEST_P(SpdyFramerTest, CreateSettings) {
|
| SpdySettingsIR settings_ir;
|
|
|
| SpdySettingsFlags kFlags = static_cast<SpdySettingsFlags>(0x01);
|
| - SpdySettingsIds kId = static_cast<SpdySettingsIds>(0x020304);
|
| - if (IsSpdy4()) {
|
| - kId = static_cast<SpdySettingsIds>(0x01);
|
| - }
|
| + SpdySettingsIds kId = SETTINGS_INITIAL_WINDOW_SIZE;
|
| SettingsMap settings;
|
| settings[kId] = SettingsFlagsAndValue(kFlags, kValue);
|
| EXPECT_EQ(kFlags, settings[kId].first);
|
| @@ -2263,66 +2248,73 @@ TEST_P(SpdyFramerTest, CreateSettings) {
|
| {
|
| const char kDescription[] = "Basic SETTINGS frame";
|
|
|
| - SettingsMap settings;
|
| - AddSpdySettingFromWireFormat(
|
| - &settings, 0x00000000, 0x00000001); // 1st Setting
|
| - AddSpdySettingFromWireFormat(
|
| - &settings, 0x01000001, 0x00000002); // 2nd Setting
|
| - AddSpdySettingFromWireFormat(
|
| - &settings, 0x02000002, 0x00000003); // 3rd Setting
|
| - AddSpdySettingFromWireFormat(
|
| - &settings, 0x03000003, 0xff000004); // 4th Setting
|
| -
|
| - const unsigned char kV3FrameData[] = { // Also applies for V2.
|
| + const unsigned char kV2FrameData[] = {
|
| 0x80, spdy_version_ch_, 0x00, 0x04,
|
| 0x00, 0x00, 0x00, 0x24,
|
| 0x00, 0x00, 0x00, 0x04,
|
| - 0x00, 0x00, 0x00, 0x00, // 1st Setting
|
| - 0x00, 0x00, 0x00, 0x01,
|
| - 0x01, 0x00, 0x00, 0x01, // 2nd Setting
|
| - 0x00, 0x00, 0x00, 0x02,
|
| - 0x02, 0x00, 0x00, 0x02, // 3rd Setting
|
| - 0x00, 0x00, 0x00, 0x03,
|
| - 0x03, 0x00, 0x00, 0x03, // 4th Setting
|
| - 0xff, 0x00, 0x00, 0x04,
|
| + 0x01, 0x00, 0x00, 0x00, // 1st Setting
|
| + 0x00, 0x00, 0x00, 0x05,
|
| + 0x02, 0x00, 0x00, 0x00, // 2nd Setting
|
| + 0x00, 0x00, 0x00, 0x06,
|
| + 0x03, 0x00, 0x00, 0x00, // 3rd Setting
|
| + 0x00, 0x00, 0x00, 0x07,
|
| + 0x04, 0x00, 0x00, 0x00, // 4th Setting
|
| + 0x00, 0x00, 0x00, 0x08,
|
| + };
|
| + const unsigned char kV3FrameData[] = {
|
| + 0x80, spdy_version_ch_, 0x00, 0x04,
|
| + 0x00, 0x00, 0x00, 0x24,
|
| + 0x00, 0x00, 0x00, 0x04,
|
| + 0x00, 0x00, 0x00, 0x01, // 1st Setting
|
| + 0x00, 0x00, 0x00, 0x05,
|
| + 0x00, 0x00, 0x00, 0x02, // 2nd Setting
|
| + 0x00, 0x00, 0x00, 0x06,
|
| + 0x00, 0x00, 0x00, 0x03, // 3rd Setting
|
| + 0x00, 0x00, 0x00, 0x07,
|
| + 0x00, 0x00, 0x00, 0x04, // 4th Setting
|
| + 0x00, 0x00, 0x00, 0x08,
|
| };
|
| + // These end up seemingly out of order because of the way that our internal
|
| + // ordering for settings_ir works. HTTP2 has no requirement on ordering on
|
| + // the wire.
|
| const unsigned char kV4FrameData[] = {
|
| 0x00, 0x14, 0x04, 0x00,
|
| 0x00, 0x00, 0x00, 0x00,
|
| - 0x01, // 1st Setting
|
| - 0x00, 0x00, 0x00, 0x01,
|
| - 0x02, // 2nd Setting
|
| - 0x00, 0x00, 0x00, 0x02,
|
| 0x03, // 3rd Setting
|
| - 0x00, 0x00, 0x00, 0x03,
|
| + 0x00, 0x00, 0x00, 0x07,
|
| 0x04, // 4th Setting
|
| - 0xff, 0x00, 0x00, 0x04,
|
| + 0x00, 0x00, 0x00, 0x08,
|
| + 0x01, // 1st Setting
|
| + 0x00, 0x00, 0x00, 0x05,
|
| + 0x02, // 2nd Setting
|
| + 0x00, 0x00, 0x00, 0x06,
|
| };
|
| +
|
| SpdySettingsIR settings_ir;
|
| - if (!IsSpdy4()) {
|
| - for (SettingsMap::const_iterator it = settings.begin();
|
| - it != settings.end();
|
| - ++it) {
|
| - settings_ir.AddSetting(it->first,
|
| - it->second.first & SETTINGS_FLAG_PLEASE_PERSIST,
|
| - it->second.first & SETTINGS_FLAG_PERSISTED,
|
| - it->second.second);
|
| - }
|
| - } else {
|
| - SpdySettingsIds kId = static_cast<SpdySettingsIds>(0x01);
|
| - settings_ir.AddSetting(kId, 0, 0, 0x00000001);
|
| - kId = static_cast<SpdySettingsIds>(0x02);
|
| - settings_ir.AddSetting(kId, 0, 0, 0x00000002);
|
| - kId = static_cast<SpdySettingsIds>(0x03);
|
| - settings_ir.AddSetting(kId, 0, 0, 0x00000003);
|
| - kId = static_cast<SpdySettingsIds>(0x04);
|
| - settings_ir.AddSetting(kId, 0, 0, 0xff000004);
|
| - }
|
| + settings_ir.AddSetting(SpdyConstants::ParseSettingId(spdy_version_, 1),
|
| + false, // persist
|
| + false, // persisted
|
| + 5);
|
| + settings_ir.AddSetting(SpdyConstants::ParseSettingId(spdy_version_, 2),
|
| + false, // persist
|
| + false, // persisted
|
| + 6);
|
| + settings_ir.AddSetting(SpdyConstants::ParseSettingId(spdy_version_, 3),
|
| + false, // persist
|
| + false, // persisted
|
| + 7);
|
| + settings_ir.AddSetting(SpdyConstants::ParseSettingId(spdy_version_, 4),
|
| + false, // persist
|
| + false, // persisted
|
| + 8);
|
| scoped_ptr<SpdyFrame> frame(framer.SerializeSettings(settings_ir));
|
| - if (IsSpdy4()) {
|
| - CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
|
| - } else {
|
| +
|
| + if (IsSpdy2()) {
|
| + CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData));
|
| + } else if (IsSpdy3()) {
|
| CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
|
| + } else {
|
| + CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
|
| }
|
| }
|
|
|
| @@ -3110,11 +3102,8 @@ TEST_P(SpdyFramerTest, ReadBogusLenSettingsFrame) {
|
|
|
| // Add a setting to pad the frame so that we don't get a buffer overflow when
|
| // calling SimulateInFramer() below.
|
| - SettingsMap settings;
|
| - settings[SETTINGS_UPLOAD_BANDWIDTH] =
|
| - SettingsFlagsAndValue(SETTINGS_FLAG_PLEASE_PERSIST, 0x00000002);
|
| - settings_ir.AddSetting(SETTINGS_UPLOAD_BANDWIDTH,
|
| - true, // please persist
|
| + settings_ir.AddSetting(SETTINGS_INITIAL_WINDOW_SIZE,
|
| + false,
|
| false,
|
| 0x00000002);
|
| scoped_ptr<SpdyFrame> control_frame(framer.SerializeSettings(settings_ir));
|
| @@ -3134,22 +3123,18 @@ TEST_P(SpdyFramerTest, ReadBogusLenSettingsFrame) {
|
| TEST_P(SpdyFramerTest, ReadLargeSettingsFrame) {
|
| SpdyFramer framer(spdy_version_);
|
| SpdySettingsIR settings_ir;
|
| - SettingsMap settings;
|
| -
|
| - SpdySettingsFlags flags = SETTINGS_FLAG_PLEASE_PERSIST;
|
| - settings[SETTINGS_UPLOAD_BANDWIDTH] =
|
| - SettingsFlagsAndValue(flags, 0x00000002);
|
| - settings[SETTINGS_DOWNLOAD_BANDWIDTH] =
|
| - SettingsFlagsAndValue(flags, 0x00000003);
|
| - settings[SETTINGS_ROUND_TRIP_TIME] = SettingsFlagsAndValue(flags, 0x00000004);
|
| - for (SettingsMap::const_iterator it = settings.begin();
|
| - it != settings.end();
|
| - ++it) {
|
| - settings_ir.AddSetting(it->first,
|
| - it->second.first & SETTINGS_FLAG_PLEASE_PERSIST,
|
| - it->second.first & SETTINGS_FLAG_PERSISTED,
|
| - it->second.second);
|
| - }
|
| + settings_ir.AddSetting(SpdyConstants::ParseSettingId(spdy_version_, 1),
|
| + false, // persist
|
| + false, // persisted
|
| + 5);
|
| + settings_ir.AddSetting(SpdyConstants::ParseSettingId(spdy_version_, 2),
|
| + false, // persist
|
| + false, // persisted
|
| + 6);
|
| + settings_ir.AddSetting(SpdyConstants::ParseSettingId(spdy_version_, 3),
|
| + false, // persist
|
| + false, // persisted
|
| + 7);
|
|
|
| scoped_ptr<SpdyFrame> control_frame(framer.SerializeSettings(settings_ir));
|
| EXPECT_LT(SpdyFramer::kControlFrameBufferSize,
|
|
|