From cd3c3e7d2a54c0e8ec347a29776ee19a28fdb0a7 Mon Sep 17 00:00:00 2001 From: Simon Lang Date: Fri, 15 Aug 2014 13:01:19 +1000 Subject: [PATCH 1/5] Samsung Tablets (untested) e.g. "Mozilla/5.0 (Linux; Android 4.4.2; SM-T700 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36" --- src/ua-parser.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 8a8badf..a84d5f3 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -479,7 +479,8 @@ /android.+\s((mz60\d|xoom[\s2]{0,2}))\sbuild\//i ], [[VENDOR, 'Motorola'], MODEL, [TYPE, TABLET]], [ - /android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9|nexus 10))/i + /android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9|nexus 10))/i, + /SM-T((\w+))/i ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung /((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-n900))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i, From 2b4f19970ecc90700fc59ffb7f5d22e7cbb94949 Mon Sep 17 00:00:00 2001 From: Simon Lang Date: Mon, 25 Aug 2014 12:36:08 +1000 Subject: [PATCH 2/5] test for Samsung SM-T231 --- test/device-test.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/device-test.json b/test/device-test.json index 68dbc10..b758823 100644 --- a/test/device-test.json +++ b/test/device-test.json @@ -238,5 +238,15 @@ "model" : "Nexus 5", "type" : "mobile" } + }, + { + "desc" : "Samsung SM-T231", + "ua" : "Mozilla/5.0 (Linux; Android 4.4.2; SM-T231 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36", + "expect" : + { + "vendor" : "Samsung", + "model" : "231", + "type" : "tablet" + } } ] From 23196490027a2c79bf444fb8ca9d465d866d554f Mon Sep 17 00:00:00 2001 From: Simon Lang Date: Mon, 25 Aug 2014 13:30:18 +1000 Subject: [PATCH 3/5] include SM-T within Samsung tablet model field. add 2 more tests. --- src/ua-parser.js | 2 +- test/device-test.json | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index a84d5f3..b3b4969 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -480,7 +480,7 @@ ], [[VENDOR, 'Motorola'], MODEL, [TYPE, TABLET]], [ /android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9|nexus 10))/i, - /SM-T((\w+))/i + /((SM-T\w+))/i ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung /((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-n900))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i, diff --git a/test/device-test.json b/test/device-test.json index b758823..a6497a8 100644 --- a/test/device-test.json +++ b/test/device-test.json @@ -245,7 +245,27 @@ "expect" : { "vendor" : "Samsung", - "model" : "231", + "model" : "SM-T231", + "type" : "tablet" + } + }, + { + "desc" : "Samsung SM-T700", + "ua" : "Mozilla/5.0 (Linux; Android 4.4.2; SM-T700 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36", + "expect" : + { + "vendor" : "Samsung", + "model" : "SM-T700", + "type" : "tablet" + } + }, + { + "desc" : "Samsung SM-T520", + "ua" : "Mozilla/5.0 (Linux; Android 4.4.2; SM-T520 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36", + "expect" : + { + "vendor" : "Samsung", + "model" : "SM-T520", "type" : "tablet" } } From af60b4f1a8085ac16b388bcf98cce7944c1d14e5 Mon Sep 17 00:00:00 2001 From: boneyao Date: Tue, 14 Oct 2014 16:47:10 +0800 Subject: [PATCH 4/5] ucbrowser qqbrowser --- src/ua-parser.js | 10 ++++++---- src/ua-parser.min.js | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 0eb76b5..f7cb201 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -242,10 +242,12 @@ ], [[NAME, 'Yandex'], VERSION, MAJOR], [ /(comodo_dragon)\/((\d+)?[\w\.]+)/i // Comodo Dragon - ], [[NAME, /_/g, ' '], VERSION, MAJOR], [ + ], [[NAME, /_/g, ' '], VERSION, MAJOR], [ - /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i + /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i, // Chrome/OmniWeb/Arora/Tizen/Nokia + /(uc\s?browser|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i + //UCBrowser/QQBrowser ], [NAME, VERSION, MAJOR], [ /(dolfin)\/((\d+)?[\w\.]+)/i // Dolphin @@ -278,8 +280,8 @@ /(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla // Other - /(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i, - // UCBrowser/Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/QQBrowser + /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?((\d+)?[\w\.]+)/i, + // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf /(links)\s\(((\d+)?[\w\.]+)/i, // Links /(gobrowser)\/?((\d+)?[\w\.]+)*/i, // GoBrowser /(ice\s?browser)\/v?((\d+)?[\w\._]+)/i, // ICE Browser diff --git a/src/ua-parser.min.js b/src/ua-parser.min.js index cea6483..deb77ec 100644 --- a/src/ua-parser.min.js +++ b/src/ua-parser.min.js @@ -1 +1 @@ -(function(window,undefined){"use strict";var EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv";var util={has:function(str1,str2){if(typeof str1==="string"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}},lowerize:function(str){return str.toLowerCase()}};var mapper={rgx:function(){for(var result,i=0,j,k,p,q,matches,match,args=arguments;i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}break}}if(!!matches)break}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}break}}if(!!matches)break}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j Date: Tue, 14 Oct 2014 16:57:57 +0800 Subject: [PATCH 5/5] change version --- src/ua-parser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index f7cb201..9f4d4d5 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -1,4 +1,4 @@ -// UAParser.js v0.7.0 +// UAParser.js v0.7.1 // Lightweight JavaScript-based User-Agent string parser // https://github.com/faisalman/ua-parser-js //