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 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 if (main_render_process_id == -1 && main_render_frame_id == -1) { | 232 if (main_render_process_id == -1 && main_render_frame_id == -1) { |
233 auto frame_iter = main_render_frame_data_use_map_.find(key); | 233 auto frame_iter = main_render_frame_data_use_map_.find(key); |
234 DataUseRecorderEntry entry = frame_iter->second; | 234 DataUseRecorderEntry entry = frame_iter->second; |
235 if (entry->IsDataUseComplete()) { | 235 if (entry->IsDataUseComplete()) { |
236 OnDataUseCompleted(entry); | 236 OnDataUseCompleted(entry); |
237 data_use_recorders_.erase(entry); | 237 data_use_recorders_.erase(entry); |
238 } | 238 } |
239 main_render_frame_data_use_map_.erase(frame_iter); | 239 main_render_frame_data_use_map_.erase(frame_iter); |
240 } | 240 } |
241 subframe_to_mainframe_map_.erase(key); | 241 subframe_to_mainframe_map_.erase(key); |
| 242 visible_main_render_frames_.erase(key); |
242 } | 243 } |
243 | 244 |
244 void ChromeDataUseAscriber::DidStartMainFrameNavigation( | 245 void ChromeDataUseAscriber::DidStartMainFrameNavigation( |
245 GURL gurl, | 246 GURL gurl, |
246 int render_process_id, | 247 int render_process_id, |
247 int render_frame_id, | 248 int render_frame_id, |
248 void* navigation_handle) { | 249 void* navigation_handle) { |
249 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 250 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
250 } | 251 } |
251 | 252 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 entry->RemoveAllPendingURLRequests(); | 318 entry->RemoveAllPendingURLRequests(); |
318 | 319 |
319 data_use_recorders_.erase(entry); | 320 data_use_recorders_.erase(entry); |
320 } else { | 321 } else { |
321 // Navigation is not same page, so remove old entry from | 322 // Navigation is not same page, so remove old entry from |
322 // |main_render_frame_data_use_map_|, possibly marking it complete. | 323 // |main_render_frame_data_use_map_|, possibly marking it complete. |
323 main_render_frame_data_use_map_.erase(frame_it); | 324 main_render_frame_data_use_map_.erase(frame_it); |
324 if (old_frame_entry->IsDataUseComplete()) { | 325 if (old_frame_entry->IsDataUseComplete()) { |
325 OnDataUseCompleted(old_frame_entry); | 326 OnDataUseCompleted(old_frame_entry); |
326 data_use_recorders_.erase(old_frame_entry); | 327 data_use_recorders_.erase(old_frame_entry); |
| 328 |
| 329 if (visible_main_render_frames_.find( |
| 330 RenderFrameHostID(render_process_id, render_frame_id)) != |
| 331 visible_main_render_frames_.end()) { |
| 332 entry->set_is_visible(true); |
| 333 } |
327 } | 334 } |
328 | 335 |
329 DataUse& data_use = entry->data_use(); | 336 DataUse& data_use = entry->data_use(); |
330 | 337 |
331 DCHECK(!data_use.url().is_valid() || data_use.url() == gurl) | 338 DCHECK(!data_use.url().is_valid() || data_use.url() == gurl) |
332 << "is valid: " << data_use.url().is_valid() | 339 << "is valid: " << data_use.url().is_valid() |
333 << "; data_use.url(): " << data_use.url().spec() | 340 << "; data_use.url(): " << data_use.url().spec() |
334 << "; gurl: " << gurl.spec(); | 341 << "; gurl: " << gurl.spec(); |
335 if (!data_use.url().is_valid()) { | 342 if (!data_use.url().is_valid()) { |
336 data_use.set_url(gurl); | 343 data_use.set_url(gurl); |
(...skipping 18 matching lines...) Expand all Loading... |
355 DataUseRecorderEntry entry = data_use_recorders_.emplace( | 362 DataUseRecorderEntry entry = data_use_recorders_.emplace( |
356 data_use_recorders_.end()); | 363 data_use_recorders_.end()); |
357 if (request) { | 364 if (request) { |
358 entry->AddPendingURLRequest(request); | 365 entry->AddPendingURLRequest(request); |
359 request->SetUserData(DataUseRecorderEntryAsUserData::kUserDataKey, | 366 request->SetUserData(DataUseRecorderEntryAsUserData::kUserDataKey, |
360 new DataUseRecorderEntryAsUserData(entry)); | 367 new DataUseRecorderEntryAsUserData(entry)); |
361 } | 368 } |
362 return entry; | 369 return entry; |
363 } | 370 } |
364 | 371 |
| 372 void ChromeDataUseAscriber::WasShownOrHidden(int main_render_process_id, |
| 373 int main_render_frame_id, |
| 374 bool visible) { |
| 375 RenderFrameHostID main_render_frame_host_id(main_render_process_id, |
| 376 main_render_frame_id); |
| 377 |
| 378 auto frame_iter = |
| 379 main_render_frame_data_use_map_.find(main_render_frame_host_id); |
| 380 if (frame_iter != main_render_frame_data_use_map_.end()) |
| 381 frame_iter->second->set_is_visible(visible); |
| 382 |
| 383 if (visible) { |
| 384 visible_main_render_frames_.insert(main_render_frame_host_id); |
| 385 } else { |
| 386 visible_main_render_frames_.erase(main_render_frame_host_id); |
| 387 } |
| 388 } |
| 389 |
| 390 void ChromeDataUseAscriber::RenderFrameHostChanged(int old_render_process_id, |
| 391 int old_render_frame_id, |
| 392 int new_render_process_id, |
| 393 int new_render_frame_id) { |
| 394 if (visible_main_render_frames_.find( |
| 395 RenderFrameHostID(old_render_process_id, old_render_frame_id)) != |
| 396 visible_main_render_frames_.end()) { |
| 397 WasShownOrHidden(new_render_process_id, new_render_frame_id, true); |
| 398 } |
| 399 } |
| 400 |
365 } // namespace data_use_measurement | 401 } // namespace data_use_measurement |
OLD | NEW |