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

Reply via email to