Commit 9e2c51a1 authored by Ramin Halavati's avatar Ramin Halavati Committed by Commit Bot

Pass annotation in HttpBasicStream::SendRequest().

Network traffic annotation that is received in HttpRequestInfo in
HttpBasicStream::InitializeStream is stored and passed in
HttpBasicStream::SendRequest.

Bug: 656607
Change-Id: I376032e31f6a4b22a45f099944990f15fcbb53c9
Reviewed-on: https://chromium-review.googlesource.com/911668
Commit-Queue: Ramin Halavati <rhalavati@chromium.org>
Reviewed-by: default avatarRyan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#536672}
parent 52f11054
...@@ -38,6 +38,7 @@ void HttpBasicState::Initialize(const HttpRequestInfo* request_info, ...@@ -38,6 +38,7 @@ void HttpBasicState::Initialize(const HttpRequestInfo* request_info,
const NetLogWithSource& net_log) { const NetLogWithSource& net_log) {
DCHECK(!parser_.get()); DCHECK(!parser_.get());
url_ = request_info->url; url_ = request_info->url;
traffic_annotation_ = request_info->traffic_annotation;
request_method_ = request_info->method; request_method_ = request_info->method;
parser_.reset(new HttpStreamParser( parser_.reset(new HttpStreamParser(
connection_.get(), request_info, read_buf_.get(), net_log)); connection_.get(), request_info, read_buf_.get(), net_log));
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "net/base/net_export.h" #include "net/base/net_export.h"
#include "net/base/request_priority.h" #include "net/base/request_priority.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "url/gurl.h" #include "url/gurl.h"
namespace net { namespace net {
...@@ -60,6 +61,10 @@ class NET_EXPORT_PRIVATE HttpBasicState { ...@@ -60,6 +61,10 @@ class NET_EXPORT_PRIVATE HttpBasicState {
// values of request_info_ and using_proxy_. // values of request_info_ and using_proxy_.
std::string GenerateRequestLine() const; std::string GenerateRequestLine() const;
MutableNetworkTrafficAnnotationTag traffic_annotation() {
return traffic_annotation_;
}
private: private:
scoped_refptr<GrowableIOBuffer> read_buf_; scoped_refptr<GrowableIOBuffer> read_buf_;
...@@ -76,6 +81,8 @@ class NET_EXPORT_PRIVATE HttpBasicState { ...@@ -76,6 +81,8 @@ class NET_EXPORT_PRIVATE HttpBasicState {
GURL url_; GURL url_;
std::string request_method_; std::string request_method_;
MutableNetworkTrafficAnnotationTag traffic_annotation_;
DISALLOW_COPY_AND_ASSIGN(HttpBasicState); DISALLOW_COPY_AND_ASSIGN(HttpBasicState);
}; };
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "net/http/http_request_info.h" #include "net/http/http_request_info.h"
#include "net/log/net_log_with_source.h" #include "net/log/net_log_with_source.h"
#include "net/socket/client_socket_handle.h" #include "net/socket/client_socket_handle.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace net { namespace net {
...@@ -49,6 +50,16 @@ TEST(HttpBasicStateTest, InitializeWorks) { ...@@ -49,6 +50,16 @@ TEST(HttpBasicStateTest, InitializeWorks) {
EXPECT_TRUE(state.parser()); EXPECT_TRUE(state.parser());
} }
TEST(HttpBasicStateTest, TrafficAnnotationStored) {
HttpBasicState state(std::make_unique<ClientSocketHandle>(), false, false);
HttpRequestInfo request_info;
request_info.traffic_annotation =
MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS);
state.Initialize(&request_info, false, LOW, NetLogWithSource());
EXPECT_EQ(TRAFFIC_ANNOTATION_FOR_TESTS,
NetworkTrafficAnnotationTag(state.traffic_annotation()));
}
TEST(HttpBasicStateTest, DeleteParser) { TEST(HttpBasicStateTest, DeleteParser) {
HttpBasicState state(std::make_unique<ClientSocketHandle>(), false, false); HttpBasicState state(std::make_unique<ClientSocketHandle>(), false, false);
const HttpRequestInfo request_info; const HttpRequestInfo request_info;
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "net/http/http_response_body_drainer.h" #include "net/http/http_response_body_drainer.h"
#include "net/http/http_stream_parser.h" #include "net/http/http_stream_parser.h"
#include "net/socket/client_socket_handle.h" #include "net/socket/client_socket_handle.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
namespace net { namespace net {
...@@ -29,6 +28,7 @@ int HttpBasicStream::InitializeStream(const HttpRequestInfo* request_info, ...@@ -29,6 +28,7 @@ int HttpBasicStream::InitializeStream(const HttpRequestInfo* request_info,
RequestPriority priority, RequestPriority priority,
const NetLogWithSource& net_log, const NetLogWithSource& net_log,
CompletionOnceCallback callback) { CompletionOnceCallback callback) {
DCHECK(request_info->traffic_annotation.is_valid());
state_.Initialize(request_info, can_send_early, priority, net_log); state_.Initialize(request_info, can_send_early, priority, net_log);
return OK; return OK;
} }
...@@ -44,10 +44,10 @@ int HttpBasicStream::SendRequest(const HttpRequestHeaders& headers, ...@@ -44,10 +44,10 @@ int HttpBasicStream::SendRequest(const HttpRequestHeaders& headers,
raw_headers.Add(it.name(), it.value()); raw_headers.Add(it.name(), it.value());
request_headers_callback_.Run(std::move(raw_headers)); request_headers_callback_.Run(std::move(raw_headers));
} }
// TODO(crbug.com/656607): Add propoer annotation. return parser()->SendRequest(
return parser()->SendRequest(state_.GenerateRequestLine(), headers, state_.GenerateRequestLine(), headers,
NO_TRAFFIC_ANNOTATION_BUG_656607, response, NetworkTrafficAnnotationTag(state_.traffic_annotation()), response,
std::move(callback)); std::move(callback));
} }
int HttpBasicStream::ReadResponseHeaders(CompletionOnceCallback callback) { int HttpBasicStream::ReadResponseHeaders(CompletionOnceCallback callback) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment