Chromium Code Reviews| Index: chrome/browser/android/data_usage/external_data_use_observer.cc |
| diff --git a/chrome/browser/android/data_usage/external_data_use_observer.cc b/chrome/browser/android/data_usage/external_data_use_observer.cc |
| index 2146b7e1fd0d19c155245a4f8d1288a37a38b6de..cfc7de18312ca3f07fd702dd5eab0e7a99447547 100644 |
| --- a/chrome/browser/android/data_usage/external_data_use_observer.cc |
| +++ b/chrome/browser/android/data_usage/external_data_use_observer.cc |
| @@ -146,6 +146,11 @@ ExternalDataUseObserver::ExternalDataUseObserver( |
| data_use_report_min_bytes_(GetMinBytes()), |
| data_report_submit_timeout_( |
| base::TimeDelta::FromMilliseconds(GetDataReportSubmitTimeoutMsec())), |
| +#if defined(OS_ANDROID) |
| + app_state_listener_(new base::android::ApplicationStatusListener( |
| + base::Bind(&ExternalDataUseObserver::OnApplicationStateChange, |
| + base::Unretained(this)))), |
| +#endif |
| registered_as_data_use_observer_(false), |
| weak_factory_(this) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| @@ -204,9 +209,18 @@ void ExternalDataUseObserver::OnReportDataUseDone(bool success) { |
| last_data_report_submitted_ticks_ = base::TimeTicks(); |
| pending_report_bytes_ = 0; |
| - SubmitBufferedDataUseReport(); |
| + SubmitBufferedDataUseReport(false); |
| } |
| +#if defined(OS_ANDROID) |
| +void ExternalDataUseObserver::OnApplicationStateChange( |
| + base::android::ApplicationState new_state) { |
|
tbansal1
2015/12/21 21:03:24
DCHECK(thread_checker...);
Raj
2015/12/29 23:17:35
Done.
|
| + if (new_state == base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES) { |
|
tbansal1
2015/12/21 21:03:24
braces not required.
Raj
2015/12/29 23:17:35
Done.
|
| + SubmitBufferedDataUseReport(true); |
| + } |
| +} |
| +#endif |
| + |
| void ExternalDataUseObserver::OnDataUse(const data_usage::DataUse& data_use) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| DCHECK(registered_as_data_use_observer_); |
| @@ -270,7 +284,7 @@ void ExternalDataUseObserver::DataUseLabelApplied( |
| return; |
| BufferDataUseReport(data_use, *label, start_time, end_time); |
| - SubmitBufferedDataUseReport(); |
| + SubmitBufferedDataUseReport(false); |
| } |
| void ExternalDataUseObserver::BufferDataUseReport( |
| @@ -320,7 +334,7 @@ void ExternalDataUseObserver::BufferDataUseReport( |
| DCHECK_LE(buffered_data_reports_.size(), kMaxBufferSize); |
| } |
| -void ExternalDataUseObserver::SubmitBufferedDataUseReport() { |
| +void ExternalDataUseObserver::SubmitBufferedDataUseReport(bool immediate) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| const base::TimeTicks ticks_now = base::TimeTicks::Now(); |
| @@ -336,7 +350,7 @@ void ExternalDataUseObserver::SubmitBufferedDataUseReport() { |
| if (buffered_data_reports_.empty()) |
| return; |
| - if (total_bytes_buffered_ < data_use_report_min_bytes_) |
| + if (!immediate && total_bytes_buffered_ < data_use_report_min_bytes_) |
| return; |
| if (!last_data_report_submitted_ticks_.is_null()) { |