Henning Snater has uploaded a new change for review.
https://gerrit.wikimedia.org/r/57073
Change subject: (bug 44228) Checking if instanceof is supported correctly
......................................................................
(bug 44228) Checking if instanceof is supported correctly
Checking instanceof in IE8 will fail after having performed a deep extend on an
object
containing a constructor with a custom prototype.
Change-Id: I0dfb0fb5b35ba8faf2b0ae1be2ba0dacc9946edc
---
M lib/resources/Resources.php
M lib/resources/jquery.wikibase/jquery.wikibase.listview.js
A lib/resources/wikibase.support.js
3 files changed, 39 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/73/57073/1
diff --git a/lib/resources/Resources.php b/lib/resources/Resources.php
index 49ed5f1..7ad25c8 100644
--- a/lib/resources/Resources.php
+++ b/lib/resources/Resources.php
@@ -41,6 +41,7 @@
'scripts' => array(
'wikibase.js',
'wikibase.Site.js',
+ 'wikibase.support.js',
'wikibase.RevisionStore.js'
),
'dependencies' => array(
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
index 22c0305..c7dc5c2 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
@@ -80,7 +80,10 @@
this._lia = this.options.listItemAdapter; // create short-cut
for this
if( typeof this._lia !== 'object'
- || !( this._lia instanceof
$.wikibase.listview.ListItemAdapter )
+ || wb.support.constructorDeepExtend
+ && !( this._lia instanceof
$.wikibase.listview.ListItemAdapter )
+ // Just a simple check when the browser is not able to
check for the instance:
+ || !wb.support.constructorDeepExtend &&
!this._lia.liInstance
) {
throw new Error( "Option 'listItemAdapter' has to be an
instance of $.wikibase." +
"listview.ListItemAdapter" );
diff --git a/lib/resources/wikibase.support.js
b/lib/resources/wikibase.support.js
new file mode 100644
index 0000000..1bf14fd
--- /dev/null
+++ b/lib/resources/wikibase.support.js
@@ -0,0 +1,34 @@
+/**
+ * Browser feature detection routines.
+ *
+ * @file
+ * @ingroup WikibaseLib
+ *
+ * @licence GNU GPL v2+
+ * @author H. Snater < [email protected] >
+ */
+( function( mw, wb, $ ) {
+ 'use strict';
+
+ /**
+ * Returns an object holding information about whether certain features
are supported in the
+ * user's browser.
+ */
+ wb.support = ( function() {
+ var support = {};
+
+ // Checking instanceof in IE8 will fail after having performed
a deep extend on an object
+ // containing a constructor with a custom prototype.
+ support.constructorDeepExtend = true;
+ var test = function() { this.foo = ''; };
+ test.prototype = { bar: '' };
+
+ var derivate = new test(),
+ extended = $.extend( true, {}, { member: derivate } );
+
+ support.constructorDeepExtend = ( extended.member instanceof
test );
+
+ return support;
+ } )();
+
+} )( mediaWiki, wikibase, jQuery );
--
To view, visit https://gerrit.wikimedia.org/r/57073
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0dfb0fb5b35ba8faf2b0ae1be2ba0dacc9946edc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits