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

Unified Diff: chrome/browser/android/data_usage/external_data_use_observer_unittest.cc

Issue 1544633002: Submit buffered data use reports when Chromium is backgrounded (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nits Created 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/android/data_usage/external_data_use_observer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
diff --git a/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc b/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
index 11b9e285a7d8562914e52791b37ee624a7a3aec3..6c2405f7fdb5f721e6baa56fedaa1c3ce103408c 100644
--- a/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
+++ b/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
@@ -375,7 +375,7 @@ TEST_F(ExternalDataUseObserverTest, PeriodicFetchMatchingRules) {
external_data_use_observer()->fetch_matching_rules_duration_);
}
-// Tests if data use reports are sent only after the total bytes send/received
+// Tests if data use reports are sent only after the total bytes sent/received
// across all buffered reports have reached the specified threshold.
TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) {
AddDefaultMatchingRule();
@@ -396,7 +396,7 @@ TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) {
if (i != num_iterations - 1) {
// Total buffered bytes is less than the minimum threshold. Data use
- // report should not be send.
+ // report should not be sent.
EXPECT_TRUE(external_data_use_observer()
->last_data_report_submitted_ticks_.is_null());
EXPECT_EQ(static_cast<int64_t>(i + 1),
@@ -440,6 +440,63 @@ TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) {
external_data_use_observer()->data_use_report_min_bytes_, 1);
}
+#if defined(OS_ANDROID)
+// Tests data use report submission when application status callback is called.
+// Report should be submitted even if the number of bytes is less than the
+// threshold. Report should not be submitted if there is a pending report.
+TEST_F(ExternalDataUseObserverTest, DataUseReportingOnApplicationStatusChange) {
+ AddDefaultMatchingRule();
+ TriggerTabTrackingOnDefaultTab();
+
+ // Report with less than threshold bytes should be reported, on application
+ // state change to background.
+ data_usage::DataUse data_use = default_data_use();
+ data_use.tx_bytes = 1;
+ data_use.rx_bytes = 1;
+ OnDataUse(data_use);
+ EXPECT_TRUE(external_data_use_observer()
+ ->last_data_report_submitted_ticks_.is_null());
+ EXPECT_EQ(2, external_data_use_observer()->total_bytes_buffered_);
+ EXPECT_EQ(0, external_data_use_observer()->pending_report_bytes_);
+
+ external_data_use_observer()->OnApplicationStateChange(
+ base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES);
+ EXPECT_FALSE(external_data_use_observer()
+ ->last_data_report_submitted_ticks_.is_null());
+ EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_);
+ EXPECT_EQ(2, external_data_use_observer()->pending_report_bytes_);
+ external_data_use_observer()->OnReportDataUseDone(true);
+
+ // Create pending report.
+ OnDataUse(default_data_use());
+ EXPECT_FALSE(external_data_use_observer()
+ ->last_data_report_submitted_ticks_.is_null());
+ EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_);
+ EXPECT_EQ(default_upload_bytes() + default_download_bytes(),
+ external_data_use_observer()->pending_report_bytes_);
+
+ // Application state change should not submit if there is a pending report.
+ data_use.tx_bytes = 1;
+ data_use.rx_bytes = 1;
+ OnDataUse(data_use);
+ external_data_use_observer()->OnApplicationStateChange(
+ base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES);
+ EXPECT_FALSE(external_data_use_observer()
+ ->last_data_report_submitted_ticks_.is_null());
+ EXPECT_EQ(2, external_data_use_observer()->total_bytes_buffered_);
+ EXPECT_EQ(default_upload_bytes() + default_download_bytes(),
+ external_data_use_observer()->pending_report_bytes_);
+
+ // Once pending report submission done callback was received, report should be
+ // submitted on next application state change.
+ external_data_use_observer()->OnReportDataUseDone(true);
+ external_data_use_observer()->OnApplicationStateChange(
+ base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES);
+ EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_);
+ EXPECT_EQ(2, external_data_use_observer()->pending_report_bytes_);
+}
+#endif // OS_ANDROID
+
// Tests if the parameters from the field trial are populated correctly.
TEST_F(ExternalDataUseObserverTest, Variations) {
std::map<std::string, std::string> variation_params;
« no previous file with comments | « chrome/browser/android/data_usage/external_data_use_observer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698