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

Side by Side Diff: chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc

Issue 2868733002: Move failed URLRequest checking to OnUrlRequestCompleted (Closed)
Patch Set: Addressed comment Created 3 years, 7 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/data_use_measurement/chrome_data_use_ascriber.h" 5 #include "chrome/browser/data_use_measurement/chrome_data_use_ascriber.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "chrome/browser/data_use_measurement/chrome_data_use_recorder.h" 10 #include "chrome/browser/data_use_measurement/chrome_data_use_recorder.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 return entry; 144 return entry;
145 } 145 }
146 146
147 // Create a new DataUseRecorder for all other requests. 147 // Create a new DataUseRecorder for all other requests.
148 DataUseRecorderEntry entry = CreateNewDataUseRecorder(request); 148 DataUseRecorderEntry entry = CreateNewDataUseRecorder(request);
149 DataUse& data_use = entry->data_use(); 149 DataUse& data_use = entry->data_use();
150 data_use.set_url(request->url()); 150 data_use.set_url(request->url());
151 return entry; 151 return entry;
152 } 152 }
153 153
154 void ChromeDataUseAscriber::OnUrlRequestCompleted(
155 const net::URLRequest& request,
156 bool started) {
157 ChromeDataUseRecorder* recorder = GetDataUseRecorder(request);
tbansal1 2017/05/11 20:55:41 Add DCHECK_CURRENTLY_ON(content::BrowserThread::IO
rajendrant 2017/05/16 01:04:14 Done.
158
159 if (!recorder)
160 return;
161
162 const content::ResourceRequestInfo* request_info =
163 content::ResourceRequestInfo::ForRequest(&request);
164 if (!request_info ||
165 request_info->GetResourceType() != content::RESOURCE_TYPE_MAIN_FRAME)
166 return;
tbansal1 2017/05/11 20:55:41 parens are needed here since the if-conditional sp
rajendrant 2017/05/16 01:04:14 Done.
167
168 // If request was not successful, then NavigationHandle in
tbansal1 2017/05/11 20:55:41 Do you have to check somewhere that |request| was
rajendrant 2017/05/16 01:04:14 Yes. This was missed.
169 // DidFinishMainFrameNavigation will not have GlobalRequestID. So we erase the
170 // DataUseRecorderEntry here.
171 pending_navigation_data_use_map_.erase(recorder->main_frame_request_id());
172 }
173
154 void ChromeDataUseAscriber::OnUrlRequestDestroyed(net::URLRequest* request) { 174 void ChromeDataUseAscriber::OnUrlRequestDestroyed(net::URLRequest* request) {
155 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 175 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
156 176
157 DataUseRecorderEntry entry = GetOrCreateDataUseRecorderEntry(request); 177 DataUseRecorderEntry entry = GetOrCreateDataUseRecorderEntry(request);
158 178
159 if (entry == data_use_recorders_.end()) 179 if (entry == data_use_recorders_.end())
160 return; 180 return;
161 181
162 DataUseRecorder* recorder = &(*entry);
163
164 RenderFrameHostID frame_key = entry->main_frame_id(); 182 RenderFrameHostID frame_key = entry->main_frame_id();
165 auto frame_iter = main_render_frame_data_use_map_.find(frame_key); 183 auto frame_iter = main_render_frame_data_use_map_.find(frame_key);
166 bool is_in_render_frame_map = 184 bool is_in_render_frame_map =
167 frame_iter != main_render_frame_data_use_map_.end() && 185 frame_iter != main_render_frame_data_use_map_.end() &&
168 frame_iter->second->HasPendingURLRequest(request); 186 frame_iter->second->HasPendingURLRequest(request);
169 187
170 const content::ResourceRequestInfo* request_info = 188 const content::ResourceRequestInfo* request_info =
171 content::ResourceRequestInfo::ForRequest(request); 189 content::ResourceRequestInfo::ForRequest(request);
172 content::ResourceType resource_type = request_info 190 bool is_in_pending_navigation_map =
173 ? request_info->GetResourceType() 191 request_info &&
174 : content::RESOURCE_TYPE_LAST_TYPE; 192 request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME &&
175 193 pending_navigation_data_use_map_.find(entry->main_frame_request_id()) !=
176 bool is_in_pending_navigation_map = false; 194 pending_navigation_data_use_map_.end();
177 if (request_info && resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
178 auto navigation_iter = pending_navigation_data_use_map_.find(
179 entry->main_frame_request_id());
180 is_in_pending_navigation_map =
181 navigation_iter != pending_navigation_data_use_map_.end();
182
183 // If request was not successful, then NavigationHandle in
184 // DidFinishMainFrameNavigation will not have GlobalRequestID. So we erase
185 // the DataUseRecorderEntry here.
186 if (is_in_pending_navigation_map && !request->status().is_success()) {
187 pending_navigation_data_use_map_.erase(navigation_iter);
188 is_in_pending_navigation_map = false;
189 }
190 }
191 195
192 DataUseAscriber::OnUrlRequestDestroyed(request); 196 DataUseAscriber::OnUrlRequestDestroyed(request);
193 request->RemoveUserData(DataUseRecorderEntryAsUserData::kUserDataKey); 197 request->RemoveUserData(DataUseRecorderEntryAsUserData::kUserDataKey);
194 198
195 if (recorder->IsDataUseComplete() && !is_in_render_frame_map && 199 if (entry->IsDataUseComplete() && !is_in_render_frame_map &&
196 !is_in_pending_navigation_map) { 200 !is_in_pending_navigation_map) {
197 OnDataUseCompleted(entry); 201 OnDataUseCompleted(entry);
198 data_use_recorders_.erase(entry); 202 data_use_recorders_.erase(entry);
199 } 203 }
200 } 204 }
201 205
202 void ChromeDataUseAscriber::RenderFrameCreated(int render_process_id, 206 void ChromeDataUseAscriber::RenderFrameCreated(int render_process_id,
203 int render_frame_id, 207 int render_frame_id,
204 int main_render_process_id, 208 int main_render_process_id,
205 int main_render_frame_id) { 209 int main_render_frame_id) {
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 int new_render_process_id, 419 int new_render_process_id,
416 int new_render_frame_id) { 420 int new_render_frame_id) {
417 if (visible_main_render_frames_.find( 421 if (visible_main_render_frames_.find(
418 RenderFrameHostID(old_render_process_id, old_render_frame_id)) != 422 RenderFrameHostID(old_render_process_id, old_render_frame_id)) !=
419 visible_main_render_frames_.end()) { 423 visible_main_render_frames_.end()) {
420 WasShownOrHidden(new_render_process_id, new_render_frame_id, true); 424 WasShownOrHidden(new_render_process_id, new_render_frame_id, true);
421 } 425 }
422 } 426 }
423 427
424 } // namespace data_use_measurement 428 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698