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

Side by Side Diff: components/data_use_measurement/core/data_use_network_delegate_unittest.cc

Issue 2595503002: Record the data use by content type (Closed)
Patch Set: fixed nits Created 3 years, 12 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/data_use_measurement/core/data_use_network_delegate.h" 5 #include "components/data_use_measurement/core/data_use_network_delegate.h"
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/test/histogram_tester.h" 9 #include "base/test/histogram_tester.h"
10 #include "components/data_use_measurement/core/data_use_ascriber.h" 10 #include "components/data_use_measurement/core/data_use_ascriber.h"
11 #include "components/data_use_measurement/core/url_request_classifier.h" 11 #include "components/data_use_measurement/core/url_request_classifier.h"
12 #include "components/metrics/data_use_tracker.h" 12 #include "components/metrics/data_use_tracker.h"
13 #include "net/socket/socket_test_util.h" 13 #include "net/socket/socket_test_util.h"
14 #include "net/url_request/url_request.h" 14 #include "net/url_request/url_request.h"
15 #include "net/url_request/url_request_test_util.h" 15 #include "net/url_request/url_request_test_util.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "url/gurl.h" 17 #include "url/gurl.h"
18 18
19 namespace data_use_measurement { 19 namespace data_use_measurement {
20 20
21 namespace { 21 namespace {
22 22
23 class UserRequestUserDataForTesting : public base::SupportsUserData::Data, 23 class TestURLRequestClassifier : public base::SupportsUserData::Data,
24 public URLRequestClassifier { 24 public URLRequestClassifier {
25 public: 25 public:
26 static const void* const kUserDataKey; 26 static const void* const kUserDataKey;
27 27
28 bool IsUserRequest(const net::URLRequest& request) const override { 28 bool IsUserRequest(const net::URLRequest& request) const override {
29 return request.GetUserData(kUserDataKey) != nullptr; 29 return request.GetUserData(kUserDataKey) != nullptr;
30 } 30 }
31 31
32 static void MarkAsUserRequest(net::URLRequest* request) { 32 static void MarkAsUserRequest(net::URLRequest* request) {
33 request->SetUserData(kUserDataKey, new UserRequestUserDataForTesting()); 33 request->SetUserData(kUserDataKey, new TestURLRequestClassifier());
34 }
35
36 DataUseUserData::DataUseContentType GetContentType(
37 const net::URLRequest& request,
38 const net::HttpResponseHeaders& response_headers) const override {
39 return DataUseUserData::OTHER;
34 } 40 }
35 }; 41 };
36 42
37 class TestDataUseAscriber : public DataUseAscriber { 43 class TestDataUseAscriber : public DataUseAscriber {
38 public: 44 public:
39 TestDataUseAscriber() {} 45 TestDataUseAscriber() {}
40 46
41 DataUseRecorder* GetOrCreateDataUseRecorder( 47 DataUseRecorder* GetOrCreateDataUseRecorder(
42 net::URLRequest* request) override { 48 net::URLRequest* request) override {
43 return nullptr; 49 return nullptr;
44 } 50 }
45 DataUseRecorder* GetDataUseRecorder(const net::URLRequest& request) override { 51 DataUseRecorder* GetDataUseRecorder(const net::URLRequest& request) override {
46 return nullptr; 52 return nullptr;
47 } 53 }
48 54
49 std::unique_ptr<URLRequestClassifier> CreateURLRequestClassifier() 55 std::unique_ptr<URLRequestClassifier> CreateURLRequestClassifier()
50 const override { 56 const override {
51 return nullptr; 57 return nullptr;
52 } 58 }
53 }; 59 };
54 60
55 // static 61 // static
56 const void* const UserRequestUserDataForTesting::kUserDataKey = 62 const void* const TestURLRequestClassifier::kUserDataKey =
57 &UserRequestUserDataForTesting::kUserDataKey; 63 &TestURLRequestClassifier::kUserDataKey;
58 64
59 // This function requests a URL, and makes it return a known response. If 65 // This function requests a URL, and makes it return a known response. If
60 // |from_user| is true, it attaches a ResourceRequestInfo to the URLRequest, 66 // |from_user| is true, it attaches a ResourceRequestInfo to the URLRequest,
61 // because requests from users have this info. If |from_user| is false, the 67 // because requests from users have this info. If |from_user| is false, the
62 // request is presumed to be from a service, and the service name is set in the 68 // request is presumed to be from a service, and the service name is set in the
63 // request's user data. (As an example suggestions service tag is attached). if 69 // request's user data. (As an example suggestions service tag is attached). if
64 // |redirect| is true, it adds necessary socket data to have it follow redirect 70 // |redirect| is true, it adds necessary socket data to have it follow redirect
65 // before getting the final response. 71 // before getting the final response.
66 std::unique_ptr<net::URLRequest> RequestURL( 72 std::unique_ptr<net::URLRequest> RequestURL(
67 net::URLRequestContext* context, 73 net::URLRequestContext* context,
(...skipping 16 matching lines...) Expand all
84 }; 90 };
85 net::StaticSocketDataProvider response_socket_data_provider( 91 net::StaticSocketDataProvider response_socket_data_provider(
86 response_mock_reads, arraysize(response_mock_reads), nullptr, 0); 92 response_mock_reads, arraysize(response_mock_reads), nullptr, 0);
87 socket_factory->AddSocketDataProvider(&response_socket_data_provider); 93 socket_factory->AddSocketDataProvider(&response_socket_data_provider);
88 net::TestDelegate test_delegate; 94 net::TestDelegate test_delegate;
89 test_delegate.set_quit_on_complete(true); 95 test_delegate.set_quit_on_complete(true);
90 std::unique_ptr<net::URLRequest> request(context->CreateRequest( 96 std::unique_ptr<net::URLRequest> request(context->CreateRequest(
91 GURL("http://example.com"), net::DEFAULT_PRIORITY, &test_delegate)); 97 GURL("http://example.com"), net::DEFAULT_PRIORITY, &test_delegate));
92 98
93 if (from_user) { 99 if (from_user) {
94 UserRequestUserDataForTesting::MarkAsUserRequest(request.get()); 100 TestURLRequestClassifier::MarkAsUserRequest(request.get());
95 } else { 101 } else {
96 request->SetUserData( 102 request->SetUserData(
97 data_use_measurement::DataUseUserData::kUserDataKey, 103 data_use_measurement::DataUseUserData::kUserDataKey,
98 new data_use_measurement::DataUseUserData( 104 new data_use_measurement::DataUseUserData(
99 data_use_measurement::DataUseUserData::SUGGESTIONS, 105 data_use_measurement::DataUseUserData::SUGGESTIONS,
100 data_use_measurement::DataUseUserData::FOREGROUND)); 106 data_use_measurement::DataUseUserData::FOREGROUND));
101 } 107 }
102 request->Start(); 108 request->Start();
103 base::RunLoop().RunUntilIdle(); 109 base::RunLoop().RunUntilIdle();
104 return request; 110 return request;
105 } 111 }
106 112
107 class DataUseNetworkDelegateTest : public testing::Test { 113 class DataUseNetworkDelegateTest : public testing::Test {
108 public: 114 public:
109 DataUseNetworkDelegateTest() 115 DataUseNetworkDelegateTest()
110 : context_(true), 116 : context_(true),
111 data_use_network_delegate_( 117 data_use_network_delegate_(base::MakeUnique<net::TestNetworkDelegate>(),
112 base::MakeUnique<net::TestNetworkDelegate>(), 118 &test_data_use_ascriber_,
113 &test_data_use_ascriber_, 119 base::MakeUnique<TestURLRequestClassifier>(),
114 base::MakeUnique<UserRequestUserDataForTesting>(), 120 metrics::UpdateUsagePrefCallbackType()) {
115 metrics::UpdateUsagePrefCallbackType()) {
116 context_.set_client_socket_factory(&mock_socket_factory_); 121 context_.set_client_socket_factory(&mock_socket_factory_);
117 context_.set_network_delegate(&data_use_network_delegate_); 122 context_.set_network_delegate(&data_use_network_delegate_);
118 context_.Init(); 123 context_.Init();
119 } 124 }
120 125
121 net::TestURLRequestContext* context() { return &context_; } 126 net::TestURLRequestContext* context() { return &context_; }
122 net::MockClientSocketFactory* socket_factory() { 127 net::MockClientSocketFactory* socket_factory() {
123 return &mock_socket_factory_; 128 return &mock_socket_factory_;
124 } 129 }
125 130
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 histogram_tester.ExpectTotalCount( 232 histogram_tester.ExpectTotalCount(
228 "DataUse.TrafficSize.System.Downstream.Foreground.NotCellular", 0); 233 "DataUse.TrafficSize.System.Downstream.Foreground.NotCellular", 0);
229 histogram_tester.ExpectTotalCount( 234 histogram_tester.ExpectTotalCount(
230 "DataUse.TrafficSize.System.Upstream.Foreground.NotCellular", 0); 235 "DataUse.TrafficSize.System.Upstream.Foreground.NotCellular", 0);
231 histogram_tester.ExpectTotalCount("DataUse.MessageSize.Suggestions", 0); 236 histogram_tester.ExpectTotalCount("DataUse.MessageSize.Suggestions", 0);
232 } 237 }
233 238
234 } // namespace 239 } // namespace
235 240
236 } // namespace data_use_measurement 241 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698