Index: components/data_use_measurement/content/data_use_measurement_unittest.cc |
diff --git a/components/data_use_measurement/content/data_use_measurement_unittest.cc b/components/data_use_measurement/content/data_use_measurement_unittest.cc |
index a7c674d5a5f39a19c6e4ae2c8e11adbc8b56faf0..29b5717f9330b1f04139cc77f9a5e59f897ff706 100644 |
--- a/components/data_use_measurement/content/data_use_measurement_unittest.cc |
+++ b/components/data_use_measurement/content/data_use_measurement_unittest.cc |
@@ -38,9 +38,8 @@ class DataUseMeasurementTest : public testing::Test { |
net::NetworkChangeNotifier::GetConnectionType())); |
} |
- // Sends a request and reports data use attaching either user data or service |
- // data based on |is_user_request|. |
- void SendRequest(bool is_user_request) { |
+ // Creates a test request. |
+ std::unique_ptr<net::URLRequest> CreateTestRequest(bool is_user_request) { |
net::TestDelegate test_delegate; |
InitializeContext(); |
net::MockRead reads[] = {net::MockRead("HTTP/1.1 200 OK\r\n" |
@@ -66,7 +65,17 @@ class DataUseMeasurementTest : public testing::Test { |
request->Start(); |
base::RunLoop().RunUntilIdle(); |
+ return request; |
+ } |
+ // Sends a request and reports data use attaching either user data or service |
+ // data based on |is_user_request|. |
+ void SendRequest(bool is_user_request) { |
+ std::unique_ptr<net::URLRequest> request = |
+ CreateTestRequest(is_user_request); |
+ data_use_measurement_.OnBeforeURLRequest(request.get()); |
+ data_use_measurement_.OnNetworkBytesReceived(*request, 1000); |
+ data_use_measurement_.OnNetworkBytesSent(*request, 100); |
data_use_measurement_.OnCompleted(*request, true); |
} |
@@ -110,7 +119,7 @@ class DataUseMeasurementTest : public testing::Test { |
bool IsDataUseForwarderCalled() { return is_data_use_forwarder_called_; } |
- private: |
+ protected: |
void InitializeContext() { |
context_.reset(new net::TestURLRequestContext(true)); |
socket_factory_.reset(new net::MockClientSocketFactory()); |
@@ -166,4 +175,42 @@ TEST_F(DataUseMeasurementTest, DataUseForwarderIsCalled) { |
EXPECT_TRUE(IsDataUseForwarderCalled()); |
} |
+#if defined(OS_ANDROID) |
+TEST_F(DataUseMeasurementTest, AppStateUnknown) { |
+ base::HistogramTester histogram_tester; |
+ std::unique_ptr<net::URLRequest> request = CreateTestRequest(false); |
+ data_use_measurement_.OnBeforeURLRequest(request.get()); |
+ |
+ { |
+ base::HistogramTester histogram_tester; |
+ data_use_measurement()->OnApplicationStateChangeForTesting( |
+ base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); |
+ data_use_measurement_.OnNetworkBytesSent(*request, 100); |
+ data_use_measurement_.OnNetworkBytesReceived(*request, 1000); |
+ histogram_tester.ExpectTotalCount( |
+ "DataUse.TrafficSize.User.Downstream.Foreground." + kConnectionType, 1); |
+ histogram_tester.ExpectTotalCount( |
+ "DataUse.TrafficSize.User.Upstream.Foreground." + kConnectionType, 1); |
+ } |
+ |
+ { |
+ base::HistogramTester histogram_tester; |
+ data_use_measurement()->OnApplicationStateChangeForTesting( |
+ base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES); |
+ data_use_measurement_.OnNetworkBytesReceived(*request, 1000); |
+ histogram_tester.ExpectTotalCount( |
+ "DataUse.TrafficSize.User.Downstream.Unknown." + kConnectionType, 1); |
+ } |
+ |
+ { |
+ base::HistogramTester histogram_tester; |
+ data_use_measurement()->OnApplicationStateChangeForTesting( |
+ base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES); |
+ data_use_measurement_.OnNetworkBytesReceived(*request, 1000); |
+ histogram_tester.ExpectTotalCount( |
+ "DataUse.TrafficSize.User.Downstream.Background." + kConnectionType, 1); |
+ } |
+} |
+#endif |
+ |
} // namespace data_use_measurement |