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 |