| 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 |