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..24e83c0f10ae84b3e7756f7298d5e4cde4dd5d4b 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 |
@@ -173,8 +173,50 @@ void ChromeDataUseAscriberService::SetDataUseAscriber( |
for (auto& it : pending_frames_queue_) { |
RenderFrameCreated(it); |
+ if (pending_visible_main_frames_.find(it) != |
+ pending_visible_main_frames_.end()) { |
+ WasShownOrHidden(it, true); |
+ } |
} |
pending_frames_queue_.clear(); |
+ 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 |