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, |