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

Issue 2189543002: Notify page load metrics when the app enters the background. (Closed)

Created:
4 years, 4 months ago by Bryan McQuade
Modified:
4 years, 4 months ago
CC:
asvitkine+watch_chromium.org, chromium-reviews, csharrison+watch_chromium.org, loading-reviews+metrics_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@clankbackgroundcallback
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Notify page load metrics when the app enters the background. This change adds a PageLoadMetricsProvider, which implements the new OnAppEnterBackground hook, and informs all MetricsWebContentsObservers and in turn all PageLoadTrackers when the app enters the background. On Android (and iOS), when an app enters the background, it may be killed without further notifications. Thus, having this callback will allow us to persist metrics before the app may be killed. Our page load metrics subsystem isn't used on iOS, so we only target Android in this change. Unfortunately, we can't use the existing WebContents hidden callback, as this gets invoked after the UMA subsystem has already flushed metrics to disk. Thus, we need to add this explicit callback which allows us to persist metrics as part of the UMA subsystem handling the backgrounding callback. For now, we log a debugging histogram in PageLoadTracker to help understand how often trackers enter the background, and how often those trackers are destroyed without running their destructors. In a subsequent change, we'll add support for informing PLMObservers that the app entered the background. This will allow any PLMObsevers that implement OnComplete or OnFailedProvisionalLoad to also get called back in cases where the tracker may be destroyed before its destructor runs, due to the application being killed. BUG=608360 Committed: https://crrev.com/9eca220417aa1050fbe8b431fee890f0b5b42240 Cr-Commit-Position: refs/heads/master@{#408744}

Patch Set 1 #

Patch Set 2 : add histogram to help understand how often backgrounding results in killing the app #

Patch Set 3 : add GetAllObservers test #

Patch Set 4 : rebase #

Patch Set 5 : rebase #

Patch Set 6 : rename method #

Total comments: 18

Patch Set 7 : add comments #

Patch Set 8 : clean up WebContents iteration #

Patch Set 9 : fix tests #

Patch Set 10 : remove includes #

Patch Set 11 : restrict use of provider to android platform #

Patch Set 12 : switch from TabContentsIterator to android equivalent #

Patch Set 13 : switch to common macro #

Patch Set 14 : final cleanup #

Patch Set 15 : guard against null webcontents #

Total comments: 4

Patch Set 16 : address comments #

Patch Set 17 : update histogram #

Patch Set 18 : fix histogram description #

Unified diffs Side-by-side diffs Delta from patch set Stats (+155 lines, -0 lines) Patch
M chrome/browser/metrics/chrome_metrics_service_client.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +3 lines, -0 lines 0 comments Download
A chrome/browser/metrics/page_load_metrics_provider.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +25 lines, -0 lines 0 comments Download
A chrome/browser/metrics/page_load_metrics_provider.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +30 lines, -0 lines 0 comments Download
M chrome/browser/page_load_metrics/metrics_web_contents_observer.h View 1 2 3 4 5 6 7 4 chunks +17 lines, -0 lines 0 comments Download
M chrome/browser/page_load_metrics/metrics_web_contents_observer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 chunks +30 lines, -0 lines 0 comments Download
M chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc View 1 2 3 4 5 6 7 8 1 chunk +27 lines, -0 lines 0 comments Download
M chrome/chrome_browser.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M tools/metrics/histograms/histograms.xml View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +21 lines, -0 lines 0 comments Download

Messages

Total messages: 99 (75 generated)
Bryan McQuade
PTAL. Once we're happy with this, I'll send to asvitkine for review of the new ...
4 years, 4 months ago (2016-07-27 19:37:56 UTC) #22
Charlie Harrison
Thanks, this one is pretty necessary. https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/metrics/page_load_metrics_provider.cc File chrome/browser/metrics/page_load_metrics_provider.cc (right): https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/metrics/page_load_metrics_provider.cc#newcode18 chrome/browser/metrics/page_load_metrics_provider.cc:18: for (auto observer ...
4 years, 4 months ago (2016-07-28 14:45:28 UTC) #29
Bryan McQuade
Thanks! See what you think about moving GetAllWebContents() from WebContentsImpl to WebContents. https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/metrics/page_load_metrics_provider.cc File chrome/browser/metrics/page_load_metrics_provider.cc ...
4 years, 4 months ago (2016-07-28 16:26:11 UTC) #30
Bryan McQuade
https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc File chrome/browser/page_load_metrics/metrics_web_contents_observer.cc (right): https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc#newcode271 chrome/browser/page_load_metrics/metrics_web_contents_observer.cc:271: if (app_entered_background_) { On 2016/07/28 at 16:26:11, Bryan McQuade ...
4 years, 4 months ago (2016-07-28 16:29:15 UTC) #33
Charlie Harrison
Thanks. +creis for question about exposing WebContentsImpl method. Is this acceptable if our alternative is ...
4 years, 4 months ago (2016-07-28 16:38:05 UTC) #35
Charlie Reis
John, can you weigh in on the question about iterating over WebContents below? https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc File ...
4 years, 4 months ago (2016-07-28 17:36:49 UTC) #39
Charlie Harrison
https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc File chrome/browser/page_load_metrics/metrics_web_contents_observer.cc (right): https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc#newcode649 chrome/browser/page_load_metrics/metrics_web_contents_observer.cc:649: if (web_contents->GetRenderViewHost() != rvh) On 2016/07/28 17:36:49, Charlie Reis ...
4 years, 4 months ago (2016-07-28 17:42:17 UTC) #40
Bryan McQuade
On 2016/07/28 at 17:42:17, csharrison wrote: > https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc > File chrome/browser/page_load_metrics/metrics_web_contents_observer.cc (right): > > https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc#newcode649 ...
4 years, 4 months ago (2016-07-28 17:50:32 UTC) #41
Charlie Reis
https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc File chrome/browser/page_load_metrics/metrics_web_contents_observer.cc (right): https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc#newcode649 chrome/browser/page_load_metrics/metrics_web_contents_observer.cc:649: if (web_contents->GetRenderViewHost() != rvh) On 2016/07/28 17:50:32, Bryan McQuade ...
4 years, 4 months ago (2016-07-28 17:56:44 UTC) #42
Bryan McQuade
On 2016/07/28 at 17:56:44, creis wrote: > https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc > File chrome/browser/page_load_metrics/metrics_web_contents_observer.cc (right): > > https://codereview.chromium.org/2189543002/diff/100001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc#newcode649 ...
4 years, 4 months ago (2016-07-28 18:02:07 UTC) #43
Bryan McQuade
On 2016/07/28 at 18:02:07, Bryan McQuade wrote: > On 2016/07/28 at 17:56:44, creis wrote: > ...
4 years, 4 months ago (2016-07-28 18:09:16 UTC) #44
jam
On 2016/07/28 17:36:49, Charlie Reis wrote: > John, can you weigh in on the question ...
4 years, 4 months ago (2016-07-28 18:11:57 UTC) #45
Charlie Reis
On 2016/07/28 18:09:16, Bryan McQuade wrote: > On 2016/07/28 at 18:02:07, Bryan McQuade wrote: > ...
4 years, 4 months ago (2016-07-28 18:18:33 UTC) #46
Bryan McQuade
Since this change targets Android, I ended up not being able to use TabContentsIterator. I ...
4 years, 4 months ago (2016-07-28 22:19:26 UTC) #71
Charlie Harrison
LGTM but I'm not 100% familiar with the new iteration technique.
4 years, 4 months ago (2016-07-28 22:31:32 UTC) #72
Bryan McQuade
On 2016/07/28 at 22:31:32, csharrison wrote: > LGTM but I'm not 100% familiar with the ...
4 years, 4 months ago (2016-07-28 23:44:08 UTC) #75
Bryan McQuade
asvitkine, PTAL, thanks!
4 years, 4 months ago (2016-07-28 23:45:16 UTC) #78
Bryan McQuade
Oops, forgot to add asvitkine. asvitkine, PTAL. Thanks!
4 years, 4 months ago (2016-07-29 00:57:59 UTC) #82
Alexei Svitkine (slow)
https://codereview.chromium.org/2189543002/diff/280001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc File chrome/browser/page_load_metrics/metrics_web_contents_observer.cc (right): https://codereview.chromium.org/2189543002/diff/280001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc#newcode270 chrome/browser/page_load_metrics/metrics_web_contents_observer.cc:270: UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground, true); Each histogram macro resolves to a lot ...
4 years, 4 months ago (2016-07-29 17:31:27 UTC) #84
Bryan McQuade
Thanks! Addressed comments. PTAL. https://codereview.chromium.org/2189543002/diff/280001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc File chrome/browser/page_load_metrics/metrics_web_contents_observer.cc (right): https://codereview.chromium.org/2189543002/diff/280001/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc#newcode270 chrome/browser/page_load_metrics/metrics_web_contents_observer.cc:270: UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground, true); On 2016/07/29 at ...
4 years, 4 months ago (2016-07-29 17:48:10 UTC) #88
Alexei Svitkine (slow)
lgtm
4 years, 4 months ago (2016-07-29 17:57:11 UTC) #92
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2189543002/340001
4 years, 4 months ago (2016-07-29 19:33:08 UTC) #96
commit-bot: I haz the power
Committed patchset #18 (id:340001)
4 years, 4 months ago (2016-07-29 21:07:58 UTC) #97
commit-bot: I haz the power
4 years, 4 months ago (2016-07-29 21:09:19 UTC) #99
Message was sent while issue was closed.
Patchset 18 (id:??) landed as
https://crrev.com/9eca220417aa1050fbe8b431fee890f0b5b42240
Cr-Commit-Position: refs/heads/master@{#408744}

Powered by Google App Engine
This is Rietveld 408576698