Chromium Code Reviews| 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |