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