From eea19f3e188de75967ef460b5f49524ffabc2d55 Mon Sep 17 00:00:00 2001 From: jdlrobson Date: Thu, 16 Aug 2018 14:59:48 -0700 Subject: [PATCH] PageIssues should use new standard pageToken getter Rather than inventing its own page token the PageIssues schema will rely on the standard page token. In future when I9bb18d47e36d2d99d812e5b47ea9516d3dff3a16 is merged this will mean that PageIssues and ReadingDepth have consistent page tokens. Bug: T201124 Change-Id: I19fea41e04cd792423ea9d41a673563418b69726 --- resources/skins.minerva.scripts/pageIssues.js | 2 +- .../skins.minerva.scripts/pageIssuesLogger.js | 30 +++++++++++-------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/resources/skins.minerva.scripts/pageIssues.js b/resources/skins.minerva.scripts/pageIssues.js index c552d89..8999bab 100644 --- a/resources/skins.minerva.scripts/pageIssues.js +++ b/resources/skins.minerva.scripts/pageIssues.js @@ -266,7 +266,7 @@ } if ( isLoggingRequired( getIssues( KEYWORD_ALL_SECTIONS ) ) ) { - // Enable logging. + // Enable logging of the PageIssues schema, setting up defaults. pageIssuesLogger.subscribe( newTreatmentEnabled, pageIssuesLogger.newPageIssueSchemaData( diff --git a/resources/skins.minerva.scripts/pageIssuesLogger.js b/resources/skins.minerva.scripts/pageIssuesLogger.js index 4a6db0b..ed22958 100644 --- a/resources/skins.minerva.scripts/pageIssuesLogger.js +++ b/resources/skins.minerva.scripts/pageIssuesLogger.js @@ -1,9 +1,10 @@ -( function ( M, mwConfig, mwNow, mwTrack, mwTrackSubscribe, mwUser ) { +( function ( M, mwConfig, mwTrack, mwTrackSubscribe, mwUser, mwLoader ) { var util = M.require( 'mobile.startup/util' ), EVENT_PAGE_ISSUE_LOG = 'minerva.PageIssuesAB'; /** + * Defines default data for Schema:PageIssues that will be recorded with every event. * @param {boolean} newTreatmentEnabled * @param {number} namespaceId The namespace for the page that has issues. * @param {string[]} pageIssueSeverities An array of PageIssue severities. @@ -18,28 +19,33 @@ issuesSeverity: pageIssueSeverities, isAnon: mwUser.isAnon(), editCountBucket: getUserEditBuckets(), - pageToken: mwUser.generateRandomSessionId() + Math.floor( mwNow() ).toString(), sessionToken: mwUser.sessionId() }; } /** - * Enable tracking. + * Enable tracking and add page token to every logged event. * @param {boolean} newTreatmentEnabled * @param {Object} pageIssueSchemaData A Partial Object that will be mixed with * with track data. * @return {void} */ function subscribe( newTreatmentEnabled, pageIssueSchemaData ) { - // intermediary event bus that extends the event data before being passed to event-logging. - mwTrackSubscribe( EVENT_PAGE_ISSUE_LOG, function ( topic, data ) { - var mixedData = util.extend( {}, pageIssueSchemaData, data ); + // this is wrapped inside a mw.loader call given the need to access mw.eventLog.getPageviewToken + // which may or may not be defined. If EventLogging is not installed, so logging will occur. + mwLoader.using( 'ext.eventLogging.subscriber' ).then( function () { + // set the page token on the request. + pageIssueSchemaData.pageToken = mw.eventLog.getPageviewToken(); - // Log readingDepth schema.(ReadingDepth is guarded against multiple enables). - // See https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/WikimediaEvents/+/437686/ - mwTrack( 'wikimedia.event.ReadingDepthSchema.enable', bucketToGroup( newTreatmentEnabled ) ); - // Log PageIssues schema. - mwTrack( 'wikimedia.event.PageIssues', mixedData ); + // intermediary event bus that extends the event data before being passed to event-logging. + mwTrackSubscribe( EVENT_PAGE_ISSUE_LOG, function ( topic, data ) { + var mixedData = util.extend( {}, pageIssueSchemaData, data ); + // Log readingDepth schema.(ReadingDepth is guarded against multiple enables). + // See https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/WikimediaEvents/+/437686/ + mwTrack( 'wikimedia.event.ReadingDepthSchema.enable', bucketToGroup( newTreatmentEnabled ) ); + // Log PageIssues schema. + mwTrack( 'wikimedia.event.PageIssues', mixedData ); + } ); } ); } @@ -94,4 +100,4 @@ subscribe: subscribe, log: log } ); -}( mw.mobileFrontend, mw.config, mw.now, mw.track, mw.trackSubscribe, mw.user ) ); +}( mw.mobileFrontend, mw.config, mw.track, mw.trackSubscribe, mw.user, mw.loader ) );