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

Unified Diff: chrome/browser/android/data_usage/data_use_tab_model.h

Issue 1837223002: Buffer UI navigation events in DataUseTabModel until rule fetch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/data_usage/data_use_tab_model.h
diff --git a/chrome/browser/android/data_usage/data_use_tab_model.h b/chrome/browser/android/data_usage/data_use_tab_model.h
index 2d71ffac0dde7f3d96058f6f58d090ee694ed49b..16e14c7840be9cef02039ed805aa9092a372bafd 100644
--- a/chrome/browser/android/data_usage/data_use_tab_model.h
+++ b/chrome/browser/android/data_usage/data_use_tab_model.h
@@ -193,9 +193,27 @@ class DataUseTabModel {
UnexpiredTabEntryRemovaltimeHistogram);
FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest,
MatchingRuleFetchOnControlAppInstall);
+ FRIEND_TEST_ALL_PREFIXES(ExternalDataUseObserverTest,
+ ProcessBufferedNavigationEvents);
typedef base::hash_map<SessionID::id_type, TabDataUseEntry> TabEntryMap;
+ // Contains the details of a single UI navigation event.
+ struct DataUseUINavigationEvent {
tbansal1 2016/03/29 16:20:41 Methods should come before fields.
Raj 2016/03/29 18:03:21 Done.
+ SessionID::id_type tab_id;
tbansal1 2016/03/29 16:20:41 can these fields be all const?
Raj 2016/03/29 18:03:20 Done.
+ TransitionType transition_type;
+ GURL url;
+ std::string package;
+ DataUseUINavigationEvent(SessionID::id_type tab_id,
+ TransitionType transition_type,
+ GURL url,
+ std::string package)
+ : tab_id(tab_id),
+ transition_type(transition_type),
+ url(url),
+ package(package) {}
+ };
+
// Gets the current label of a tab, and the new label if a navigation event
// occurs in the tab. |tab_id| is the source tab of the generated event,
// |transition| indicates the type of the UI event/transition, |url| is the
@@ -231,6 +249,8 @@ class DataUseTabModel {
// size is |kMaxTabEntries|.
void CompactTabEntries();
+ void ProcessBufferedNavigationEvents();
tbansal1 2016/03/29 16:20:41 function comments please.
Raj 2016/03/29 18:03:21 Done.
+
// Collection of observers that receive tracking session start and end
// notifications. Notifications are posted on UI thread.
base::ObserverList<TabDataUseObserver> observers_;
@@ -258,6 +278,15 @@ class DataUseTabModel {
// True if the external control app is installed.
bool is_control_app_installed_;
+ // Buffers the list of UI navigation events that occurred until the first rule
tbansal1 2016/03/29 16:20:41 s/Buffers the list of/Buffer of/?
Raj 2016/03/29 18:03:21 Done.
+ // fetch is complete or the control app not installed callback was received or
+ // until |kDefaultMaxNavigationEventsBuffered| navigation events were
+ // buffered, whichever occurs first. Existence of the vector in scoped_ptr
+ // indicates if the UI navigation events need to be buffered. If the
+ // scoped_ptr contains a vector all navigation events will be added to it.
+ // Otherwise all navigation events will be processed immediately.
+ scoped_ptr<std::vector<DataUseUINavigationEvent>> data_use_ui_navigations_;
+
base::ThreadChecker thread_checker_;
base::WeakPtrFactory<DataUseTabModel> weak_factory_;

Powered by Google App Engine
This is Rietveld 408576698