Page MenuHomePhabricator

[jQuery.client] versionBase is wrong for versions higher with two or more digits
Closed, ResolvedPublic

Description

navigator.userAgent

< "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.6.30 Version/10.62"

$.client.profile()

< Object /\ {

layout: "presto"
layoutVersion: "unknown"
name: "opera"
platform: "mac"
version: "10.62"
versionBase: "1"
versionNumber: 10.62
__proto__: Object \/

}


Version: 1.18.x
Severity: normal

Details

Reference
bz27652

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 21 2014, 11:30 PM
bzimport set Reference to bz27652.

The problem is on line 129

http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/resources/jquery/jquery.client.js?view=markup&pathrev=81276#l129

				'versionBase': ( version !== x ? new String( version ).substr( 0, 1 ) : x ),

Instead of rounding downwards without digets, it's slicing the first number.

Untested, will test/commit when I get home:

			var version = ...;

+ var versionNumber = parseFloat( version, 10 ) || 0.0;

			/* Caching */

			profile = {
				'name': name,
				'layout': layout,
				'layoutVersion': layoutversion,
				'platform': platform,
				'version': version,
  • 'versionBase': ( version !== x ? new String( version ).substr( 0, 1 ) : x ),
  • 'versionNumber': ( parseFloat( version, 10 ) || 0.0 ) + 'versionBase': ( version !== x ? Math.floor( versionNumber ).toString() : x ), + 'versionNumber': versionNumber
			};
		}

Fixed in r83383.

A userAgent like the following:

"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; nl-nl) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4"

Will now have a versionBase of "10" instead of "1".