Jdlrobson has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/315610

Change subject: Move logic for dwelledButAbandoned to central log method
......................................................................

Move logic for dwelledButAbandoned to central log method

Add tests.

Change-Id: Ieba557c9adb544db6200aecdf141587c49ebb2e2
---
M resources/ext.popups.core.js
M resources/ext.popups.renderer/desktopRenderer.js
M resources/ext.popups.targets/desktopTarget.js
M tests/qunit/ext.popups.core.test.js
4 files changed, 60 insertions(+), 31 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Popups 
refs/changes/10/315610/1

diff --git a/resources/ext.popups.core.js b/resources/ext.popups.core.js
index 42d5418..9964937 100644
--- a/resources/ext.popups.core.js
+++ b/resources/ext.popups.core.js
@@ -1,7 +1,16 @@
 ( function ( $, mw ) {
        'use strict';
-       var previewCountStorageKey = 'ext.popups.core.previewCount',
+       var DWELL_EVENTS_MIN_INTERACTION_TIME,
+               previewCountStorageKey = 'ext.popups.core.previewCount',
                popupsEnabledStorageKey = 'mwe-popups-enabled';
+
+       /**
+        * Minimum time to log dwelledButAbandoned events. Initially considered 
as
+        * 250ms to avoid accidental hovers being logged. Now logging all 
events to
+        * verify data. See T145379
+        * @property DWELL_EVENTS_MIN_INTERACTION_TIME
+        */
+       DWELL_EVENTS_MIN_INTERACTION_TIME = 0;
 
        /**
         * @class mw.popups
@@ -36,6 +45,25 @@
        ];
 
        /**
+        * Decide whether to log an event
+        *
+        * @method log
+        * @param {string} action that is being logged
+        * @param {Object} [logData]
+        */
+       function shouldLog( action, logData ) {
+               if ( action === 'dwelledButAbandoned' &&
+                       logData.dwellStartTime &&
+                       logData.linkInteractionToken &&
+                       mw.now() - logData.dwellStartTime < 
DWELL_EVENTS_MIN_INTERACTION_TIME
+               ) {
+                       return false;
+               } else {
+                       return true;
+               }
+       }
+
+       /**
         * Log events
         *
         * @method log
@@ -44,13 +72,16 @@
         */
        mw.popups.log = function ( action, logData ) {
                logData = logData || {};
-               mw.track( 'ext.popups.schemaPopups',
-                       $.extend( {}, logData, {
-                               action: action,
-                               // Some events e.g. pageLoaded do not have an 
interaction time.
-                               totalInteractionTime: logData.dwellStartTime ? 
Math.round( mw.now() - logData.dwellStartTime ) : undefined
-                       } )
-               );
+
+               if ( shouldLog( action, logData ) ) {
+                       mw.track( 'ext.popups.schemaPopups',
+                               $.extend( {}, logData, {
+                                       action: action,
+                                       // Some events e.g. pageLoaded do not 
have an interaction time.
+                                       totalInteractionTime: 
logData.dwellStartTime ? Math.round( mw.now() - logData.dwellStartTime ) : 
undefined
+                               } )
+                       );
+               }
        };
 
        /**
diff --git a/resources/ext.popups.renderer/desktopRenderer.js 
b/resources/ext.popups.renderer/desktopRenderer.js
index 7b574d5..1005f56 100644
--- a/resources/ext.popups.renderer/desktopRenderer.js
+++ b/resources/ext.popups.renderer/desktopRenderer.js
@@ -75,14 +75,6 @@
        mw.popups.render.API_DELAY = 50;
 
        /**
-        * Minimum time to log dwelledButAbandoned events. Initially considered 
as
-        * 250ms to avoid accidental hovers being logged. Now logging all 
events to
-        * verify data. See T145379
-        * @property DWELL_EVENTS_MIN_INTERACTION_TIME
-        */
-       mw.popups.render.DWELL_EVENTS_MIN_INTERACTION_TIME = 0;
-
-       /**
         * Cache of all the popups that were opened in this session
         * @property {Object} cache
         */
@@ -372,12 +364,7 @@
        function leaveInactive() {
                var $activeLink = getActiveLink();
 
-               if ( logData.dwellStartTime &&
-                       logData.linkInteractionToken &&
-                       mw.now() - logData.dwellStartTime >= 
mw.popups.render.DWELL_EVENTS_MIN_INTERACTION_TIME
-               ) {
-                       mw.popups.log( 'dwelledButAbandoned', logData );
-               }
+               mw.popups.log( 'dwelledButAbandoned', logData );
                // TODO: should `blur` also be here?
                $activeLink.off( 'mouseleave', leaveInactive );
                if ( openTimer ) {
diff --git a/resources/ext.popups.targets/desktopTarget.js 
b/resources/ext.popups.targets/desktopTarget.js
index 3982147..58cd372 100644
--- a/resources/ext.popups.targets/desktopTarget.js
+++ b/resources/ext.popups.targets/desktopTarget.js
@@ -20,15 +20,11 @@
 
                $this.off( 'mouseleave blur', onLinkAbandon );
 
-               if ( data.dwellStartTime && data.linkInteractionToken &&
-                       mw.now() - data.dwellStartTime >= 
mw.popups.render.DWELL_EVENTS_MIN_INTERACTION_TIME
-               ) {
-                       mw.popups.log( 'dwelledButAbandoned', {
-                               pageTitleHover: $this.attr( 'title' ),
-                               linkInteractionToken: data.linkInteractionToken,
-                               hovercardsSuppressedByGadget: 
data.hovercardsSuppressedByGadget
-                       } );
-               }
+               mw.popups.log( 'dwelledButAbandoned', {
+                       pageTitleHover: $this.attr( 'title' ),
+                       linkInteractionToken: data.linkInteractionToken,
+                       hovercardsSuppressedByGadget: 
data.hovercardsSuppressedByGadget
+               } );
        }
 
        /**
diff --git a/tests/qunit/ext.popups.core.test.js 
b/tests/qunit/ext.popups.core.test.js
index 360c2ee..b167146 100644
--- a/tests/qunit/ext.popups.core.test.js
+++ b/tests/qunit/ext.popups.core.test.js
@@ -6,6 +6,21 @@
                }
        } ) );
 
+
+       QUnit.test( 'log#dwelledButAbandoned', 2, function ( assert ) {
+               var spy = this.sandbox.spy( mw, 'track' );
+               mw.popups.log( 'dwelledButAbandoned', {} );
+               assert.ok( spy.called );
+               spy.reset();
+               mw.popups.log( 'dwelledButAbandoned', {
+                       // make this in the future so answer is negative
+                       dwellStartTime: mw.now() + 1000,
+                       linkInteractionToken: 'yes'
+               } );
+               assert.ok( !spy.called,
+                       'Should not be called if event is shorter than 
DWELL_EVENTS_MIN_INTERACTION_TIME (currently equal to 0)' );
+       } );
+
        QUnit.test( 'getTitle', function ( assert ) {
                var cases, i, expected, actual;
 

-- 
To view, visit https://gerrit.wikimedia.org/r/315610
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieba557c9adb544db6200aecdf141587c49ebb2e2
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Popups
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <jrob...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to