Index: chrome/browser/net/chrome_network_delegate_unittest.cc |
diff --git a/chrome/browser/net/chrome_network_delegate_unittest.cc b/chrome/browser/net/chrome_network_delegate_unittest.cc |
index 07dac2b19e965c50faf880b3e67b9b782f461b8d..7efca38f5af39b9788e5fc51127e836a06ea4329 100644 |
--- a/chrome/browser/net/chrome_network_delegate_unittest.cc |
+++ b/chrome/browser/net/chrome_network_delegate_unittest.cc |
@@ -20,6 +20,7 @@ |
#include "chrome/test/base/testing_profile_manager.h" |
#include "components/content_settings/core/browser/cookie_settings.h" |
#include "components/content_settings/core/common/pref_names.h" |
+#include "components/data_usage/core/data_use_aggregator.h" |
#include "components/syncable_prefs/testing_pref_service_syncable.h" |
#include "content/public/browser/resource_request_info.h" |
#include "content/public/common/content_switches.h" |
@@ -89,6 +90,38 @@ void RequestURL(net::URLRequestContext* context, |
base::RunLoop().RunUntilIdle(); |
} |
+// A fake DataUseAggregator for testing that only counts how many times its |
+// respective methods have been called. |
+class FakeDataUseAggregator : public data_usage::DataUseAggregator { |
+ public: |
+ FakeDataUseAggregator() |
+ : num_report_data_use_calls_(0), |
+ num_report_off_the_record_data_use_calls_(0) {} |
+ |
+ ~FakeDataUseAggregator() override {} |
+ |
+ void ReportDataUse(const net::URLRequest& request, |
+ int tab_id, |
+ int64_t tx_bytes, |
+ int64_t rx_bytes) override { |
+ ++num_report_data_use_calls_; |
bengr
2015/10/06 19:30:28
Is this sufficient for testing? You could add the
sclittle
2015/10/07 01:07:55
Changed to keep track of the bytes. The main thing
|
+ } |
+ |
+ void ReportOffTheRecordDataUse(int64_t tx_bytes, int64_t rx_bytes) override { |
+ ++num_report_off_the_record_data_use_calls_; |
bengr
2015/10/06 19:30:28
Here too.
sclittle
2015/10/07 01:07:55
Changed this to keep track of the bytes too.
|
+ } |
+ |
+ int num_report_data_use_calls() const { return num_report_data_use_calls_; } |
+ |
+ int num_report_off_the_record_data_use_calls() const { |
+ return num_report_off_the_record_data_use_calls_; |
+ } |
+ |
+ private: |
+ int num_report_data_use_calls_; |
+ int num_report_off_the_record_data_use_calls_; |
+}; |
+ |
} // namespace |
class ChromeNetworkDelegateTest : public testing::Test { |
@@ -122,6 +155,10 @@ class ChromeNetworkDelegateTest : public testing::Test { |
net::NetworkDelegate* network_delegate() { return network_delegate_.get(); } |
net::MockClientSocketFactory* socket_factory() { return &socket_factory_; } |
+ ChromeNetworkDelegate* chrome_network_delegate() { |
+ return network_delegate_.get(); |
+ } |
+ |
extensions::EventRouterForwarder* forwarder() { |
#if defined(ENABLE_EXTENSIONS) |
return forwarder_.get(); |
@@ -138,7 +175,7 @@ class ChromeNetworkDelegateTest : public testing::Test { |
#endif |
TestingProfile profile_; |
BooleanPrefMember enable_referrers_; |
- scoped_ptr<net::NetworkDelegate> network_delegate_; |
+ scoped_ptr<ChromeNetworkDelegate> network_delegate_; |
net::MockClientSocketFactory socket_factory_; |
scoped_ptr<net::TestURLRequestContext> context_; |
}; |
@@ -247,6 +284,28 @@ TEST_F(ChromeNetworkDelegateTest, EnableFirstPartyOnlyCookiesIffFlagEnabled) { |
EXPECT_TRUE(network_delegate()->FirstPartyOnlyCookieExperimentEnabled()); |
} |
+TEST_F(ChromeNetworkDelegateTest, ReportDataUseToAggregator) { |
+ FakeDataUseAggregator fake_aggregator; |
+ Initialize(); |
+ |
+ chrome_network_delegate()->set_data_use_aggregator( |
+ &fake_aggregator, false /* is_data_usage_off_the_record */); |
+ RequestURL(context(), socket_factory(), true, false); |
+ EXPECT_GT(fake_aggregator.num_report_data_use_calls(), 0); |
+ EXPECT_EQ(0, fake_aggregator.num_report_off_the_record_data_use_calls()); |
+} |
+ |
+TEST_F(ChromeNetworkDelegateTest, ReportOffTheRecordDataUseToAggregator) { |
+ FakeDataUseAggregator fake_aggregator; |
+ Initialize(); |
+ |
+ chrome_network_delegate()->set_data_use_aggregator( |
+ &fake_aggregator, true /* is_data_usage_off_the_record */); |
+ RequestURL(context(), socket_factory(), true, false); |
+ EXPECT_EQ(0, fake_aggregator.num_report_data_use_calls()); |
+ EXPECT_GT(fake_aggregator.num_report_off_the_record_data_use_calls(), 0); |
+} |
+ |
class ChromeNetworkDelegateSafeSearchTest : public testing::Test { |
public: |
ChromeNetworkDelegateSafeSearchTest() |