Chromium Code Reviews| 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)) { |
|
tbansal1
2016/03/17 23:16:53
why not kChromeUIHistoryURL?
Raj
2016/03/18 00:45:49
Added kChromeUIHistoryURL as well. It is weird. Cl
| |
| 236 *transition_type = DataUseTabModel::TRANSITION_HISTORY_ITEM; | 238 // History menu. |
| 237 return true; | 239 *transition_type = DataUseTabModel::TRANSITION_HISTORY_ITEM; |
| 240 return true; | |
| 241 } | |
| 242 return false; | |
| 238 case ui::PAGE_TRANSITION_GENERATED: | 243 case ui::PAGE_TRANSITION_GENERATED: |
| 239 // Omnibox search (e.g., searching for "tacos"). | 244 // Omnibox search (e.g., searching for "tacos"). |
| 240 *transition_type = DataUseTabModel::TRANSITION_OMNIBOX_SEARCH; | 245 *transition_type = DataUseTabModel::TRANSITION_OMNIBOX_SEARCH; |
| 241 return true; | 246 return true; |
| 242 case ui::PAGE_TRANSITION_RELOAD: | 247 case ui::PAGE_TRANSITION_RELOAD: |
| 243 if ((page_transition & ui::PAGE_TRANSITION_FORWARD_BACK) == 0) { | 248 if ((page_transition & ui::PAGE_TRANSITION_FORWARD_BACK) == 0) { |
| 244 // Restored tabs or user reloaded the page. | 249 // Restored tabs or user reloaded the page. |
| 245 // TODO(rajendrant): Handle only the tab restore case. We are only | 250 // TODO(rajendrant): Handle only the tab restore case. We are only |
| 246 // interested in that. | 251 // interested in that. |
| 247 *transition_type = DataUseTabModel::TRANSITION_RELOAD; | 252 *transition_type = DataUseTabModel::TRANSITION_RELOAD; |
| 248 return true; | 253 return true; |
| 249 } | 254 } |
| 250 return false; | 255 return false; |
| 251 default: | 256 default: |
| 252 return false; | 257 return false; |
| 253 } | 258 } |
| 254 } | 259 } |
| 255 | 260 |
| 256 } // namespace android | 261 } // namespace android |
| 257 | 262 |
| 258 } // namespace chrome | 263 } // namespace chrome |
| OLD | NEW |