diff options
Diffstat (limited to 'net/http')
-rw-r--r-- | net/http/http_request_headers.cc | 7 | ||||
-rw-r--r-- | net/http/http_request_headers.h | 6 | ||||
-rw-r--r-- | net/http/http_request_headers_unittest.cc | 8 |
3 files changed, 21 insertions, 0 deletions
diff --git a/net/http/http_request_headers.cc b/net/http/http_request_headers.cc index fc2ebcd..93ead01 100644 --- a/net/http/http_request_headers.cc +++ b/net/http/http_request_headers.cc @@ -76,6 +76,13 @@ void HttpRequestHeaders::Clear() { headers_.clear(); } +void HttpRequestHeaders::SetHeaderIfMissing(const base::StringPiece& key, + const base::StringPiece& value) { + HeaderVector::iterator it = FindHeader(key); + if (it == headers_.end()) + headers_.push_back(HeaderKeyValuePair(key.as_string(), value.as_string())); +} + void HttpRequestHeaders::SetHeader(const base::StringPiece& key, const base::StringPiece& value) { HeaderVector::iterator it = FindHeader(key); diff --git a/net/http/http_request_headers.h b/net/http/http_request_headers.h index 734194a..2962ae2 100644 --- a/net/http/http_request_headers.h +++ b/net/http/http_request_headers.h @@ -95,6 +95,12 @@ class HttpRequestHeaders { // in the vector remains the same. When comparing |key|, case is ignored. void SetHeader(const base::StringPiece& key, const base::StringPiece& value); + // Sets the header value pair for |key| and |value|, if |key| does not exist. + // If |key| already exists, the call is a no-op. + // When comparing |key|, case is ignored. + void SetHeaderIfMissing(const base::StringPiece& key, + const base::StringPiece& value); + // Removes the first header that matches (case insensitive) |key|. void RemoveHeader(const base::StringPiece& key); diff --git a/net/http/http_request_headers_unittest.cc b/net/http/http_request_headers_unittest.cc index f3abfbe2..384ceeb 100644 --- a/net/http/http_request_headers_unittest.cc +++ b/net/http/http_request_headers_unittest.cc @@ -67,6 +67,14 @@ TEST(HttpRequestHeaders, SetEmptyHeader) { EXPECT_EQ("Foo: Bar\r\nBar:\r\n\r\n", headers.ToString()); } +TEST(HttpRequestHeaders, SetHeaderIfMissing) { + HttpRequestHeaders headers; + headers.SetHeaderIfMissing("Foo", "Bar"); + EXPECT_EQ("Foo: Bar\r\n\r\n", headers.ToString()); + headers.SetHeaderIfMissing("Foo", "Baz"); + EXPECT_EQ("Foo: Bar\r\n\r\n", headers.ToString()); +} + TEST(HttpRequestHeaders, RemoveHeader) { HttpRequestHeaders headers; headers.SetHeader("Foo", "bar"); |