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

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

Issue 2947973002: Support moving pending requests from one DataUseRecorder to another (Closed)
Patch Set: Addressed comments Created 3 years, 5 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 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 main_render_frame_data_use_map_.erase(entry->main_frame_id()); 363 main_render_frame_data_use_map_.erase(entry->main_frame_id());
364 data_use_recorders_.erase(entry); 364 data_use_recorders_.erase(entry);
365 } 365 }
366 return; 366 return;
367 } 367 }
368 DataUseRecorderEntry old_frame_entry = frame_it->second; 368 DataUseRecorderEntry old_frame_entry = frame_it->second;
369 old_frame_entry->set_page_transition(page_transition); 369 old_frame_entry->set_page_transition(page_transition);
370 NotifyPageLoadCommit(old_frame_entry); 370 NotifyPageLoadCommit(old_frame_entry);
371 371
372 if (is_same_page_navigation) { 372 if (is_same_page_navigation) {
373 old_frame_entry->MergeFrom(&(*entry)); 373 for (auto& request : entry->pending_url_requests()) {
374 374 AscribeRecorderWithRequest(request.first, old_frame_entry);
375 for (auto* request : entry->pending_url_requests()) 375 old_frame_entry->MovePendingURLRequest(&(*entry), request.first);
376 AscribeRecorderWithRequest(request, old_frame_entry); 376 }
377
378 entry->RemoveAllPendingURLRequests();
379 data_use_recorders_.erase(entry); 377 data_use_recorders_.erase(entry);
380 } else { 378 } else {
381 if (old_frame_entry->IsDataUseComplete()) { 379 if (old_frame_entry->IsDataUseComplete()) {
382 NotifyDataUseCompleted(old_frame_entry); 380 NotifyDataUseCompleted(old_frame_entry);
383 data_use_recorders_.erase(old_frame_entry); 381 data_use_recorders_.erase(old_frame_entry);
384 382
385 if (visible_main_render_frames_.find(mainframe) != 383 if (visible_main_render_frames_.find(mainframe) !=
386 visible_main_render_frames_.end()) { 384 visible_main_render_frames_.end()) {
387 entry->set_is_visible(true); 385 entry->set_is_visible(true);
388 } 386 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 DataUse::TrafficType traffic_type) { 422 DataUse::TrafficType traffic_type) {
425 DataUseRecorderEntry entry = 423 DataUseRecorderEntry entry =
426 data_use_recorders_.emplace(data_use_recorders_.end(), traffic_type); 424 data_use_recorders_.emplace(data_use_recorders_.end(), traffic_type);
427 if (request) 425 if (request)
428 AscribeRecorderWithRequest(request, entry); 426 AscribeRecorderWithRequest(request, entry);
429 return entry; 427 return entry;
430 } 428 }
431 429
432 void ChromeDataUseAscriber::AscribeRecorderWithRequest( 430 void ChromeDataUseAscriber::AscribeRecorderWithRequest(
433 net::URLRequest* request, 431 net::URLRequest* request,
434 DataUseRecorderEntry recorder) { 432 DataUseRecorderEntry entry) {
435 recorder->AddPendingURLRequest(request); 433 entry->AddPendingURLRequest(request);
436 request->SetUserData( 434 request->SetUserData(DataUseRecorderEntryAsUserData::kUserDataKey,
437 DataUseRecorderEntryAsUserData::kUserDataKey, 435 base::MakeUnique<DataUseRecorderEntryAsUserData>(entry));
438 base::MakeUnique<DataUseRecorderEntryAsUserData>(recorder));
439 } 436 }
440 437
441 void ChromeDataUseAscriber::WasShownOrHidden(int main_render_process_id, 438 void ChromeDataUseAscriber::WasShownOrHidden(int main_render_process_id,
442 int main_render_frame_id, 439 int main_render_frame_id,
443 bool visible) { 440 bool visible) {
444 RenderFrameHostID main_render_frame_host_id(main_render_process_id, 441 RenderFrameHostID main_render_frame_host_id(main_render_process_id,
445 main_render_frame_id); 442 main_render_frame_id);
446 443
447 auto frame_iter = 444 auto frame_iter =
448 main_render_frame_data_use_map_.find(main_render_frame_host_id); 445 main_render_frame_data_use_map_.find(main_render_frame_host_id);
(...skipping 20 matching lines...) Expand all
469 pending_navigation_global_request_id_.find(old_frame); 466 pending_navigation_global_request_id_.find(old_frame);
470 if (pending_navigation_iter != pending_navigation_global_request_id_.end()) { 467 if (pending_navigation_iter != pending_navigation_global_request_id_.end()) {
471 pending_navigation_global_request_id_.insert(std::make_pair( 468 pending_navigation_global_request_id_.insert(std::make_pair(
472 RenderFrameHostID(new_render_process_id, new_render_frame_id), 469 RenderFrameHostID(new_render_process_id, new_render_frame_id),
473 pending_navigation_iter->second)); 470 pending_navigation_iter->second));
474 pending_navigation_global_request_id_.erase(pending_navigation_iter); 471 pending_navigation_global_request_id_.erase(pending_navigation_iter);
475 } 472 }
476 } 473 }
477 474
478 } // namespace data_use_measurement 475 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698