From bb69ef2bd4b1718114de616bae3a79cb4455acf9 Mon Sep 17 00:00:00 2001 From: philippsimon Date: Fri, 26 Feb 2016 18:53:43 +0100 Subject: [PATCH] Get SmartTV device by HbbTV part --- src/ua-parser.js | 10 ++++++++-- test/device-test.json | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 15bd2f3..358857b 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -67,6 +67,9 @@ }, major : function (version) { return typeof(version) === STR_TYPE ? version.split(".")[0] : undefined; + }, + trim : function (str) { + return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); } }; @@ -474,6 +477,9 @@ device : [[ + /hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i // HbbTV devices + ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [ + /\((ipad|playbook);[\w\s\);-]+(rim|apple)/i // iPad/PlayBook ], [MODEL, VENDOR, [TYPE, TABLET]], [ @@ -564,8 +570,8 @@ /(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i, /sec-((sgh\w+))/i ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [ - /(samsung);smarttv/i - ], [VENDOR, MODEL, [TYPE, SMARTTV]], [ + /hbbtv.+maple;(\d+)/i + ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [ /\(dtv[\);].+(aquos)/i // Sharp ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [ diff --git a/test/device-test.json b/test/device-test.json index fa10540..b9e704a 100644 --- a/test/device-test.json +++ b/test/device-test.json @@ -99,6 +99,16 @@ "type" : "mobile" } }, + { + "desc" : "Philips SmartTV", + "ua" : "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60", + "expect" : + { + "vendor" : "Philips", + "model" : "", + "type" : "smarttv" + } + }, { "desc" : "Kindle Fire HD", "ua" : "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true", @@ -139,6 +149,36 @@ "type" : "tablet" } }, + { + "desc" : "Samsung SmartTV2011", + "ua" : "HbbTV/1.1.1 (;;;;;) Maple;2011", + "expect" : + { + "vendor" : "Samsung", + "model" : "SmartTV2011", + "type" : "smarttv" + } + }, + { + "desc" : "Samsung SmartTV2012", + "ua" : "HbbTV/1.1.1 (;Samsung;SmartTV2012;;;) WebKit", + "expect" : + { + "vendor" : "Samsung", + "model" : "SmartTV2012", + "type" : "smarttv" + } + }, + { + "desc" : "Samsung SmartTV2014", + "ua" : "HbbTV/1.1.1 (;Samsung;SmartTV2014;T-NT14UDEUC-1060.4;;) WebKit", + "expect" : + { + "vendor" : "Samsung", + "model" : "SmartTV2014", + "type" : "smarttv" + } + }, { "desc" : "Sony C5303 (Xperia SP)", "ua" : "Mozilla/5.0 (Linux; Android 4.3; C5303 Build/12.1.A.1.205) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36",