Index: chrome/browser/android/data_usage/tab_data_use_entry.cc |
diff --git a/chrome/browser/android/data_usage/tab_data_use_entry.cc b/chrome/browser/android/data_usage/tab_data_use_entry.cc |
index ff7681f2ea3da9f577f24b76d3151f7516d21a67..e3d2f1e7d87487f17ce369b11c8a2fd8b7307c28 100644 |
--- a/chrome/browser/android/data_usage/tab_data_use_entry.cc |
+++ b/chrome/browser/android/data_usage/tab_data_use_entry.cc |
@@ -129,7 +129,7 @@ bool TabDataUseEntry::IsTrackingDataUse() const { |
return back_iterator->end_time.is_null(); |
} |
-const base::TimeTicks TabDataUseEntry::GetLatestStartOrEndTime() const { |
+base::TimeTicks TabDataUseEntry::GetLatestStartOrEndTime() const { |
TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin(); |
if (back_iterator == sessions_.rend()) |
return base::TimeTicks(); // No tab session found. |
@@ -140,7 +140,7 @@ const base::TimeTicks TabDataUseEntry::GetLatestStartOrEndTime() const { |
return back_iterator->start_time; |
} |
-const std::string TabDataUseEntry::GetActiveTrackingSessionLabel() const { |
+std::string TabDataUseEntry::GetActiveTrackingSessionLabel() const { |
TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin(); |
if (back_iterator == sessions_.rend() || !IsTrackingDataUse()) |
return std::string(); |
@@ -155,16 +155,22 @@ void TabDataUseEntry::set_custom_tab_package_match( |
} |
void TabDataUseEntry::CompactSessionHistory() { |
- while (sessions_.size() > tab_model_->max_sessions_per_tab()) { |
- const auto& front = sessions_.front(); |
- DCHECK(!front.end_time.is_null()); |
+ if (sessions_.size() <= tab_model_->max_sessions_per_tab()) |
+ return; |
+ |
+ const auto end_it = sessions_.begin() + |
+ (sessions_.size() - tab_model_->max_sessions_per_tab()); |
+ |
+ for (auto it = sessions_.begin(); it != end_it; ++it) { |
+ DCHECK(!it->end_time.is_null()); |
// Track how often old sessions are lost. |
UMA_HISTOGRAM_CUSTOM_TIMES(kUMAOldInactiveSessionRemovalDurationHistogram, |
- tab_model_->NowTicks() - front.end_time, |
+ tab_model_->NowTicks() - it->end_time, |
base::TimeDelta::FromSeconds(1), |
base::TimeDelta::FromHours(1), 50); |
- sessions_.pop_front(); |
} |
+ |
+ sessions_.erase(sessions_.begin(), end_it); |
} |
} // namespace android |