Chromium Code Reviews| Index: chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.cc |
| diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.cc b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.cc |
| index 966a1a9284cf461ae285b97b24dd38554a1122be..24c2dfde090ef38ac6c264e8729aba4006fbbae7 100644 |
| --- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.cc |
| +++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.cc |
| @@ -175,6 +175,48 @@ void ChromeDataUseAscriberService::SetDataUseAscriber( |
| RenderFrameCreated(it); |
| } |
| pending_frames_queue_.clear(); |
| + |
| + for (const auto& it : pending_visible_main_frames_) { |
| + WasShownOrHidden(it, true); |
|
RyanSturm
2016/12/13 22:04:19
Is it possible a frame is created, shown, and dele
Raj
2016/12/14 23:00:50
Done.
|
| + } |
| + pending_visible_main_frames_.clear(); |
| +} |
| + |
| +void ChromeDataUseAscriberService::WasShownOrHidden( |
| + content::RenderFrameHost* main_render_frame_host, |
| + bool visible) { |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| + |
| + if (!ascriber_) { |
| + if (visible) |
| + pending_visible_main_frames_.insert(main_render_frame_host); |
| + else |
| + pending_visible_main_frames_.erase(main_render_frame_host); |
| + return; |
| + } |
| + |
| + content::BrowserThread::PostTask( |
| + content::BrowserThread::IO, FROM_HERE, |
| + base::Bind(&ChromeDataUseAscriber::WasShownOrHidden, |
| + base::Unretained(ascriber_), |
| + main_render_frame_host->GetProcess()->GetID(), |
| + main_render_frame_host->GetRoutingID(), visible)); |
| +} |
| + |
| +void ChromeDataUseAscriberService::RenderFrameHostChanged( |
| + content::RenderFrameHost* old_host, |
| + content::RenderFrameHost* new_host) { |
| + if (!ascriber_) |
| + return; |
| + |
| + if (old_host) { |
| + content::BrowserThread::PostTask( |
| + content::BrowserThread::IO, FROM_HERE, |
| + base::Bind(&ChromeDataUseAscriber::RenderFrameHostChanged, |
| + base::Unretained(ascriber_), old_host->GetProcess()->GetID(), |
| + old_host->GetRoutingID(), new_host->GetProcess()->GetID(), |
| + new_host->GetRoutingID())); |
| + } |
| } |
| } // namespace data_use_measurement |