Ori.livneh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/322095
Change subject: Don't report stats when page visibility changes during page load
......................................................................
Don't report stats when page visibility changes during page load
Browsers sometime defer or deprioritize painting or executing code on
pages that load in the background (for example, in an inactive browser
tab). We don't want to report metrics in these cases, because a slow
page load is not necessarily a bad thing if it is invisible to the user
and if the slowdown is in service of making some operation that is
user-facing quicker.
Bug: T146510
Change-Id: I8e8ec96fc99f1e38d254f421c5f48cb313ba36e5
(cherry picked from commit 9532593ecc78b6415d4a014850e1c4d5a05b6c73)
---
M modules/ext.navigationTiming.js
1 file changed, 29 insertions(+), 2 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/NavigationTiming
refs/changes/95/322095/1
diff --git a/modules/ext.navigationTiming.js b/modules/ext.navigationTiming.js
index 5c45e64..3baf459 100644
--- a/modules/ext.navigationTiming.js
+++ b/modules/ext.navigationTiming.js
@@ -8,12 +8,39 @@
( function ( mw, $ ) {
'use strict';
- var timing, navigation, mediaWikiLoadEnd,
+ var timing, navigation, mediaWikiLoadEnd, hiddenProp, visibilityEvent,
+ visibilityChanged = false,
TYPE_NAVIGATE = 0;
if ( window.performance ) {
timing = performance.timing;
navigation = performance.navigation;
+ }
+
+ // Don't report measurements for pages that have loaded in the
background.
+ // Browsers defer or deprioritize loading background pages, causing
them to
+ // take longer to load, which throws off our measurements.
+ // See <https://phabricator.wikimedia.org/T146510#2794213> for more
details.
+ if ( typeof document.hidden !== 'undefined' ) {
+ hiddenProp = 'hidden';
+ visibilityEvent = 'visibilitychange';
+ } else if ( typeof document.mozHidden !== 'undefined' ) {
+ hiddenProp = 'mozHidden';
+ visibilityEvent = 'mozvisibilitychange';
+ } else if ( typeof document.msHidden !== 'undefined' ) {
+ hiddenProp = 'msHidden';
+ visibilityEvent = 'msvisibilitychange';
+ } else if ( typeof document.webkitHidden !== 'undefined' ) {
+ hiddenProp = 'webkitHidden';
+ visibilityEvent = 'webkitvisibilitychange';
+ }
+ if ( hiddenProp ) {
+ $( document ).one( visibilityEvent, function () {
+ visibilityChanged = true;
+ } );
+ if ( document[ hiddenProp ] ) {
+ visibilityChanged = true;
+ }
}
function inSample() {
@@ -234,7 +261,7 @@
// Ensure we run after loadEventEnd.
onLoadComplete( function () {
- if ( inSample() ) {
+ if ( inSample() && !visibilityChanged ) {
emitNavigationTiming();
}
mw.hook( 'postEdit' ).add( emitSaveTiming );
--
To view, visit https://gerrit.wikimedia.org/r/322095
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8e8ec96fc99f1e38d254f421c5f48cb313ba36e5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/NavigationTiming
Gerrit-Branch: wmf/1.29.0-wmf.2
Gerrit-Owner: Ori.livneh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits