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

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: rebased 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(net::URLRequest* request,
155 bool started) {
156 ChromeDataUseRecorder* recorder = GetDataUseRecorder(*request);
tbansal1 2017/05/09 01:14:43 why not GetOrCreateDataUseRecorderEntry (similar t
rajendrant 2017/05/11 20:31:39 GetOrCreateDataUseRecorderEntry is not needed here
157
158 if (!recorder)
159 return;
160
161 const content::ResourceRequestInfo* request_info =
162 content::ResourceRequestInfo::ForRequest(request);
163 if (request_info &&
tbansal1 2017/05/09 01:14:43 reverse the if-conditional for early return: if(!r
rajendrant 2017/05/11 20:31:39 Done.
164 request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
165 auto navigation_iter = pending_navigation_data_use_map_.find(
tbansal1 2017/05/09 01:14:43 IIUC (please confirm using the spec), you can simp
rajendrant 2017/05/11 20:31:39 Done.
166 recorder->main_frame_request_id());
167 // If request was not successful, then NavigationHandle in
168 // DidFinishMainFrameNavigation will not have GlobalRequestID. So we erase
169 // the DataUseRecorderEntry here.
170 if (navigation_iter != pending_navigation_data_use_map_.end()) {
tbansal1 2017/05/09 01:14:43 no parens.
rajendrant 2017/05/11 20:31:39 Done.
171 pending_navigation_data_use_map_.erase(navigation_iter);
172 }
173 }
174 }
175
154 void ChromeDataUseAscriber::OnUrlRequestDestroyed(net::URLRequest* request) { 176 void ChromeDataUseAscriber::OnUrlRequestDestroyed(net::URLRequest* request) {
155 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 177 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
156 178
157 DataUseRecorderEntry entry = GetOrCreateDataUseRecorderEntry(request); 179 DataUseRecorderEntry entry = GetOrCreateDataUseRecorderEntry(request);
158 180
159 if (entry == data_use_recorders_.end()) 181 if (entry == data_use_recorders_.end())
160 return; 182 return;
161 183
162 DataUseRecorder* recorder = &(*entry);
163
164 RenderFrameHostID frame_key = entry->main_frame_id(); 184 RenderFrameHostID frame_key = entry->main_frame_id();
165 auto frame_iter = main_render_frame_data_use_map_.find(frame_key); 185 auto frame_iter = main_render_frame_data_use_map_.find(frame_key);
166 bool is_in_render_frame_map = 186 bool is_in_render_frame_map =
167 frame_iter != main_render_frame_data_use_map_.end() && 187 frame_iter != main_render_frame_data_use_map_.end() &&
168 frame_iter->second->HasPendingURLRequest(request); 188 frame_iter->second->HasPendingURLRequest(request);
169 189
170 const content::ResourceRequestInfo* request_info = 190 const content::ResourceRequestInfo* request_info =
171 content::ResourceRequestInfo::ForRequest(request); 191 content::ResourceRequestInfo::ForRequest(request);
172 content::ResourceType resource_type = request_info 192 bool is_in_pending_navigation_map =
173 ? request_info->GetResourceType() 193 request_info &&
174 : content::RESOURCE_TYPE_LAST_TYPE; 194 request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME &&
175 195 pending_navigation_data_use_map_.find(entry->main_frame_request_id()) !=
176 bool is_in_pending_navigation_map = false; 196 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 197
192 DataUseAscriber::OnUrlRequestDestroyed(request); 198 DataUseAscriber::OnUrlRequestDestroyed(request);
193 request->RemoveUserData(DataUseRecorderEntryAsUserData::kUserDataKey); 199 request->RemoveUserData(DataUseRecorderEntryAsUserData::kUserDataKey);
194 200
195 if (recorder->IsDataUseComplete() && !is_in_render_frame_map && 201 if (entry->IsDataUseComplete() && !is_in_render_frame_map &&
196 !is_in_pending_navigation_map) { 202 !is_in_pending_navigation_map) {
197 OnDataUseCompleted(entry); 203 OnDataUseCompleted(entry);
198 data_use_recorders_.erase(entry); 204 data_use_recorders_.erase(entry);
199 } 205 }
200 } 206 }
201 207
202 void ChromeDataUseAscriber::RenderFrameCreated(int render_process_id, 208 void ChromeDataUseAscriber::RenderFrameCreated(int render_process_id,
203 int render_frame_id, 209 int render_frame_id,
204 int main_render_process_id, 210 int main_render_process_id,
205 int main_render_frame_id) { 211 int main_render_frame_id) {
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 int new_render_process_id, 421 int new_render_process_id,
416 int new_render_frame_id) { 422 int new_render_frame_id) {
417 if (visible_main_render_frames_.find( 423 if (visible_main_render_frames_.find(
418 RenderFrameHostID(old_render_process_id, old_render_frame_id)) != 424 RenderFrameHostID(old_render_process_id, old_render_frame_id)) !=
419 visible_main_render_frames_.end()) { 425 visible_main_render_frames_.end()) {
420 WasShownOrHidden(new_render_process_id, new_render_frame_id, true); 426 WasShownOrHidden(new_render_process_id, new_render_frame_id, true);
421 } 427 }
422 } 428 }
423 429
424 } // namespace data_use_measurement 430 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698