Index: chrome/browser/android/data_usage/external_data_use_observer.h |
diff --git a/chrome/browser/android/data_usage/external_data_use_observer.h b/chrome/browser/android/data_usage/external_data_use_observer.h |
index ab8cee60926afc2047a34f52581764b505eed098..0e15f18167be595be626758c34c0c307b1d57369 100644 |
--- a/chrome/browser/android/data_usage/external_data_use_observer.h |
+++ b/chrome/browser/android/data_usage/external_data_use_observer.h |
@@ -22,6 +22,10 @@ |
#include "components/data_usage/core/data_use_aggregator.h" |
#include "net/base/network_change_notifier.h" |
+#if defined(OS_ANDROID) |
+#include "base/android/application_status_listener.h" |
+#endif |
+ |
namespace base { |
class SingleThreadTaskRunner; |
} |
@@ -90,6 +94,10 @@ class ExternalDataUseObserver : public data_usage::DataUseAggregator::Observer { |
FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest, BufferDataUseReports); |
FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest, BufferSize); |
FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest, DataUseReportTimedOut); |
+#if defined(OS_ANDROID) |
+ FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest, |
+ DataUseReportingOnApplicationStatusChange); |
+#endif |
FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest, HashFunction); |
FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest, MultipleMatchingRules); |
FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest, |
@@ -191,8 +199,16 @@ class ExternalDataUseObserver : public data_usage::DataUseAggregator::Observer { |
// |buffered_data_reports_|. Since an unordered map is used to buffer the |
// reports, the order of reports may change. The reports are buffered in an |
// arbitrary order and there are no guarantees that the next report to be |
- // submitted is the oldest one buffered. |
- void SubmitBufferedDataUseReport(); |
+ // submitted is the oldest one buffered. |immediate| indicates whether to |
+ // submit the report immediately or to wait until |data_use_report_min_bytes_| |
+ // unreported bytes are buffered. |
+ void SubmitBufferedDataUseReport(bool immediate); |
+ |
+#if defined(OS_ANDROID) |
+ // Called whenever the application transitions from foreground to background |
+ // or vice versa. |
+ void OnApplicationStateChange(base::android::ApplicationState new_state); |
+#endif |
// Aggregator that sends data use observations to |this|. |
data_usage::DataUseAggregator* data_use_aggregator_; |
@@ -243,6 +259,12 @@ class ExternalDataUseObserver : public data_usage::DataUseAggregator::Observer { |
// duration, it is considered as timed out. |
const base::TimeDelta data_report_submit_timeout_; |
+#if defined(OS_ANDROID) |
+ // Listens to when Chromium gets backgrounded and submits buffered data use |
+ // reports. |
+ scoped_ptr<base::android::ApplicationStatusListener> app_state_listener_; |
+#endif |
+ |
// True if |this| is currently registered as a data use observer. |
bool registered_as_data_use_observer_; |