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

Side by Side Diff: chrome/browser/android/data_usage/tab_data_use_entry.cc

Issue 2624663002: Changed uses of deque to vector in chrome/browser/android/data_usage. (Closed)
Patch Set: fix bad math Created 3 years, 11 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/data_usage/tab_data_use_entry.h" 5 #include "chrome/browser/android/data_usage/tab_data_use_entry.h"
6 6
7 #include "base/gtest_prod_util.h" 7 #include "base/gtest_prod_util.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 return false; 122 return false;
123 } 123 }
124 124
125 bool TabDataUseEntry::IsTrackingDataUse() const { 125 bool TabDataUseEntry::IsTrackingDataUse() const {
126 TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin(); 126 TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin();
127 if (back_iterator == sessions_.rend()) 127 if (back_iterator == sessions_.rend())
128 return false; 128 return false;
129 return back_iterator->end_time.is_null(); 129 return back_iterator->end_time.is_null();
130 } 130 }
131 131
132 const base::TimeTicks TabDataUseEntry::GetLatestStartOrEndTime() const { 132 base::TimeTicks TabDataUseEntry::GetLatestStartOrEndTime() const {
133 TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin(); 133 TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin();
134 if (back_iterator == sessions_.rend()) 134 if (back_iterator == sessions_.rend())
135 return base::TimeTicks(); // No tab session found. 135 return base::TimeTicks(); // No tab session found.
136 if (!back_iterator->end_time.is_null()) 136 if (!back_iterator->end_time.is_null())
137 return back_iterator->end_time; 137 return back_iterator->end_time;
138 138
139 DCHECK(!back_iterator->start_time.is_null()); 139 DCHECK(!back_iterator->start_time.is_null());
140 return back_iterator->start_time; 140 return back_iterator->start_time;
141 } 141 }
142 142
143 const std::string TabDataUseEntry::GetActiveTrackingSessionLabel() const { 143 std::string TabDataUseEntry::GetActiveTrackingSessionLabel() const {
144 TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin(); 144 TabSessions::const_reverse_iterator back_iterator = sessions_.rbegin();
145 if (back_iterator == sessions_.rend() || !IsTrackingDataUse()) 145 if (back_iterator == sessions_.rend() || !IsTrackingDataUse())
146 return std::string(); 146 return std::string();
147 return back_iterator->label; 147 return back_iterator->label;
148 } 148 }
149 149
150 void TabDataUseEntry::set_custom_tab_package_match( 150 void TabDataUseEntry::set_custom_tab_package_match(
151 bool is_custom_tab_package_match) { 151 bool is_custom_tab_package_match) {
152 DCHECK(IsTrackingDataUse()); 152 DCHECK(IsTrackingDataUse());
153 DCHECK(!GetActiveTrackingSessionLabel().empty()); 153 DCHECK(!GetActiveTrackingSessionLabel().empty());
154 is_custom_tab_package_match_ = is_custom_tab_package_match; 154 is_custom_tab_package_match_ = is_custom_tab_package_match;
155 } 155 }
156 156
157 void TabDataUseEntry::CompactSessionHistory() { 157 void TabDataUseEntry::CompactSessionHistory() {
158 while (sessions_.size() > tab_model_->max_sessions_per_tab()) { 158 if (sessions_.size() <= tab_model_->max_sessions_per_tab())
159 const auto& front = sessions_.front(); 159 return;
160 DCHECK(!front.end_time.is_null()); 160
161 const auto end_it = sessions_.begin() +
162 (sessions_.size() - tab_model_->max_sessions_per_tab());
163
164 for (auto it = sessions_.begin(); it != end_it; ++it) {
165 DCHECK(!it->end_time.is_null());
161 // Track how often old sessions are lost. 166 // Track how often old sessions are lost.
162 UMA_HISTOGRAM_CUSTOM_TIMES(kUMAOldInactiveSessionRemovalDurationHistogram, 167 UMA_HISTOGRAM_CUSTOM_TIMES(kUMAOldInactiveSessionRemovalDurationHistogram,
163 tab_model_->NowTicks() - front.end_time, 168 tab_model_->NowTicks() - it->end_time,
164 base::TimeDelta::FromSeconds(1), 169 base::TimeDelta::FromSeconds(1),
165 base::TimeDelta::FromHours(1), 50); 170 base::TimeDelta::FromHours(1), 50);
166 sessions_.pop_front();
167 } 171 }
172
173 sessions_.erase(sessions_.begin(), end_it);
168 } 174 }
169 175
170 } // namespace android 176 } // namespace android
171 177
172 } // namespace chrome 178 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698