| Index: chrome/browser/android/data_usage/tab_data_use_entry.h
|
| diff --git a/chrome/browser/android/data_usage/tab_data_use_entry.h b/chrome/browser/android/data_usage/tab_data_use_entry.h
|
| index f2b90dce91076dbf7a24ba20c2b8a0d1fb7acdce..effa99f198697f0ae8c8567119f8b4f9ec304455 100644
|
| --- a/chrome/browser/android/data_usage/tab_data_use_entry.h
|
| +++ b/chrome/browser/android/data_usage/tab_data_use_entry.h
|
| @@ -5,8 +5,8 @@
|
| #ifndef CHROME_BROWSER_ANDROID_DATA_USAGE_TAB_DATA_USE_ENTRY_H_
|
| #define CHROME_BROWSER_ANDROID_DATA_USAGE_TAB_DATA_USE_ENTRY_H_
|
|
|
| -#include <deque>
|
| #include <string>
|
| +#include <vector>
|
|
|
| #include "base/gtest_prod_util.h"
|
| #include "base/macros.h"
|
| @@ -26,10 +26,10 @@ struct TabDataUseTrackingSession {
|
| : label(label), start_time(start_time) {}
|
|
|
| // Tracking label to be associated with the data usage of this session.
|
| - const std::string label;
|
| + std::string label;
|
|
|
| // Time the data use tracking session started.
|
| - const base::TimeTicks start_time;
|
| + base::TimeTicks start_time;
|
|
|
| // Time the data use tracking session ended. |end_time| will be null if the
|
| // tracking session is currently active.
|
| @@ -81,11 +81,11 @@ class TabDataUseEntry {
|
|
|
| // Returns the latest time a tracking session was started or ended. Returned
|
| // time will be null if no tracking session was ever started or ended.
|
| - const base::TimeTicks GetLatestStartOrEndTime() const;
|
| + base::TimeTicks GetLatestStartOrEndTime() const;
|
|
|
| // Returns the tracking label for the active tracking session. Empty string is
|
| // returned if tracking session is not active.
|
| - const std::string GetActiveTrackingSessionLabel() const;
|
| + std::string GetActiveTrackingSessionLabel() const;
|
|
|
| bool is_custom_tab_package_match() const {
|
| return is_custom_tab_package_match_;
|
| @@ -101,7 +101,11 @@ class TabDataUseEntry {
|
| ExpiredInactiveTabEntryRemovaltimeHistogram);
|
| FRIEND_TEST_ALL_PREFIXES(DataUseTabModelTest, TabCloseEvent);
|
|
|
| - typedef std::deque<TabDataUseTrackingSession> TabSessions;
|
| + // This is a std::vector instead of a std::deque because std::deque is
|
| + // inefficient for small numbers of elements (see crbug/674287). By default,
|
| + // at most 5 sessions are tracked at a time per tab, so erasing from the front
|
| + // of the vector is cheap anyways.
|
| + typedef std::vector<TabDataUseTrackingSession> TabSessions;
|
|
|
| // Compacts the history of tracking sessions by removing oldest sessions to
|
| // keep the size of |sessions_| within |kMaxSessionsPerTab| entries.
|
|
|