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

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

Issue 1811173002: DataUseTabModel should check the URL to differentiate history navigation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed tbansal comments 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 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/data_use_ui_tab_model.h" 5 #include "chrome/browser/android/data_usage/data_use_ui_tab_model.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/common/url_constants.h"
10 #include "content/public/browser/browser_thread.h" 11 #include "content/public/browser/browser_thread.h"
11 #include "url/gurl.h" 12 #include "url/gurl.h"
12 13
13 namespace chrome { 14 namespace chrome {
14 15
15 namespace android { 16 namespace android {
16 17
17 DataUseUITabModel::DataUseUITabModel() : weak_factory_(this) { 18 DataUseUITabModel::DataUseUITabModel() : weak_factory_(this) {
18 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 19 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
19 } 20 }
20 21
21 DataUseUITabModel::~DataUseUITabModel() { 22 DataUseUITabModel::~DataUseUITabModel() {
22 DCHECK(thread_checker_.CalledOnValidThread()); 23 DCHECK(thread_checker_.CalledOnValidThread());
23 24
24 if (data_use_tab_model_) 25 if (data_use_tab_model_)
25 data_use_tab_model_->RemoveObserver(this); 26 data_use_tab_model_->RemoveObserver(this);
26 } 27 }
27 28
28 void DataUseUITabModel::ReportBrowserNavigation( 29 void DataUseUITabModel::ReportBrowserNavigation(
29 const GURL& gurl, 30 const GURL& gurl,
30 ui::PageTransition page_transition, 31 ui::PageTransition page_transition,
31 SessionID::id_type tab_id) const { 32 SessionID::id_type tab_id) const {
32 DCHECK(thread_checker_.CalledOnValidThread()); 33 DCHECK(thread_checker_.CalledOnValidThread());
33 DCHECK_LE(0, tab_id); 34 DCHECK_LE(0, tab_id);
34 35
35 DataUseTabModel::TransitionType transition_type; 36 DataUseTabModel::TransitionType transition_type;
36 37
37 if (data_use_tab_model_ && 38 if (data_use_tab_model_ &&
38 ConvertTransitionType(page_transition, &transition_type)) { 39 ConvertTransitionType(page_transition, gurl, &transition_type)) {
39 data_use_tab_model_->OnNavigationEvent(tab_id, transition_type, gurl, 40 data_use_tab_model_->OnNavigationEvent(tab_id, transition_type, gurl,
40 std::string()); 41 std::string());
41 } 42 }
42 } 43 }
43 44
44 void DataUseUITabModel::ReportTabClosure(SessionID::id_type tab_id) { 45 void DataUseUITabModel::ReportTabClosure(SessionID::id_type tab_id) {
45 DCHECK(thread_checker_.CalledOnValidThread()); 46 DCHECK(thread_checker_.CalledOnValidThread());
46 DCHECK_LE(0, tab_id); 47 DCHECK_LE(0, tab_id);
47 if (data_use_tab_model_) 48 if (data_use_tab_model_)
48 data_use_tab_model_->OnTabCloseEvent(tab_id); 49 data_use_tab_model_->OnTabCloseEvent(tab_id);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 DCHECK(thread_checker_.CalledOnValidThread()); 143 DCHECK(thread_checker_.CalledOnValidThread());
143 144
144 TabEvents::const_iterator it = tab_events_.find(tab_id); 145 TabEvents::const_iterator it = tab_events_.find(tab_id);
145 146
146 if (it != tab_events_.end() && it->second == DATA_USE_CONTINUE_CLICKED) 147 if (it != tab_events_.end() && it->second == DATA_USE_CONTINUE_CLICKED)
147 return false; 148 return false;
148 149
149 DataUseTabModel::TransitionType transition_type; 150 DataUseTabModel::TransitionType transition_type;
150 151
151 if (!ConvertTransitionType(ui::PageTransitionFromInt(page_transition), 152 if (!ConvertTransitionType(ui::PageTransitionFromInt(page_transition),
152 &transition_type)) { 153 GURL(url), &transition_type)) {
153 return false; 154 return false;
154 } 155 }
155 156
156 if (!data_use_tab_model_) 157 if (!data_use_tab_model_)
157 return false; 158 return false;
158 159
159 return data_use_tab_model_->WouldNavigationEventEndTracking( 160 return data_use_tab_model_->WouldNavigationEventEndTracking(
160 tab_id, transition_type, GURL(url)); 161 tab_id, transition_type, GURL(url));
161 } 162 }
162 163
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 198
198 if (it->second == event) { 199 if (it->second == event) {
199 tab_events_.erase(it); 200 tab_events_.erase(it);
200 return true; 201 return true;
201 } 202 }
202 return false; 203 return false;
203 } 204 }
204 205
205 bool DataUseUITabModel::ConvertTransitionType( 206 bool DataUseUITabModel::ConvertTransitionType(
206 ui::PageTransition page_transition, 207 ui::PageTransition page_transition,
208 const GURL& gurl,
207 DataUseTabModel::TransitionType* transition_type) const { 209 DataUseTabModel::TransitionType* transition_type) const {
208 DCHECK(thread_checker_.CalledOnValidThread()); 210 DCHECK(thread_checker_.CalledOnValidThread());
209 211
210 if (!ui::PageTransitionIsMainFrame(page_transition) || 212 if (!ui::PageTransitionIsMainFrame(page_transition) ||
211 (((page_transition & ui::PAGE_TRANSITION_CORE_MASK) != 213 (((page_transition & ui::PAGE_TRANSITION_CORE_MASK) !=
212 ui::PAGE_TRANSITION_RELOAD) && 214 ui::PAGE_TRANSITION_RELOAD) &&
213 !ui::PageTransitionIsNewNavigation(page_transition))) { 215 !ui::PageTransitionIsNewNavigation(page_transition))) {
214 return false; 216 return false;
215 } 217 }
216 218
217 switch (page_transition & ui::PAGE_TRANSITION_CORE_MASK) { 219 switch (page_transition & ui::PAGE_TRANSITION_CORE_MASK) {
218 case ui::PAGE_TRANSITION_LINK: 220 case ui::PAGE_TRANSITION_LINK:
219 if ((page_transition & ui::PAGE_TRANSITION_FROM_API) != 0) { 221 if ((page_transition & ui::PAGE_TRANSITION_FROM_API) != 0) {
220 // Clicking on bookmarks. 222 // Clicking on bookmarks.
221 *transition_type = DataUseTabModel::TRANSITION_BOOKMARK; 223 *transition_type = DataUseTabModel::TRANSITION_BOOKMARK;
222 return true; 224 return true;
223 } 225 }
224 // Newtab, clicking on a link. 226 // Newtab, clicking on a link.
225 *transition_type = DataUseTabModel::TRANSITION_LINK; 227 *transition_type = DataUseTabModel::TRANSITION_LINK;
226 return true; 228 return true;
227 case ui::PAGE_TRANSITION_TYPED: 229 case ui::PAGE_TRANSITION_TYPED:
228 *transition_type = DataUseTabModel::TRANSITION_OMNIBOX_NAVIGATION; 230 *transition_type = DataUseTabModel::TRANSITION_OMNIBOX_NAVIGATION;
229 return true; 231 return true;
230 case ui::PAGE_TRANSITION_AUTO_BOOKMARK: 232 case ui::PAGE_TRANSITION_AUTO_BOOKMARK:
231 // Auto bookmark from newtab page. 233 // Auto bookmark from newtab page.
232 *transition_type = DataUseTabModel::TRANSITION_BOOKMARK; 234 *transition_type = DataUseTabModel::TRANSITION_BOOKMARK;
233 return true; 235 return true;
234 case ui::PAGE_TRANSITION_AUTO_TOPLEVEL: 236 case ui::PAGE_TRANSITION_AUTO_TOPLEVEL:
235 // History menu. 237 if (gurl == GURL(kChromeUIHistoryFrameURL) ||
236 *transition_type = DataUseTabModel::TRANSITION_HISTORY_ITEM; 238 gurl == GURL(kChromeUIHistoryURL)) {
237 return true; 239 // History menu.
240 *transition_type = DataUseTabModel::TRANSITION_HISTORY_ITEM;
241 return true;
242 }
243 return false;
238 case ui::PAGE_TRANSITION_GENERATED: 244 case ui::PAGE_TRANSITION_GENERATED:
239 // Omnibox search (e.g., searching for "tacos"). 245 // Omnibox search (e.g., searching for "tacos").
240 *transition_type = DataUseTabModel::TRANSITION_OMNIBOX_SEARCH; 246 *transition_type = DataUseTabModel::TRANSITION_OMNIBOX_SEARCH;
241 return true; 247 return true;
242 case ui::PAGE_TRANSITION_RELOAD: 248 case ui::PAGE_TRANSITION_RELOAD:
243 if ((page_transition & ui::PAGE_TRANSITION_FORWARD_BACK) == 0) { 249 if ((page_transition & ui::PAGE_TRANSITION_FORWARD_BACK) == 0) {
244 // Restored tabs or user reloaded the page. 250 // Restored tabs or user reloaded the page.
245 // TODO(rajendrant): Handle only the tab restore case. We are only 251 // TODO(rajendrant): Handle only the tab restore case. We are only
246 // interested in that. 252 // interested in that.
247 *transition_type = DataUseTabModel::TRANSITION_RELOAD; 253 *transition_type = DataUseTabModel::TRANSITION_RELOAD;
248 return true; 254 return true;
249 } 255 }
250 return false; 256 return false;
251 default: 257 default:
252 return false; 258 return false;
253 } 259 }
254 } 260 }
255 261
256 } // namespace android 262 } // namespace android
257 263
258 } // namespace chrome 264 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698