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

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

Issue 2572823002: Propogate the tab foreground, background change events to data use (Closed)
Patch Set: 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 115
116 if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) { 116 if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
117 content::GlobalRequestID navigation_key = 117 content::GlobalRequestID navigation_key =
118 request_info->GetGlobalRequestID(); 118 request_info->GetGlobalRequestID();
119 119
120 DataUseRecorderEntry new_entry = CreateNewDataUseRecorder(request); 120 DataUseRecorderEntry new_entry = CreateNewDataUseRecorder(request);
121 new_entry->set_main_frame_request_id(navigation_key); 121 new_entry->set_main_frame_request_id(navigation_key);
122 pending_navigation_data_use_map_.insert( 122 pending_navigation_data_use_map_.insert(
123 std::make_pair(navigation_key, new_entry)); 123 std::make_pair(navigation_key, new_entry));
124 124
125 if (visible_main_render_frames_.find(main_frame_key_iter->second) !=
126 visible_main_render_frames_.end()) {
127 new_entry->set_is_visible(true);
RyanSturm 2016/12/13 22:04:19 Instead of marking it visible here, I think it mak
Raj 2016/12/14 23:00:50 Done.
128 }
129
125 return new_entry; 130 return new_entry;
126 } 131 }
127 132
128 DCHECK(frame_iter != main_render_frame_data_use_map_.end()); 133 DCHECK(frame_iter != main_render_frame_data_use_map_.end());
129 auto entry = frame_iter->second; 134 auto entry = frame_iter->second;
130 request->SetUserData(DataUseRecorderEntryAsUserData::kUserDataKey, 135 request->SetUserData(DataUseRecorderEntryAsUserData::kUserDataKey,
131 new DataUseRecorderEntryAsUserData(entry)); 136 new DataUseRecorderEntryAsUserData(entry));
132 entry->AddPendingURLRequest(request); 137 entry->AddPendingURLRequest(request);
133 return entry; 138 return entry;
134 } 139 }
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 if (main_render_process_id == -1 && main_render_frame_id == -1) { 237 if (main_render_process_id == -1 && main_render_frame_id == -1) {
233 auto frame_iter = main_render_frame_data_use_map_.find(key); 238 auto frame_iter = main_render_frame_data_use_map_.find(key);
234 DataUseRecorderEntry entry = frame_iter->second; 239 DataUseRecorderEntry entry = frame_iter->second;
235 if (entry->IsDataUseComplete()) { 240 if (entry->IsDataUseComplete()) {
236 OnDataUseCompleted(entry); 241 OnDataUseCompleted(entry);
237 data_use_recorders_.erase(entry); 242 data_use_recorders_.erase(entry);
238 } 243 }
239 main_render_frame_data_use_map_.erase(frame_iter); 244 main_render_frame_data_use_map_.erase(frame_iter);
240 } 245 }
241 subframe_to_mainframe_map_.erase(key); 246 subframe_to_mainframe_map_.erase(key);
247 visible_main_render_frames_.erase(key);
242 } 248 }
243 249
244 void ChromeDataUseAscriber::DidStartMainFrameNavigation( 250 void ChromeDataUseAscriber::DidStartMainFrameNavigation(
245 GURL gurl, 251 GURL gurl,
246 int render_process_id, 252 int render_process_id,
247 int render_frame_id, 253 int render_frame_id,
248 void* navigation_handle) { 254 void* navigation_handle) {
249 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 255 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
250 } 256 }
251 257
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 old_frame_entry->AddPendingURLRequest(request); 320 old_frame_entry->AddPendingURLRequest(request);
315 } 321 }
316 322
317 entry->RemoveAllPendingURLRequests(); 323 entry->RemoveAllPendingURLRequests();
318 324
319 data_use_recorders_.erase(entry); 325 data_use_recorders_.erase(entry);
320 } else { 326 } else {
321 // Navigation is not same page, so remove old entry from 327 // Navigation is not same page, so remove old entry from
322 // |main_render_frame_data_use_map_|, possibly marking it complete. 328 // |main_render_frame_data_use_map_|, possibly marking it complete.
323 main_render_frame_data_use_map_.erase(frame_it); 329 main_render_frame_data_use_map_.erase(frame_it);
324 if (old_frame_entry->IsDataUseComplete()) { 330 if (old_frame_entry->IsDataUseComplete()) {
RyanSturm 2016/12/13 22:04:19 Copy the visibility state from old_frame_entry to
Raj 2016/12/14 23:00:50 Acknowledged.
325 OnDataUseCompleted(old_frame_entry); 331 OnDataUseCompleted(old_frame_entry);
326 data_use_recorders_.erase(old_frame_entry); 332 data_use_recorders_.erase(old_frame_entry);
327 } 333 }
328 334
329 DataUse& data_use = entry->data_use(); 335 DataUse& data_use = entry->data_use();
330 336
331 DCHECK(!data_use.url().is_valid() || data_use.url() == gurl) 337 DCHECK(!data_use.url().is_valid() || data_use.url() == gurl)
332 << "is valid: " << data_use.url().is_valid() 338 << "is valid: " << data_use.url().is_valid()
333 << "; data_use.url(): " << data_use.url().spec() 339 << "; data_use.url(): " << data_use.url().spec()
334 << "; gurl: " << gurl.spec(); 340 << "; gurl: " << gurl.spec();
(...skipping 20 matching lines...) Expand all
355 DataUseRecorderEntry entry = data_use_recorders_.emplace( 361 DataUseRecorderEntry entry = data_use_recorders_.emplace(
356 data_use_recorders_.end()); 362 data_use_recorders_.end());
357 if (request) { 363 if (request) {
358 entry->AddPendingURLRequest(request); 364 entry->AddPendingURLRequest(request);
359 request->SetUserData(DataUseRecorderEntryAsUserData::kUserDataKey, 365 request->SetUserData(DataUseRecorderEntryAsUserData::kUserDataKey,
360 new DataUseRecorderEntryAsUserData(entry)); 366 new DataUseRecorderEntryAsUserData(entry));
361 } 367 }
362 return entry; 368 return entry;
363 } 369 }
364 370
371 void ChromeDataUseAscriber::WasShownOrHidden(int main_render_process_id,
372 int main_render_frame_id,
373 bool visible) {
374 RenderFrameHostID main_render_frame_host_id(main_render_process_id,
375 main_render_frame_id);
376
377 auto frame_iter =
378 main_render_frame_data_use_map_.find(main_render_frame_host_id);
379 if (frame_iter != main_render_frame_data_use_map_.end())
380 frame_iter->second->set_is_visible(visible);
381
382 if (visible) {
383 visible_main_render_frames_.insert(main_render_frame_host_id);
384 } else {
385 visible_main_render_frames_.erase(main_render_frame_host_id);
386 }
387 }
388
389 void ChromeDataUseAscriber::RenderFrameHostChanged(int old_render_process_id,
390 int old_render_frame_id,
391 int new_render_process_id,
392 int new_render_frame_id) {
393 if (visible_main_render_frames_.find(
394 RenderFrameHostID(old_render_process_id, old_render_frame_id)) !=
395 visible_main_render_frames_.end()) {
396 WasShownOrHidden(new_render_process_id, new_render_frame_id, true);
397 }
398 }
399
365 } // namespace data_use_measurement 400 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698