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 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 const auto main_frame_key_iter = subframe_to_mainframe_map_.find(frame_key); | 131 const auto main_frame_key_iter = subframe_to_mainframe_map_.find(frame_key); |
132 if (main_frame_key_iter == subframe_to_mainframe_map_.end()) { | 132 if (main_frame_key_iter == subframe_to_mainframe_map_.end()) { |
133 return data_use_recorders_.end(); | 133 return data_use_recorders_.end(); |
134 } | 134 } |
135 const auto frame_iter = | 135 const auto frame_iter = |
136 main_render_frame_data_use_map_.find(main_frame_key_iter->second); | 136 main_render_frame_data_use_map_.find(main_frame_key_iter->second); |
137 if (frame_iter == main_render_frame_data_use_map_.end()) { | 137 if (frame_iter == main_render_frame_data_use_map_.end()) { |
138 return data_use_recorders_.end(); | 138 return data_use_recorders_.end(); |
139 } | 139 } |
140 | 140 |
141 const auto entry = frame_iter->second; | 141 AscribeRecorderWithRequest(request, frame_iter->second); |
142 request->SetUserData( | 142 return frame_iter->second; |
143 DataUseRecorderEntryAsUserData::kUserDataKey, | |
144 base::MakeUnique<DataUseRecorderEntryAsUserData>(entry)); | |
145 entry->AddPendingURLRequest(request); | |
146 return entry; | |
147 } | 143 } |
148 | 144 |
149 // Create a new DataUseRecorder for all other requests. | 145 // Create a new DataUseRecorder for all other requests. |
150 DataUseRecorderEntry entry = CreateNewDataUseRecorder( | 146 DataUseRecorderEntry entry = CreateNewDataUseRecorder( |
151 request, | 147 request, |
152 content::ResourceRequestInfo::OriginatedFromServiceWorker(request) | 148 content::ResourceRequestInfo::OriginatedFromServiceWorker(request) |
153 ? DataUse::TrafficType::SERVICE_WORKER | 149 ? DataUse::TrafficType::SERVICE_WORKER |
154 : DataUse::TrafficType::UNKNOWN); | 150 : DataUse::TrafficType::UNKNOWN); |
155 DataUse& data_use = entry->data_use(); | 151 DataUse& data_use = entry->data_use(); |
156 data_use.set_url(request->url()); | 152 data_use.set_url(request->url()); |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 } | 365 } |
370 return; | 366 return; |
371 } | 367 } |
372 DataUseRecorderEntry old_frame_entry = frame_it->second; | 368 DataUseRecorderEntry old_frame_entry = frame_it->second; |
373 old_frame_entry->set_page_transition(page_transition); | 369 old_frame_entry->set_page_transition(page_transition); |
374 NotifyPageLoadCommit(old_frame_entry); | 370 NotifyPageLoadCommit(old_frame_entry); |
375 | 371 |
376 if (is_same_page_navigation) { | 372 if (is_same_page_navigation) { |
377 old_frame_entry->MergeFrom(&(*entry)); | 373 old_frame_entry->MergeFrom(&(*entry)); |
378 | 374 |
379 for (auto* request : entry->pending_url_requests()) { | 375 for (auto* request : entry->pending_url_requests()) |
380 request->RemoveUserData(DataUseRecorderEntryAsUserData::kUserDataKey); | 376 AscribeRecorderWithRequest(request, old_frame_entry); |
381 request->SetUserData( | |
382 DataUseRecorderEntryAsUserData::kUserDataKey, | |
383 base::MakeUnique<DataUseRecorderEntryAsUserData>(old_frame_entry)); | |
384 old_frame_entry->AddPendingURLRequest(request); | |
385 } | |
386 | 377 |
387 entry->RemoveAllPendingURLRequests(); | 378 entry->RemoveAllPendingURLRequests(); |
388 | |
389 data_use_recorders_.erase(entry); | 379 data_use_recorders_.erase(entry); |
390 } else { | 380 } else { |
391 if (old_frame_entry->IsDataUseComplete()) { | 381 if (old_frame_entry->IsDataUseComplete()) { |
392 NotifyDataUseCompleted(old_frame_entry); | 382 NotifyDataUseCompleted(old_frame_entry); |
393 data_use_recorders_.erase(old_frame_entry); | 383 data_use_recorders_.erase(old_frame_entry); |
394 | 384 |
395 if (visible_main_render_frames_.find(mainframe) != | 385 if (visible_main_render_frames_.find(mainframe) != |
396 visible_main_render_frames_.end()) { | 386 visible_main_render_frames_.end()) { |
397 entry->set_is_visible(true); | 387 entry->set_is_visible(true); |
398 } | 388 } |
(...skipping 28 matching lines...) Expand all Loading... |
427 ChromeDataUseAscriber::CreateURLRequestClassifier() const { | 417 ChromeDataUseAscriber::CreateURLRequestClassifier() const { |
428 return base::MakeUnique<ContentURLRequestClassifier>(); | 418 return base::MakeUnique<ContentURLRequestClassifier>(); |
429 } | 419 } |
430 | 420 |
431 ChromeDataUseAscriber::DataUseRecorderEntry | 421 ChromeDataUseAscriber::DataUseRecorderEntry |
432 ChromeDataUseAscriber::CreateNewDataUseRecorder( | 422 ChromeDataUseAscriber::CreateNewDataUseRecorder( |
433 net::URLRequest* request, | 423 net::URLRequest* request, |
434 DataUse::TrafficType traffic_type) { | 424 DataUse::TrafficType traffic_type) { |
435 DataUseRecorderEntry entry = | 425 DataUseRecorderEntry entry = |
436 data_use_recorders_.emplace(data_use_recorders_.end(), traffic_type); | 426 data_use_recorders_.emplace(data_use_recorders_.end(), traffic_type); |
437 if (request) { | 427 if (request) |
438 entry->AddPendingURLRequest(request); | 428 AscribeRecorderWithRequest(request, entry); |
439 request->SetUserData( | |
440 DataUseRecorderEntryAsUserData::kUserDataKey, | |
441 base::MakeUnique<DataUseRecorderEntryAsUserData>(entry)); | |
442 } | |
443 return entry; | 429 return entry; |
444 } | 430 } |
445 | 431 |
| 432 void ChromeDataUseAscriber::AscribeRecorderWithRequest( |
| 433 net::URLRequest* request, |
| 434 DataUseRecorderEntry recorder) { |
| 435 recorder->AddPendingURLRequest(request); |
| 436 request->SetUserData( |
| 437 DataUseRecorderEntryAsUserData::kUserDataKey, |
| 438 base::MakeUnique<DataUseRecorderEntryAsUserData>(recorder)); |
| 439 } |
| 440 |
446 void ChromeDataUseAscriber::WasShownOrHidden(int main_render_process_id, | 441 void ChromeDataUseAscriber::WasShownOrHidden(int main_render_process_id, |
447 int main_render_frame_id, | 442 int main_render_frame_id, |
448 bool visible) { | 443 bool visible) { |
449 RenderFrameHostID main_render_frame_host_id(main_render_process_id, | 444 RenderFrameHostID main_render_frame_host_id(main_render_process_id, |
450 main_render_frame_id); | 445 main_render_frame_id); |
451 | 446 |
452 auto frame_iter = | 447 auto frame_iter = |
453 main_render_frame_data_use_map_.find(main_render_frame_host_id); | 448 main_render_frame_data_use_map_.find(main_render_frame_host_id); |
454 if (frame_iter != main_render_frame_data_use_map_.end()) | 449 if (frame_iter != main_render_frame_data_use_map_.end()) |
455 frame_iter->second->set_is_visible(visible); | 450 frame_iter->second->set_is_visible(visible); |
(...skipping 18 matching lines...) Expand all Loading... |
474 pending_navigation_global_request_id_.find(old_frame); | 469 pending_navigation_global_request_id_.find(old_frame); |
475 if (pending_navigation_iter != pending_navigation_global_request_id_.end()) { | 470 if (pending_navigation_iter != pending_navigation_global_request_id_.end()) { |
476 pending_navigation_global_request_id_.insert(std::make_pair( | 471 pending_navigation_global_request_id_.insert(std::make_pair( |
477 RenderFrameHostID(new_render_process_id, new_render_frame_id), | 472 RenderFrameHostID(new_render_process_id, new_render_frame_id), |
478 pending_navigation_iter->second)); | 473 pending_navigation_iter->second)); |
479 pending_navigation_global_request_id_.erase(pending_navigation_iter); | 474 pending_navigation_global_request_id_.erase(pending_navigation_iter); |
480 } | 475 } |
481 } | 476 } |
482 | 477 |
483 } // namespace data_use_measurement | 478 } // namespace data_use_measurement |
OLD | NEW |