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

Reply via email to