Jdlrobson has uploaded a new change for review.
https://gerrit.wikimedia.org/r/278204
Change subject: Reduce the initial JavaScript payload
......................................................................
Reduce the initial JavaScript payload
Reduce the initial JS payload by 17kb
Changes:
* Avoid loading the mobile.issues library until needed
** Fix an issue with the icon preventing it from showing in the overlay
** Move the bootstrap script into skins.minerva.scripts
** Remove qunit test which is covered in browser tests and not a true
unit test.
* Avoid loading the entire mobile.search module on startup - instead break the
logging code into a lightweight mobile.search.logger module
Change-Id: Ib258bc78f54b551effeaa6978f92c05d9fb7310f
---
M extension.json
D resources/mobile.issues/cleanuptemplates.js
M resources/mobile.issues/issues.less
R resources/mobile.search.logger/MobileWebSearchLogger.js
A resources/skins.minerva.scripts/cleanup.less
M resources/skins.minerva.scripts/init.js
M resources/skins.minerva.scripts/initCleanuptemplates.js
M resources/skins.minerva.scripts/search.js
D tests/qunit/mobile.issues/test_cleanuptemplates.js
R tests/qunit/mobile.search.logger/test_MobileWebSearchLogger.js
10 files changed, 58 insertions(+), 197 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend
refs/changes/04/278204/1
diff --git a/extension.json b/extension.json
index 15ef9c4..67daa05 100644
--- a/extension.json
+++ b/extension.json
@@ -235,7 +235,7 @@
"selector": ".mw-ui-icon-{name}:before",
"images": {
"cleanup":
"resources/mobile.issues.images/blue-triangle.svg",
- "cleanup->gray":
"resources/mobile.issues.images/gray-triangle.svg"
+ "cleanup-gray":
"resources/mobile.issues.images/gray-triangle.svg"
}
},
"mobile.toc.images": {
@@ -809,15 +809,13 @@
"class": "MFResourceLoaderParsedMessageModule",
"dependencies": [
"mobile.pagelist.scripts",
- "mobile.overlays",
- "mobile.loggingSchemas"
+ "mobile.overlays"
],
"styles": [
"resources/mobile.search/SearchOverlay.less"
],
"scripts": [
- "resources/mobile.search/SearchOverlay.js",
-
"resources/mobile.search/MobileWebSearchLogger.js"
+ "resources/mobile.search/SearchOverlay.js"
],
"templates": {
"SearchOverlay.hogan":
"resources/mobile.search/SearchOverlay.hogan"
@@ -833,8 +831,23 @@
"4": "mobile-frontend-search-feedback-link-text"
}
},
+ "mobile.search.logger": {
+ "targets": [
+ "mobile",
+ "desktop"
+ ],
+ "dependencies": [
+ "mobile.loggingSchemas"
+ ],
+ "scripts": [
+
"resources/mobile.search.logger/MobileWebSearchLogger.js"
+ ]
+ },
"mobile.search.api": {
- "class": "MFResourceLoaderParsedMessageModule",
+ "targets": [
+ "mobile",
+ "desktop"
+ ],
"dependencies": [
"mobile.startup",
"mediawiki.Title"
@@ -1238,15 +1251,7 @@
"resources/mobile.issues/issues.less"
],
"scripts": [
- "resources/mobile.issues/CleanupOverlay.js",
- "resources/mobile.issues/cleanuptemplates.js"
- ],
- "messages": [
- "mobile-frontend-meta-data-issues",
- "mobile-frontend-meta-data-issues-talk",
- "mobile-frontend-meta-data-issues-header",
- "mobile-frontend-meta-data-issues-header-talk",
- "mobile-frontend-meta-data-issues-categories"
+ "resources/mobile.issues/CleanupOverlay.js"
]
},
"mobile.nearby": {
@@ -1598,8 +1603,7 @@
"mobile.startup",
"mobile.mainMenu",
"mobile.loggingSchemas",
- "mobile.issues",
- "mobile.search",
+ "mobile.search.logger",
"mobile.references",
"mobile.betaoptin",
"mobile.toast",
@@ -1615,11 +1619,20 @@
"mobile-frontend-last-modified-with-user-months",
"mobile-frontend-last-modified-with-user-years",
"mobile-frontend-last-modified-with-user-just-now",
- "mobile-frontend-cookies-required"
+ "mobile-frontend-cookies-required",
+ "mobile-frontend-meta-data-issues",
+ "mobile-frontend-meta-data-issues-talk",
+ "mobile-frontend-meta-data-issues-header",
+ "mobile-frontend-meta-data-issues-header-talk",
+ "mobile-frontend-meta-data-issues-categories"
+ ],
+ "styles": [
+ "resources/skins.minerva.scripts/cleanup.less"
],
"scripts": [
"resources/skins.minerva.scripts/preInit.js",
"resources/skins.minerva.scripts/init.js",
+
"resources/skins.minerva.scripts/initCleanupTemplates.js",
"resources/skins.minerva.scripts/initLogging.js",
"resources/skins.minerva.scripts/mobileRedirect.js",
"resources/skins.minerva.scripts/search.js"
diff --git a/resources/mobile.issues/cleanuptemplates.js
b/resources/mobile.issues/cleanuptemplates.js
deleted file mode 100644
index b3213f5..0000000
--- a/resources/mobile.issues/cleanuptemplates.js
+++ /dev/null
@@ -1,126 +0,0 @@
-( function ( M, $ ) {
-
- var module = ( function () {
- var overlayManager = M.require( 'mobile.startup/overlayManager'
),
- CleanupOverlay = M.require(
'mobile.issues/CleanupOverlay' );
-
- /**
- * Extract a summary message from a cleanup template generated
element that is
- * friendly for mobile display.
- * @param {Object} $box element to extract the message from
- * @ignore
- * @return {String} html of message.
- */
- function extractMessage( $box ) {
- var selector = '.mbox-text, .ambox-text',
- $container = $( '<div>' );
-
- $box.find( selector ).each( function () {
- var contents,
- $this = $( this );
- // Clean up talk page boxes
- $this.find( 'table, .noprint' ).remove();
- contents = $this.html();
-
- if ( contents ) {
- $( '<p>' ).html( contents ).appendTo(
$container );
- }
- } );
- return $container.html();
- }
-
- /**
- * Create a link element that opens the issues overlay.
- *
- * @ignore
- *
- * @param {String} labelText The text value of the element
- * @return {jQuery}
- */
- function createLinkElement( labelText ) {
- return $( '<a class="cleanup mw-mf-cleanup"></a>' )
- .text( labelText );
- }
-
- /**
- * Render a banner in a containing element.
- * @param {jQuery.Object} $container to render the page issues
banner inside.
- * @param {String} labelText what the label of the page issues
banner should say
- * @param {String} headingText the heading of the overlay that
is created when the page issues banner is clicked
- * @ignore
- */
- function createBanner( $container, labelText, headingText ) {
- var selector = 'table.ambox, table.tmbox, table.cmbox',
- $metadata = $container.find( selector ),
- issues = [],
- $link;
-
- // clean it up a little
- $metadata.find( '.NavFrame' ).remove();
-
- $metadata.each( function () {
- var content,
- $this = $( this );
-
- if ( $this.find( selector ).length === 0 ) {
- content = extractMessage( $this );
- if ( content ) {
- issues.push( {
- text: content
- } );
- }
- }
- } );
-
- $link = createLinkElement( labelText );
- $link.attr( 'href', '#/issues' );
-
- overlayManager.add( /^\/issues$/, function () {
- return new CleanupOverlay( {
- issues: issues,
- headingText: headingText
- } );
- } );
-
- if ( $metadata.length ) {
- $link.insertAfter( $( 'h1#section_0' ) );
-
- $metadata.remove();
- }
- }
-
- /**
- * Scan an element for any known cleanup templates and replace
them with a button
- * that opens them in a mobile friendly overlay.
- * @ignore
- */
- function initPageIssues() {
- var ns = mw.config.get( 'wgNamespaceNumber' ),
- // Categories have no lead section
- $container = ns === 14 ? $( '#bodyContent' )
- :
M.getCurrentPage().getLeadSectionElement(),
- labelMsgKey =
'mobile-frontend-meta-data-issues';
-
- if ( ns === 0 ) {
- createBanner( $container, mw.msg( labelMsgKey ),
- mw.msg(
'mobile-frontend-meta-data-issues-header' ) );
- // Create a banner for talk pages (namespace 1) in beta
mode to make them more readable.
- } else if ( ns === 1 ) {
- createBanner( $container, mw.msg(
'mobile-frontend-meta-data-issues-talk' ),
- mw.msg(
'mobile-frontend-meta-data-issues-header-talk' ) );
- } else if ( ns === 14 ) {
- createBanner( $container, mw.msg(
'mobile-frontend-meta-data-issues-categories' ),
- mw.msg(
'mobile-frontend-meta-data-issues-header-talk' ) );
- }
- }
-
- return {
- init: initPageIssues,
- createBanner: createBanner,
- _extractMessage: extractMessage
- };
- }() );
-
- M.define( 'mobile.issues/cleanuptemplates', module );
-
-}( mw.mobileFrontend, jQuery ) );
diff --git a/resources/mobile.issues/issues.less
b/resources/mobile.issues/issues.less
index 795e0a9..cfbc5c0 100644
--- a/resources/mobile.issues/issues.less
+++ b/resources/mobile.issues/issues.less
@@ -5,14 +5,6 @@
@smallIconSize: 24px;
@largeIconSize: 50px;
-.mw-mf-cleanup {
- display: block;
- margin: 0;
- padding: 0;
- font-size: .8em;
- color: @colorGray7;
-}
-
// overlay styles
.overlay {
.cleanup {
diff --git a/resources/mobile.search/MobileWebSearchLogger.js
b/resources/mobile.search.logger/MobileWebSearchLogger.js
similarity index 97%
rename from resources/mobile.search/MobileWebSearchLogger.js
rename to resources/mobile.search.logger/MobileWebSearchLogger.js
index fe41491..ced5a85 100644
--- a/resources/mobile.search/MobileWebSearchLogger.js
+++ b/resources/mobile.search.logger/MobileWebSearchLogger.js
@@ -123,6 +123,6 @@
} );
};
- M.define( 'mobile.search/MobileWebSearchLogger', MobileWebSearchLogger
);
+ M.define( 'mobile.search.logger/MobileWebSearchLogger',
MobileWebSearchLogger );
}( mw.mobileFrontend, mw, jQuery ) );
diff --git a/resources/skins.minerva.scripts/cleanup.less
b/resources/skins.minerva.scripts/cleanup.less
new file mode 100644
index 0000000..9167f68
--- /dev/null
+++ b/resources/skins.minerva.scripts/cleanup.less
@@ -0,0 +1,8 @@
+@import "minerva.variables";
+.mw-mf-cleanup {
+ display: block;
+ margin: 0;
+ padding: 0;
+ font-size: .8em;
+ color: @colorGray7;
+}
\ No newline at end of file
diff --git a/resources/skins.minerva.scripts/init.js
b/resources/skins.minerva.scripts/init.js
index 898ddd1..cea677e 100644
--- a/resources/skins.minerva.scripts/init.js
+++ b/resources/skins.minerva.scripts/init.js
@@ -9,7 +9,6 @@
context = M.require( 'mobile.context/context' ),
// FIXME: Don't pull in the mobile.references library on
startup. Lazy load it when needed
references = M.require( 'mobile.references/references' ),
- cleanuptemplates = M.require( 'mobile.issues/cleanuptemplates'
),
useNewMediaViewer = context.isBetaGroupMember(),
overlayManager = M.require( 'mobile.startup/overlayManager' ),
page = M.getCurrentPage(),
@@ -250,13 +249,6 @@
.appendTo(
M.getCurrentPage().getLeadSectionElement() );
}
}
-
- // Setup the issues banner on the page
- cleanuptemplates.init();
- // Show it in edit preview.
- M.on( 'edit-preview', function ( overlay ) {
- cleanuptemplates.init( overlay.$el );
- } );
// let the interested parties know whether the panel is shown
mw.track( 'minerva.betaoptin', {
diff --git a/resources/skins.minerva.scripts/initCleanuptemplates.js
b/resources/skins.minerva.scripts/initCleanuptemplates.js
index cb5e8fd..ddffea9 100644
--- a/resources/skins.minerva.scripts/initCleanuptemplates.js
+++ b/resources/skins.minerva.scripts/initCleanuptemplates.js
@@ -1,6 +1,7 @@
( function ( M, $ ) {
-
- var module = ( function () {
+ var moduleLoader = M.require( 'mobile.overlays/moduleLoader' );
+
+ var cleanuptemplates = ( function () {
var overlayManager = M.require( 'mobile.startup/overlayManager'
);
/**
@@ -75,19 +76,21 @@
$link.attr( 'href', '#/issues' );
overlayManager.add( /^\/issues$/, function () {
- mw.loader.using( 'mobile.issues' ).done(
function () {
+ var result = $.Deferred();
+ moduleLoader.loadModule( 'mobile.issues'
).done( function () {
var CleanupOverlay = M.require(
'mobile.issues/CleanupOverlay' );
- return new CleanupOverlay( {
+ result.resolve( new CleanupOverlay( {
issues: issues,
headingText: headingText
- } );
- } )
+ } ) );
+ } );
+ return result;
} );
if ( $metadata.length ) {
$link.insertAfter( $( 'h1#section_0' ) );
- $metadata.remove();
+ $metadata.empty();
}
}
@@ -123,6 +126,11 @@
};
}() );
- M.define( 'mobile.issues/cleanuptemplates', module );
+ // Setup the issues banner on the page
+ cleanuptemplates.init();
+ // Show it in edit preview.
+ M.on( 'edit-preview', function ( overlay ) {
+ cleanuptemplates.init( overlay.$el );
+ } );
}( mw.mobileFrontend, jQuery ) );
diff --git a/resources/skins.minerva.scripts/search.js
b/resources/skins.minerva.scripts/search.js
index fa29ca9..a0e0353 100644
--- a/resources/skins.minerva.scripts/search.js
+++ b/resources/skins.minerva.scripts/search.js
@@ -55,6 +55,6 @@
.prop( 'readonly', true );
}
- M.require( 'mobile.search/MobileWebSearchLogger' ).register();
+ M.require( 'mobile.search.logger/MobileWebSearchLogger' ).register();
}( mw.mobileFrontend, jQuery ) );
diff --git a/tests/qunit/mobile.issues/test_cleanuptemplates.js
b/tests/qunit/mobile.issues/test_cleanuptemplates.js
deleted file mode 100644
index 0938338..0000000
--- a/tests/qunit/mobile.issues/test_cleanuptemplates.js
+++ /dev/null
@@ -1,26 +0,0 @@
-( function ( M, $ ) {
-
- var cleanuptemplates = M.require( 'mobile.issues/cleanuptemplates' );
-
- QUnit.module( 'MobileFrontend issues', {
- setup: function () {
- $( '<div id="mfe-test-issues">' +
- mw.template.get( 'tests.mobilefrontend', 'issues.hogan'
).text +
- '</div>' ).appendTo( '#qunit-fixture' );
- },
- teardown: function () {
- $( '#mfe-test-issues' ).remove();
- }
- } );
-
- QUnit.test( '#nested tables text extraction', 1, function ( assert ) {
- var issues = cleanuptemplates._extractMessage( $(
'#mfe-test-issues' ) );
-
- assert.strictEqual(
- $.trim( issues ),
- '<p>Level 1</p><p>Nested 1</p><p>Nested-nested 1</p>',
- 'Correct text Extraction'
- );
- } );
-
-}( mw.mobileFrontend, jQuery ) );
diff --git a/tests/qunit/mobile.search/test_MobileWebSearchLogger.js
b/tests/qunit/mobile.search.logger/test_MobileWebSearchLogger.js
similarity index 97%
rename from tests/qunit/mobile.search/test_MobileWebSearchLogger.js
rename to tests/qunit/mobile.search.logger/test_MobileWebSearchLogger.js
index f635278..d5b521f 100644
--- a/tests/qunit/mobile.search/test_MobileWebSearchLogger.js
+++ b/tests/qunit/mobile.search.logger/test_MobileWebSearchLogger.js
@@ -1,7 +1,7 @@
( function ( M ) {
var SchemaMobileWebSearch = M.require(
'mobile.loggingSchemas/SchemaMobileWebSearch' ),
- MobileWebSearchLogger = M.require(
'mobile.search/MobileWebSearchLogger' );
+ MobileWebSearchLogger = M.require(
'mobile.search.logger/MobileWebSearchLogger' );
QUnit.module( 'MobileFrontend: MobileWebSearchLogger', {
setup: function () {
--
To view, visit https://gerrit.wikimedia.org/r/278204
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib258bc78f54b551effeaa6978f92c05d9fb7310f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits