Ignore defineProperty() failures in mw.log.deprecate
authorBartosz Dziewoński <matma.rex@gmail.com>
Fri, 30 Sep 2016 15:37:07 +0000 (17:37 +0200)
committerKrinkle <krinklemail@gmail.com>
Mon, 10 Oct 2016 22:31:43 +0000 (22:31 +0000)
This reverts 159dbdc06f214f3fed3f86808312012cf2099e4f.

Bug: T145570
Change-Id: I9ed4cf7b379116f33cfcaee3de053739f9b25b7e

resources/src/mediawiki/mediawiki.js

index 3122d42..780dac7 100644 (file)
                                logged.add( trace );
                                return true;
                        }
-                       Object.defineProperty( obj, key, {
-                               configurable: true,
-                               enumerable: true,
-                               get: function () {
-                                       if ( uniqueTrace() ) {
-                                               mw.track( 'mw.deprecate', key );
-                                               mw.log.warn( msg );
-                                       }
-                                       return val;
-                               },
-                               set: function ( newVal ) {
-                                       if ( uniqueTrace() ) {
-                                               mw.track( 'mw.deprecate', key );
-                                               mw.log.warn( msg );
+                       // Support: Safari 5.0
+                       // Throws "not supported on DOM Objects" for Node or Element objects (incl. document)
+                       // Safari 4.0 doesn't have this method, and it was fixed in Safari 5.1.
+                       try {
+                               Object.defineProperty( obj, key, {
+                                       configurable: true,
+                                       enumerable: true,
+                                       get: function () {
+                                               if ( uniqueTrace() ) {
+                                                       mw.track( 'mw.deprecate', key );
+                                                       mw.log.warn( msg );
+                                               }
+                                               return val;
+                                       },
+                                       set: function ( newVal ) {
+                                               if ( uniqueTrace() ) {
+                                                       mw.track( 'mw.deprecate', key );
+                                                       mw.log.warn( msg );
+                                               }
+                                               val = newVal;
                                        }
-                                       val = newVal;
-                               }
-                       } );
-
+                               } );
+                       } catch ( err ) {
+                               obj[ key ] = val;
+                       }
                };
 
                return log;