From e78b9ee3bef1f0ec15fa974fb472d70f8326abe8 Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Wed, 23 Oct 2013 10:39:07 +1300
Subject: [PATCH] Fixes #4235 Adding Windows 8.1 detection

---
 libs/UserAgentParser/UserAgentParser.php          |  1 +
 libs/UserAgentParser/UserAgentParser.test.php     |  1 +
 .../UserAgentParserEnhanced/regexes/browsers.yml  |  3 +++
 .../UserAgentParserEnhanced/regexes/oss.yml       |  2 +-
 .../Fixtures/userAgentParserEnhancedFixtures.yml  | 15 +++++++++++++++
 5 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/libs/UserAgentParser/UserAgentParser.php b/libs/UserAgentParser/UserAgentParser.php
index 85c9225cc5..1cb0d09828 100644
--- a/libs/UserAgentParser/UserAgentParser.php
+++ b/libs/UserAgentParser/UserAgentParser.php
@@ -230,6 +230,7 @@ class UserAgentParser
 
         'CYGWIN_NT-6.2'                => 'WI8',
         'Windows NT 6.2'               => 'WI8',
+        'Windows NT 6.3'               => 'WI8',
         'Windows 8'                    => 'WI8',
         'CYGWIN_NT-6.1'                => 'WI7',
         'Windows NT 6.1'               => 'WI7',
diff --git a/libs/UserAgentParser/UserAgentParser.test.php b/libs/UserAgentParser/UserAgentParser.test.php
index cd23f36e99..5d59eed198 100644
--- a/libs/UserAgentParser/UserAgentParser.test.php
+++ b/libs/UserAgentParser/UserAgentParser.test.php
@@ -28,6 +28,7 @@ $testUserAgent = array(
     'firefox 3.5 alpha on win7'           => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b4pre) Gecko/20090420 Shiretoko/3.5b4pre (.NET CLR 3.5.30729)',
     'firefox nightly build'               => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:2.0a1pre) Gecko/2008060602 Minefield/4.0a1pre',
     'thunderbird 14.0 with lightning 1.6' => 'Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20120713 Thunderbird/14.0 Lightning/1.6',
+    'Windows 8'                           => 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko',
 );
 echo "Test with another user agent: ";
 foreach ($testUserAgent as $name => $userAgent) {
diff --git a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/browsers.yml b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/browsers.yml
index 7909b6ba7c..ed4c6c1fe9 100644
--- a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/browsers.yml
+++ b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/browsers.yml
@@ -264,6 +264,9 @@
 - regex: 'IEMobile[ /](\d+\.\d+)'
   name: IE Mobile
   version: '$1'
+- regex: 'IE[ /](\d+\.\d+)'
+  name: Internet Explorer
+  version: '$1'
 - regex: 'MSIE.*Trident/4.0'
   name: Internet Explorer
   version: 8.0
diff --git a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml
index 918a00487d..d79abf0f47 100644
--- a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml
+++ b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml
@@ -81,7 +81,7 @@
 ##########
 # Windows
 ##########
-- regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
+- regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows NT 6.3|Windows 8'
   name: 'Windows 8'
   version: '8'
   
diff --git a/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml b/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml
index 5310f8cda2..f3aca92059 100644
--- a/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml
+++ b/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml
@@ -1,3 +1,18 @@
+- user_agent: Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko
+  os:
+    name: Windows 8
+    short_name: WI8
+    version: 8
+  browser:
+    name: Internet Explorer
+    short_name: IE
+    version: 11.0
+  device: 0
+  brand:
+  model:
+  os_family: Other
+  browser_family: Other
+
 
 
 - user_agent: Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.22371/28.3782; U; en) Presto/2.8.119 Version/11.10
-- 
GitLab