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

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

Issue 2583703002: Record the tab state during data use (Closed)
Patch Set: minor fix Created 4 years 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 26 matching lines...) Expand all
37 ChromeDataUseAscriber::ChromeDataUseAscriber() { 37 ChromeDataUseAscriber::ChromeDataUseAscriber() {
38 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 38 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
39 } 39 }
40 40
41 ChromeDataUseAscriber::~ChromeDataUseAscriber() { 41 ChromeDataUseAscriber::~ChromeDataUseAscriber() {
42 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 42 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
43 DCHECK(subframe_to_mainframe_map_.empty()); 43 DCHECK(subframe_to_mainframe_map_.empty());
44 DCHECK(data_use_recorders_.empty()); 44 DCHECK(data_use_recorders_.empty());
45 } 45 }
46 46
47 ChromeDataUseRecorder* ChromeDataUseAscriber::GetDataUseRecorder( 47 ChromeDataUseRecorder* ChromeDataUseAscriber::GetOrCreateDataUseRecorder(
48 net::URLRequest* request, 48 net::URLRequest* request) {
49 bool can_create_new) { 49 DataUseRecorderEntry entry = GetOrCreateDataUseRecorderEntry(request);
50 DataUseRecorderEntry entry = GetDataUseRecorderEntry(request, can_create_new);
51 return entry == data_use_recorders_.end() ? nullptr : &(*entry); 50 return entry == data_use_recorders_.end() ? nullptr : &(*entry);
52 } 51 }
53 52
54 ChromeDataUseAscriber::DataUseRecorderEntry 53 ChromeDataUseRecorder* ChromeDataUseAscriber::GetDataUseRecorder(
55 ChromeDataUseAscriber::GetDataUseRecorderEntry(net::URLRequest* request, 54 const net::URLRequest& request) {
56 bool can_create_new) {
57 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 55 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
58 56
59 // TODO(ryansturm): Handle PlzNavigate (http://crbug/664233). 57 // TODO(ryansturm): Handle PlzNavigate (http://crbug/664233).
58 if (content::IsBrowserSideNavigationEnabled())
59 return nullptr;
60
61 // If a DataUseRecorder has already been set as user data, then return that.
62 auto user_data = static_cast<DataUseRecorderEntryAsUserData*>(
63 request.GetUserData(DataUseRecorderEntryAsUserData::kUserDataKey));
64 return user_data ? &(*user_data->recorder_entry()) : nullptr;
65 }
66
67 ChromeDataUseAscriber::DataUseRecorderEntry
68 ChromeDataUseAscriber::GetOrCreateDataUseRecorderEntry(
69 net::URLRequest* request) {
70 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
71
72 // TODO(ryansturm): Handle PlzNavigate (http://crbug/664233).
60 if (content::IsBrowserSideNavigationEnabled()) 73 if (content::IsBrowserSideNavigationEnabled())
61 return data_use_recorders_.end(); 74 return data_use_recorders_.end();
62 75
63 // If a DataUseRecorder has already been set as user data, then return that. 76 // If a DataUseRecorder has already been set as user data, then return that.
64 auto user_data = static_cast<DataUseRecorderEntryAsUserData*>( 77 auto user_data = static_cast<DataUseRecorderEntryAsUserData*>(
65 request->GetUserData(DataUseRecorderEntryAsUserData::kUserDataKey)); 78 request->GetUserData(DataUseRecorderEntryAsUserData::kUserDataKey));
66 if (user_data) 79 if (user_data)
67 return user_data->recorder_entry(); 80 return user_data->recorder_entry();
68 81
69 if (!can_create_new)
70 return data_use_recorders_.end();
71
72 // If request is associated with a ChromeService, create a new 82 // If request is associated with a ChromeService, create a new
73 // DataUseRecorder for it. There is no reason to aggregate URLRequests 83 // DataUseRecorder for it. There is no reason to aggregate URLRequests
74 // from ChromeServices into the same DataUseRecorder instance. 84 // from ChromeServices into the same DataUseRecorder instance.
75 DataUseUserData* service = static_cast<DataUseUserData*>( 85 DataUseUserData* service = static_cast<DataUseUserData*>(
76 request->GetUserData(DataUseUserData::kUserDataKey)); 86 request->GetUserData(DataUseUserData::kUserDataKey));
77 if (service) { 87 if (service) {
78 DataUseRecorderEntry entry = CreateNewDataUseRecorder(request); 88 DataUseRecorderEntry entry = CreateNewDataUseRecorder(request);
79 89
80 entry->data_use().set_description( 90 entry->data_use().set_description(
81 DataUseUserData::GetServiceNameAsString(service->service_name())); 91 DataUseUserData::GetServiceNameAsString(service->service_name()));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 // Create a new DataUseRecorder for all other requests. 146 // Create a new DataUseRecorder for all other requests.
137 DataUseRecorderEntry entry = CreateNewDataUseRecorder(request); 147 DataUseRecorderEntry entry = CreateNewDataUseRecorder(request);
138 DataUse& data_use = entry->data_use(); 148 DataUse& data_use = entry->data_use();
139 data_use.set_url(request->url()); 149 data_use.set_url(request->url());
140 return entry; 150 return entry;
141 } 151 }
142 152
143 void ChromeDataUseAscriber::OnUrlRequestDestroyed(net::URLRequest* request) { 153 void ChromeDataUseAscriber::OnUrlRequestDestroyed(net::URLRequest* request) {
144 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 154 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
145 155
146 DataUseRecorderEntry entry = GetDataUseRecorderEntry(request, true); 156 DataUseRecorderEntry entry = GetOrCreateDataUseRecorderEntry(request);
147 157
148 if (entry == data_use_recorders_.end()) 158 if (entry == data_use_recorders_.end())
149 return; 159 return;
150 160
151 DataUseRecorder* recorder = &(*entry); 161 DataUseRecorder* recorder = &(*entry);
152 162
153 RenderFrameHostID frame_key = entry->main_frame_id(); 163 RenderFrameHostID frame_key = entry->main_frame_id();
154 auto frame_iter = main_render_frame_data_use_map_.find(frame_key); 164 auto frame_iter = main_render_frame_data_use_map_.find(frame_key);
155 bool is_in_render_frame_map = 165 bool is_in_render_frame_map =
156 frame_iter != main_render_frame_data_use_map_.end() && 166 frame_iter != main_render_frame_data_use_map_.end() &&
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 int new_render_process_id, 402 int new_render_process_id,
393 int new_render_frame_id) { 403 int new_render_frame_id) {
394 if (visible_main_render_frames_.find( 404 if (visible_main_render_frames_.find(
395 RenderFrameHostID(old_render_process_id, old_render_frame_id)) != 405 RenderFrameHostID(old_render_process_id, old_render_frame_id)) !=
396 visible_main_render_frames_.end()) { 406 visible_main_render_frames_.end()) {
397 WasShownOrHidden(new_render_process_id, new_render_frame_id, true); 407 WasShownOrHidden(new_render_process_id, new_render_frame_id, true);
398 } 408 }
399 } 409 }
400 410
401 } // namespace data_use_measurement 411 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698