Krinkle has uploaded a new change for review. https://gerrit.wikimedia.org/r/60265
Change subject: Implement mw.log.warn and mw.log.deprecate ...................................................................... Implement mw.log.warn and mw.log.deprecate Change-Id: I1eadd01d7086aecb1bdf7e950c49778fd63b5414 --- M RELEASE-NOTES-1.22 M resources/mediawiki/mediawiki.js M resources/mediawiki/mediawiki.log.js 3 files changed, 55 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/65/60265/1 diff --git a/RELEASE-NOTES-1.22 b/RELEASE-NOTES-1.22 index 13a3c3c..92e5b45 100644 --- a/RELEASE-NOTES-1.22 +++ b/RELEASE-NOTES-1.22 @@ -31,6 +31,9 @@ by adding a new configuration variable $wgApplyIpBlocksToXff (disabled by default). * The new hook 'APIGetPossibleErrors' to modify the list of possible errors was added. +* mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace). +* mediawiki.log: Implemented log.deprecate. This method defines a property and + uses ES5 getter/setter to emit a warning when they are used. === Bug fixes in 1.22 === * Disable Special:PasswordReset when $wgEnableEmail. Previously one could still diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js index 6c7e697..7367de8 100644 --- a/resources/mediawiki/mediawiki.js +++ b/resources/mediawiki/mediawiki.js @@ -266,11 +266,15 @@ return { /* Public Members */ - /** - * Dummy function which in debug mode can be replaced with a function that - * emulates console.log in console-less environments. - */ - log: function () { }, + // Dummy placeholder for mediawiki.log. + log: ( function () { + var log = function () {}; + log.warn = $.noop; + log.deprecate = function ( obj, key, val ) { + obj[key] = val; + }; + return log; + }() ), // Make the Map constructor publicly available. Map: Map, @@ -293,8 +297,6 @@ * @property */ libs: {}, - - /* Extension points */ /** * @property diff --git a/resources/mediawiki/mediawiki.log.js b/resources/mediawiki/mediawiki.log.js index e94f37c..b3c601d 100644 --- a/resources/mediawiki/mediawiki.log.js +++ b/resources/mediawiki/mediawiki.log.js @@ -58,7 +58,7 @@ hovzer.update(); } $log.append( - $( '<div></div>' ) + $( '<div>' ) .css( { borderBottom: 'solid 1px #DDDDDD', fontSize: 'small', @@ -72,6 +72,48 @@ } ); }; + /* + * @param {string} msg + */ + mw.log.warn = function ( msg ) { + var console = window.console; + if ( console && console.warn ) { + console.warn( msg ); + if ( console.trace ) { + console.trace(); + } + } + }; + + /** + * @param {Object} obj + * @param {string} key + * @param {Mixed} val + */ + mw.log.deprecate = !Object.defineProperty ? function ( obj, key, val ) { + obj[key] = val; + } : function ( obj, key, val, msg ) { + msg = 'MWDeprecationError: Use of "' + key + '" property is deprecated.' + + ( msg ? ( ' ' + msg ) : '' ); + try { + Object.defineProperty( obj, key, { + configurable: true, + enumerable: true, + get: function() { + mw.log.warn( msg ); + return val; + }, + set: function( newVal ) { + mw.log.warn( msg ); + val = newVal; + } + }); + } catch ( err ) { + // IE8 can throw on Object.defineProperty + obj[key] = val; + } + }; + /** * @class mw * @mixins mw.plugin.log -- To view, visit https://gerrit.wikimedia.org/r/60265 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1eadd01d7086aecb1bdf7e950c49778fd63b5414 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Krinkle <krinklem...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits