Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1034)

Unified Diff: chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc

Issue 2572823002: Propogate the tab foreground, background change events to data use (Closed)
Patch Set: Fix trybot failure Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc
diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc b/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc
index 8aca728cbfffbef49bd1ac4a22f2b8f7bcc948be..c67b8de820268891065211f71a6b5e9e1f5d010f 100644
--- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc
+++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc
@@ -239,6 +239,7 @@ void ChromeDataUseAscriber::RenderFrameDeleted(int render_process_id,
main_render_frame_data_use_map_.erase(frame_iter);
}
subframe_to_mainframe_map_.erase(key);
+ visible_main_render_frames_.erase(key);
}
void ChromeDataUseAscriber::DidStartMainFrameNavigation(
@@ -324,6 +325,12 @@ void ChromeDataUseAscriber::ReadyToCommitMainFrameNavigation(
if (old_frame_entry->IsDataUseComplete()) {
OnDataUseCompleted(old_frame_entry);
data_use_recorders_.erase(old_frame_entry);
+
+ if (visible_main_render_frames_.find(
+ RenderFrameHostID(render_process_id, render_frame_id)) !=
+ visible_main_render_frames_.end()) {
+ entry->set_is_visible(true);
+ }
}
DataUse& data_use = entry->data_use();
@@ -362,4 +369,33 @@ ChromeDataUseAscriber::CreateNewDataUseRecorder(net::URLRequest* request) {
return entry;
}
+void ChromeDataUseAscriber::WasShownOrHidden(int main_render_process_id,
+ int main_render_frame_id,
+ bool visible) {
+ RenderFrameHostID main_render_frame_host_id(main_render_process_id,
+ main_render_frame_id);
+
+ auto frame_iter =
+ main_render_frame_data_use_map_.find(main_render_frame_host_id);
+ if (frame_iter != main_render_frame_data_use_map_.end())
+ frame_iter->second->set_is_visible(visible);
+
+ if (visible) {
+ visible_main_render_frames_.insert(main_render_frame_host_id);
+ } else {
+ visible_main_render_frames_.erase(main_render_frame_host_id);
+ }
+}
+
+void ChromeDataUseAscriber::RenderFrameHostChanged(int old_render_process_id,
+ int old_render_frame_id,
+ int new_render_process_id,
+ int new_render_frame_id) {
+ if (visible_main_render_frames_.find(
+ RenderFrameHostID(old_render_process_id, old_render_frame_id)) !=
+ visible_main_render_frames_.end()) {
+ WasShownOrHidden(new_render_process_id, new_render_frame_id, true);
+ }
+}
+
} // namespace data_use_measurement

Powered by Google App Engine
This is Rietveld 408576698