OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |