From ae35d1d082566d07232bbb7e9abeb0d7eee7d419 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Fri, 30 Sep 2016 17:37:07 +0200 Subject: [PATCH] Ignore defineProperty() failures in mw.log.deprecate This reverts 159dbdc06f214f3fed3f86808312012cf2099e4f. Bug: T145570 Change-Id: I9ed4cf7b379116f33cfcaee3de053739f9b25b7e --- resources/src/mediawiki/mediawiki.js | 42 ++++++++++++++++------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/resources/src/mediawiki/mediawiki.js b/resources/src/mediawiki/mediawiki.js index 3122d42c4f..780dac725b 100644 --- a/resources/src/mediawiki/mediawiki.js +++ b/resources/src/mediawiki/mediawiki.js @@ -489,25 +489,31 @@ 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; -- 2.20.1