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

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

Issue 1539763004: Miscellaneous fixes to DataUse UI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated Created 5 years 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 "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 // Clear out local state. 55 // Clear out local state.
56 TabEvents::iterator it = tab_events_.find(tab_id); 56 TabEvents::iterator it = tab_events_.find(tab_id);
57 if (it == tab_events_.end()) 57 if (it == tab_events_.end())
58 return; 58 return;
59 tab_events_.erase(it); 59 tab_events_.erase(it);
60 } 60 }
61 61
62 void DataUseUITabModel::ReportCustomTabInitialNavigation( 62 void DataUseUITabModel::ReportCustomTabInitialNavigation(
63 SessionID::id_type tab_id, 63 SessionID::id_type tab_id,
64 const std::string& url, 64 const std::string& package_name,
65 const std::string& package_name) { 65 const std::string& url) {
66 DCHECK(thread_checker_.CalledOnValidThread()); 66 DCHECK(thread_checker_.CalledOnValidThread());
67 67
68 if (tab_id <= 0) 68 if (tab_id <= 0)
69 return; 69 return;
70 70
71 io_task_runner_->PostTask( 71 io_task_runner_->PostTask(
72 FROM_HERE, 72 FROM_HERE,
73 base::Bind(&DataUseTabModel::OnNavigationEvent, data_use_tab_model_, 73 base::Bind(&DataUseTabModel::OnNavigationEvent, data_use_tab_model_,
74 tab_id, DataUseTabModel::TRANSITION_CUSTOM_TAB, GURL(url), 74 tab_id, DataUseTabModel::TRANSITION_CUSTOM_TAB, GURL(url),
75 package_name)); 75 package_name));
76 } 76 }
77 77
78 void DataUseUITabModel::SetDataUseTabModel( 78 void DataUseUITabModel::SetDataUseTabModel(
79 base::WeakPtr<DataUseTabModel> data_use_tab_model) { 79 base::WeakPtr<DataUseTabModel> data_use_tab_model) {
80 DCHECK(thread_checker_.CalledOnValidThread()); 80 DCHECK(thread_checker_.CalledOnValidThread());
81 data_use_tab_model_ = data_use_tab_model; 81 data_use_tab_model_ = data_use_tab_model;
82 } 82 }
83 83
84 base::WeakPtr<DataUseUITabModel> DataUseUITabModel::GetWeakPtr() { 84 base::WeakPtr<DataUseUITabModel> DataUseUITabModel::GetWeakPtr() {
85 DCHECK(thread_checker_.CalledOnValidThread()); 85 DCHECK(thread_checker_.CalledOnValidThread());
86 return weak_factory_.GetWeakPtr(); 86 return weak_factory_.GetWeakPtr();
87 } 87 }
88 88
89 void DataUseUITabModel::NotifyTrackingStarting(SessionID::id_type tab_id) { 89 void DataUseUITabModel::NotifyTrackingStarting(SessionID::id_type tab_id) {
90 DCHECK(thread_checker_.CalledOnValidThread()); 90 DCHECK(thread_checker_.CalledOnValidThread());
91 91
92 RemoveTabEvent(tab_id, DATA_USE_CONTINUE_CLICKED);
megjablon 2015/12/18 20:17:53 Add comment why this is here.
tbansal1 2015/12/18 21:35:37 Done.
93
92 if (MaybeCreateTabEvent(tab_id, DATA_USE_TRACKING_STARTED)) 94 if (MaybeCreateTabEvent(tab_id, DATA_USE_TRACKING_STARTED))
93 return; 95 return;
94 // Since tracking started before the UI could indicate that it ended, it is 96 // Since tracking started before the UI could indicate that it ended, it is
95 // not useful for UI to show that it started again. 97 // not useful for UI to show that it started again.
96 RemoveTabEvent(tab_id, DATA_USE_TRACKING_ENDED); 98 RemoveTabEvent(tab_id, DATA_USE_TRACKING_ENDED);
97 } 99 }
98 100
99 void DataUseUITabModel::NotifyTrackingEnding(SessionID::id_type tab_id) { 101 void DataUseUITabModel::NotifyTrackingEnding(SessionID::id_type tab_id) {
100 DCHECK(thread_checker_.CalledOnValidThread()); 102 DCHECK(thread_checker_.CalledOnValidThread());
101 103
102 if (MaybeCreateTabEvent(tab_id, DATA_USE_TRACKING_ENDED)) 104 if (MaybeCreateTabEvent(tab_id, DATA_USE_TRACKING_ENDED))
103 return; 105 return;
104 // Since tracking ended before the UI could indicate that it stated, it is not 106 // Since tracking ended before the UI could indicate that it stated, it is not
105 // useful for UI to show that it ended. 107 // useful for UI to show that it ended.
106 RemoveTabEvent(tab_id, DATA_USE_TRACKING_STARTED); 108 RemoveTabEvent(tab_id, DATA_USE_TRACKING_STARTED);
109
110 // If the user clicked "Continue" before this navigation, then we do not need
111 // to show another UI on this tab.
112 RemoveTabEvent(tab_id, DATA_USE_CONTINUE_CLICKED);
megjablon 2015/12/18 20:17:53 Won't MaybeCreateTabEvent create the event and ret
tbansal1 2015/12/18 21:35:37 Added comments in the file. Done. If the state wa
107 } 113 }
108 114
109 bool DataUseUITabModel::HasDataUseTrackingStarted(SessionID::id_type tab_id) { 115 bool DataUseUITabModel::HasDataUseTrackingStarted(SessionID::id_type tab_id) {
110 DCHECK(thread_checker_.CalledOnValidThread()); 116 DCHECK(thread_checker_.CalledOnValidThread());
111 117
112 TabEvents::iterator it = tab_events_.find(tab_id); 118 TabEvents::iterator it = tab_events_.find(tab_id);
113 if (it == tab_events_.end()) 119 if (it == tab_events_.end())
114 return false; 120 return false;
115 121
116 return RemoveTabEvent(tab_id, DATA_USE_TRACKING_STARTED); 122 return RemoveTabEvent(tab_id, DATA_USE_TRACKING_STARTED);
117 } 123 }
118 124
125 bool DataUseUITabModel::WouldDataUseTrackingEnd(
126 const std::string& url,
127 int page_transition,
128 SessionID::id_type tab_id) const {
129 DCHECK(thread_checker_.CalledOnValidThread());
130
131 TabEvents::const_iterator it = tab_events_.find(tab_id);
132
133 if (it != tab_events_.end() && it->second == DATA_USE_CONTINUE_CLICKED)
134 return false;
135
136 DataUseTabModel::TransitionType transition_type;
137
138 if (!ConvertTransitionType(ui::PageTransitionFromInt(page_transition),
139 &transition_type)) {
140 return false;
141 }
142
143 // TODO(tbansal): Hook up to DataUseTabModel, and add tests.
144 return false;
145 }
146
147 void DataUseUITabModel::UserClickedContinueOnDialogBox(
148 SessionID::id_type tab_id) {
149 DCHECK(thread_checker_.CalledOnValidThread());
150
151 TabEvents::iterator it = tab_events_.find(tab_id);
152 if (it != tab_events_.end())
153 tab_events_.erase(it);
154
155 MaybeCreateTabEvent(tab_id, DATA_USE_CONTINUE_CLICKED);
156 }
157
119 bool DataUseUITabModel::HasDataUseTrackingEnded(SessionID::id_type tab_id) { 158 bool DataUseUITabModel::HasDataUseTrackingEnded(SessionID::id_type tab_id) {
120 DCHECK(thread_checker_.CalledOnValidThread()); 159 DCHECK(thread_checker_.CalledOnValidThread());
121 160
122 TabEvents::iterator it = tab_events_.find(tab_id); 161 TabEvents::iterator it = tab_events_.find(tab_id);
123 if (it == tab_events_.end()) 162 if (it == tab_events_.end())
124 return false; 163 return false;
125 164
126 return RemoveTabEvent(tab_id, DATA_USE_TRACKING_ENDED); 165 return RemoveTabEvent(tab_id, DATA_USE_TRACKING_ENDED);
127 } 166 }
128 167
129 bool DataUseUITabModel::MaybeCreateTabEvent(SessionID::id_type tab_id, 168 bool DataUseUITabModel::MaybeCreateTabEvent(SessionID::id_type tab_id,
130 DataUseTrackingEvent event) { 169 DataUseTrackingEvent event) {
131 DCHECK(thread_checker_.CalledOnValidThread()); 170 DCHECK(thread_checker_.CalledOnValidThread());
132 return tab_events_.insert(std::make_pair(tab_id, event)).second; 171 return tab_events_.insert(std::make_pair(tab_id, event)).second;
133 } 172 }
134 173
135 bool DataUseUITabModel::RemoveTabEvent(SessionID::id_type tab_id, 174 bool DataUseUITabModel::RemoveTabEvent(SessionID::id_type tab_id,
136 DataUseTrackingEvent event) { 175 DataUseTrackingEvent event) {
137 DCHECK(thread_checker_.CalledOnValidThread()); 176 DCHECK(thread_checker_.CalledOnValidThread());
138 TabEvents::iterator it = tab_events_.find(tab_id); 177 TabEvents::iterator it = tab_events_.find(tab_id);
139 DCHECK(it != tab_events_.end()); 178 if (it == tab_events_.end())
179 return false;
180
140 if (it->second == event) { 181 if (it->second == event) {
141 tab_events_.erase(it); 182 tab_events_.erase(it);
142 return true; 183 return true;
143 } 184 }
144 return false; 185 return false;
145 } 186 }
146 187
147 bool DataUseUITabModel::ConvertTransitionType( 188 bool DataUseUITabModel::ConvertTransitionType(
148 ui::PageTransition page_transition, 189 ui::PageTransition page_transition,
149 DataUseTabModel::TransitionType* transition_type) const { 190 DataUseTabModel::TransitionType* transition_type) const {
191 DCHECK(thread_checker_.CalledOnValidThread());
192
150 if (!ui::PageTransitionIsMainFrame(page_transition) || 193 if (!ui::PageTransitionIsMainFrame(page_transition) ||
151 (((page_transition & ui::PAGE_TRANSITION_CORE_MASK) != 194 (((page_transition & ui::PAGE_TRANSITION_CORE_MASK) !=
152 ui::PAGE_TRANSITION_RELOAD) && 195 ui::PAGE_TRANSITION_RELOAD) &&
153 !ui::PageTransitionIsNewNavigation(page_transition))) { 196 !ui::PageTransitionIsNewNavigation(page_transition))) {
154 return false; 197 return false;
155 } 198 }
156 199
157 switch (page_transition & ui::PAGE_TRANSITION_CORE_MASK) { 200 switch (page_transition & ui::PAGE_TRANSITION_CORE_MASK) {
158 case ui::PAGE_TRANSITION_LINK: 201 case ui::PAGE_TRANSITION_LINK:
159 if ((page_transition & ui::PAGE_TRANSITION_FROM_API) != 0) { 202 if ((page_transition & ui::PAGE_TRANSITION_FROM_API) != 0) {
(...skipping 29 matching lines...) Expand all
189 } 232 }
190 return false; 233 return false;
191 default: 234 default:
192 return false; 235 return false;
193 } 236 }
194 } 237 }
195 238
196 } // namespace android 239 } // namespace android
197 240
198 } // namespace chrome 241 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698