Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Giehl <stefan@matomo.org>2020-11-02 11:04:33 +0300
committerGitHub <noreply@github.com>2020-11-02 11:04:33 +0300
commitb123a03f4c1e14afaebe3696b15b1f28cc06c728 (patch)
treec9976aaa10de41d725d8e5a842ae3ed352255179
parent55753101ad1ebcfaa48ba1c94466c4499650fcf8 (diff)
Require new major release of matomo/device-detector (#16636)
* Require new major release of matomo/device-detector (instead of piwik/device-detector) * Adjust classname * fix cache class * update test files * some more code adjustments * update submodule
-rw-r--r--composer.json2
-rw-r--r--composer.lock261
-rw-r--r--core/DeviceDetector/DeviceDetectorCache.php16
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml1
m---------plugins/DeviceDetectorCache0
-rw-r--r--plugins/DevicesDetection/API.php6
-rw-r--r--plugins/DevicesDetection/Columns/DeviceBrand.php4
-rw-r--r--plugins/DevicesDetection/Columns/DeviceType.php2
-rw-r--r--plugins/DevicesDetection/Columns/Os.php2
-rw-r--r--plugins/DevicesDetection/Controller.php8
-rw-r--r--plugins/DevicesDetection/functions.php8
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml2
12 files changed, 232 insertions, 80 deletions
diff --git a/composer.json b/composer.json
index dcef7611e7..e14740034d 100644
--- a/composer.json
+++ b/composer.json
@@ -34,6 +34,7 @@
"matomo-org/jshrink": "1.3.1",
"matomo/cache": "~2.0",
"matomo/decompress": "~2.0",
+ "matomo/device-detector": "^4.0",
"matomo/ini": "~2.0",
"matomo/matomo-php-tracker": "dev-4.x-dev",
"matomo/network": "~2.0",
@@ -44,7 +45,6 @@
"pear/pear_exception": "~1.0.0",
"php-di/php-di": "^6.0.0",
"phpmailer/phpmailer": "^6.1",
- "piwik/device-detector": "~3.0",
"psr/log": "~1.0",
"symfony/console": "~2.6.0",
"symfony/event-dispatcher": "~2.6.0",
diff --git a/composer.lock b/composer.lock
index ac9855b82f..ac41c699c5 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "0acbef2e79e975ecc2de5c2b9492c9cf",
+ "content-hash": "23cfc8642003797876c45e0e2473e9aa",
"packages": [
{
"name": "composer/ca-bundle",
@@ -60,6 +60,16 @@
"ssl",
"tls"
],
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-04-08T08:27:21+00:00"
},
{
@@ -262,6 +272,20 @@
"redis",
"xcache"
],
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-07-07T18:54:01+00:00"
},
{
@@ -468,6 +492,69 @@
"time": "2020-01-11T23:34:33+00:00"
},
{
+ "name": "matomo/device-detector",
+ "version": "4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/matomo-org/device-detector.git",
+ "reference": "7ced8fa471d4d136e31e37c8ae49af3ea4567b5f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/7ced8fa471d4d136e31e37c8ae49af3ea4567b5f",
+ "reference": "7ced8fa471d4d136e31e37c8ae49af3ea4567b5f",
+ "shasum": ""
+ },
+ "require": {
+ "mustangostang/spyc": "*",
+ "php": ">=7.2"
+ },
+ "replace": {
+ "piwik/device-detector": "*"
+ },
+ "require-dev": {
+ "matthiasmullie/scrapbook": "@stable",
+ "mayflower/mo4-coding-standard": "dev-master#275cb9d",
+ "phpstan/phpstan": "^0.12.52",
+ "phpunit/phpunit": "^8.5.8",
+ "psr/cache": "^1.0.1",
+ "psr/simple-cache": "^1.0.1",
+ "symfony/yaml": "^5.1.7"
+ },
+ "suggest": {
+ "doctrine/cache": "Can directly be used for caching purpose",
+ "ext-yaml": "Necessary for using the Pecl YAML parser"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeviceDetector\\": ""
+ },
+ "exclude-from-classmap": [
+ "Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "The Matomo Team",
+ "email": "hello@matomo.org",
+ "homepage": "https://matomo.org/team/"
+ }
+ ],
+ "description": "The Universal Device Detection library, that parses User Agents and detects devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, media players, mobile apps, feed readers, libraries, etc), operating systems, devices, brands and models.",
+ "homepage": "https://matomo.org",
+ "keywords": [
+ "devicedetection",
+ "parser",
+ "useragent"
+ ],
+ "time": "2020-10-30T14:37:50+00:00"
+ },
+ {
"name": "matomo/ini",
"version": "2.0.2",
"source": {
@@ -815,6 +902,16 @@
"logging",
"psr-3"
],
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-07-23T08:35:51+00:00"
},
{
@@ -1342,62 +1439,13 @@
}
],
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
- "time": "2020-07-14T18:50:27+00:00"
- },
- {
- "name": "piwik/device-detector",
- "version": "3.13.0",
- "source": {
- "type": "git",
- "url": "https://github.com/matomo-org/device-detector.git",
- "reference": "75ca5b690e38c40d199ade93e677bc5d7c3bc498"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/75ca5b690e38c40d199ade93e677bc5d7c3bc498",
- "reference": "75ca5b690e38c40d199ade93e677bc5d7c3bc498",
- "shasum": ""
- },
- "require": {
- "mustangostang/spyc": "*",
- "php": ">=5.5"
- },
- "require-dev": {
- "fabpot/php-cs-fixer": "~1.7",
- "matthiasmullie/scrapbook": "@stable",
- "phpunit/phpunit": "^4.8.36",
- "psr/cache": "^1.0",
- "psr/simple-cache": "^1.0"
- },
- "suggest": {
- "doctrine/cache": "Can directly be used for caching purpose",
- "ext-yaml": "Necessary for using the Pecl YAML parser"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DeviceDetector\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-3.0-or-later"
- ],
- "authors": [
+ "funding": [
{
- "name": "The Matomo Team",
- "email": "hello@matomo.org",
- "homepage": "https://matomo.org/team/"
+ "url": "https://github.com/synchro",
+ "type": "github"
}
],
- "description": "The Universal Device Detection library, that parses User Agents and detects devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, media players, mobile apps, feed readers, libraries, etc), operating systems, devices, brands and models.",
- "homepage": "https://matomo.org",
- "keywords": [
- "devicedetection",
- "parser",
- "useragent"
- ],
- "time": "2020-08-17T07:37:33+00:00"
+ "time": "2020-07-14T18:50:27+00:00"
},
{
"name": "psr/container",
@@ -1731,6 +1779,20 @@
"polyfill",
"portable"
],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-07-14T12:35:20+00:00"
},
{
@@ -1794,6 +1856,20 @@
"portable",
"shim"
],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-07-14T12:35:20+00:00"
},
{
@@ -1982,6 +2058,16 @@
"keywords": [
"templating"
],
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-08-05T15:13:19+00:00"
}
],
@@ -2040,6 +2126,20 @@
"constructor",
"instantiate"
],
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-05-29T17:27:14+00:00"
},
{
@@ -2186,6 +2286,12 @@
"object",
"object graph"
],
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-06-29T13:22:24+00:00"
},
{
@@ -2885,6 +2991,16 @@
"testing",
"xunit"
],
+ "funding": [
+ {
+ "url": "https://phpunit.de/donate.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
"time": "2020-06-22T07:06:58+00:00"
},
{
@@ -3556,6 +3672,20 @@
"portable",
"shim"
],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-05-12T16:47:27+00:00"
},
{
@@ -3608,6 +3738,20 @@
"polyfill",
"shim"
],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
"time": "2020-05-12T16:14:59+00:00"
},
{
@@ -3758,6 +3902,12 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
"time": "2020-07-12T23:59:07+00:00"
},
{
@@ -3825,5 +3975,6 @@
"platform-dev": [],
"platform-overrides": {
"php": "7.2.5"
- }
+ },
+ "plugin-api-version": "1.1.0"
}
diff --git a/core/DeviceDetector/DeviceDetectorCache.php b/core/DeviceDetector/DeviceDetectorCache.php
index 474cab3ab1..3e85457cb5 100644
--- a/core/DeviceDetector/DeviceDetectorCache.php
+++ b/core/DeviceDetector/DeviceDetectorCache.php
@@ -17,7 +17,7 @@ use Piwik\Cache as PiwikCache;
*
* Static caching speeds up multiple detections in one request, which is the case when sending bulk requests
*/
-class DeviceDetectorCache implements \DeviceDetector\Cache\Cache
+class DeviceDetectorCache implements \DeviceDetector\Cache\CacheInterface
{
protected static $staticCache = array();
@@ -61,7 +61,7 @@ class DeviceDetectorCache implements \DeviceDetector\Cache\Cache
* @throws \Exception
* @return bool True if the entry was successfully stored
*/
- public function save($id, $content, $ttl=0)
+ public function save($id, $content, $ttl=0): bool
{
if (empty($id)) {
return false;
@@ -69,15 +69,15 @@ class DeviceDetectorCache implements \DeviceDetector\Cache\Cache
self::$staticCache[$id] = $content;
- return $this->cache->save($id, $content, $this->ttl);
+ return (bool) $this->cache->save($id, $content, $this->ttl);
}
- public function contains($id)
+ public function contains($id): bool
{
return !empty(self::$staticCache[$id]) && $this->cache->contains($id);
}
- public function delete($id)
+ public function delete($id): bool
{
if (empty($id)) {
return false;
@@ -85,11 +85,11 @@ class DeviceDetectorCache implements \DeviceDetector\Cache\Cache
unset(self::$staticCache[$id]);
- return $this->cache->delete($id);
+ return (bool) $this->cache->delete($id);
}
- public function flushAll()
+ public function flushAll(): bool
{
- return $this->cache->flushAll();
+ return (bool) $this->cache->flushAll();
}
}
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
index 4b55b9ba01..c652d83692 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
@@ -97,6 +97,7 @@
<row>Galeon</row>
<row>Glass Browser</row>
<row>Google Earth</row>
+ <row>GOG Galaxy</row>
<row>Hawk Turbo Browser</row>
<row>hola! Browser</row>
<row>HotJava</row>
diff --git a/plugins/DeviceDetectorCache b/plugins/DeviceDetectorCache
-Subproject 71a7a9cb4b3a574f451f9adc6b9e7d79786e6eb
+Subproject cee5a669b4bfd0d50bcd4bfefcd7fe37c43916c
diff --git a/plugins/DevicesDetection/API.php b/plugins/DevicesDetection/API.php
index f3031fa274..e7fb7027f5 100644
--- a/plugins/DevicesDetection/API.php
+++ b/plugins/DevicesDetection/API.php
@@ -9,7 +9,7 @@
namespace Piwik\Plugins\DevicesDetection;
-use DeviceDetector\Parser\Device\DeviceParserAbstract;
+use DeviceDetector\Parser\Device\AbstractDeviceParser;
use Piwik\Archive;
use Piwik\DataTable;
use Piwik\Metrics;
@@ -54,7 +54,7 @@ class API extends \Piwik\Plugin\API
// ensure all device types are in the list
$this->ensureDefaultRowsInTable($dataTable);
- $mapping = DeviceParserAbstract::getAvailableDeviceTypeNames();
+ $mapping = AbstractDeviceParser::getAvailableDeviceTypeNames();
$dataTable->filter('AddSegmentByLabelMapping', array('deviceType', $mapping));
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getDeviceTypeLogo'));
$dataTable->filter('GroupBy', array('label', __NAMESPACE__ . '\getDeviceTypeLabel'));
@@ -63,7 +63,7 @@ class API extends \Piwik\Plugin\API
protected function ensureDefaultRowsInTable($dataTable)
{
- $requiredRows = array_fill(0, count(DeviceParserAbstract::getAvailableDeviceTypes()), Metrics::INDEX_NB_VISITS);
+ $requiredRows = array_fill(0, count(AbstractDeviceParser::getAvailableDeviceTypes()), Metrics::INDEX_NB_VISITS);
$dataTables = array($dataTable);
diff --git a/plugins/DevicesDetection/Columns/DeviceBrand.php b/plugins/DevicesDetection/Columns/DeviceBrand.php
index 5de1301718..befb4dc75b 100644
--- a/plugins/DevicesDetection/Columns/DeviceBrand.php
+++ b/plugins/DevicesDetection/Columns/DeviceBrand.php
@@ -8,7 +8,7 @@
*/
namespace Piwik\Plugins\DevicesDetection\Columns;
-use DeviceDetector\Parser\Device\DeviceParserAbstract;
+use DeviceDetector\Parser\Device\AbstractDeviceParser;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Tracker\Request;
@@ -32,7 +32,7 @@ class DeviceBrand extends Base
public function __construct()
{
- $brands = DeviceParserAbstract::$deviceBrands;
+ $brands = AbstractDeviceParser::$deviceBrands;
natcasesort ($brands);
$brandList = implode(", ", $brands);
$this->acceptValues = $brandList;
diff --git a/plugins/DevicesDetection/Columns/DeviceType.php b/plugins/DevicesDetection/Columns/DeviceType.php
index f42a1d5654..30cdb476ba 100644
--- a/plugins/DevicesDetection/Columns/DeviceType.php
+++ b/plugins/DevicesDetection/Columns/DeviceType.php
@@ -13,7 +13,7 @@ use Piwik\Tracker\Request;
use Exception;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
-use DeviceDetector\Parser\Device\DeviceParserAbstract as DeviceParser;
+use DeviceDetector\Parser\Device\AbstractDeviceParser as DeviceParser;
class DeviceType extends Base
{
diff --git a/plugins/DevicesDetection/Columns/Os.php b/plugins/DevicesDetection/Columns/Os.php
index 8f51f00ee1..f5ba2bf36d 100644
--- a/plugins/DevicesDetection/Columns/Os.php
+++ b/plugins/DevicesDetection/Columns/Os.php
@@ -84,7 +84,7 @@ class Os extends Base
$os = Settings::OS_BOT;
} else {
$os = $parser->getOS();
- $os = empty($os['short_name']) ? 'UNK' : $os['short_name'];
+ $os = $os['short_name'] ?? 'UNK';
}
return $os;
diff --git a/plugins/DevicesDetection/Controller.php b/plugins/DevicesDetection/Controller.php
index a582bffed0..de5424908e 100644
--- a/plugins/DevicesDetection/Controller.php
+++ b/plugins/DevicesDetection/Controller.php
@@ -37,12 +37,12 @@ class Controller extends \Piwik\Plugin\Controller
$view->browser_short_name = $uaParser->getClient('short_name');
$view->browser_version = $uaParser->getClient('version');
$view->browser_logo = getBrowserLogo($uaParser->getClient('short_name'));
- $view->browser_family = \DeviceDetector\Parser\Client\Browser::getBrowserFamily($uaParser->getClient('short_name'));
+ $view->browser_family = \DeviceDetector\Parser\Client\Browser::getBrowserFamily($uaParser->getClient('name'));
$view->browser_family_logo = getBrowserFamilyLogo($view->browser_family);
$view->os_name = $uaParser->getOs('name');
$view->os_logo = getOsLogo($uaParser->getOs('short_name'));
$view->os_short_name = $uaParser->getOs('short_name');
- $view->os_family = \DeviceDetector\Parser\OperatingSystem::getOsFamily($uaParser->getOs('short_name'));
+ $view->os_family = \DeviceDetector\Parser\OperatingSystem::getOsFamily($uaParser->getOs('name'));
$view->os_family_logo = getOsFamilyLogo($view->os_family);
$view->os_version = $uaParser->getOs('version');
$view->device_type = getDeviceTypeLabel($uaParser->getDeviceName());
@@ -66,7 +66,7 @@ class Controller extends \Piwik\Plugin\Controller
switch ($type) {
case 'brands':
- $availableBrands = \DeviceDetector\Parser\Device\DeviceParserAbstract::$deviceBrands;
+ $availableBrands = \DeviceDetector\Parser\Device\AbstractDeviceParser::$deviceBrands;
foreach ($availableBrands as $short => $name) {
if ($name != 'Unknown') {
@@ -108,7 +108,7 @@ class Controller extends \Piwik\Plugin\Controller
break;
case 'devicetypes':
- $deviceTypes = \DeviceDetector\Parser\Device\DeviceParserAbstract::getAvailableDeviceTypes();
+ $deviceTypes = \DeviceDetector\Parser\Device\AbstractDeviceParser::getAvailableDeviceTypes();
foreach ($deviceTypes as $name => $id) {
$list[$name] = getDeviceTypeLogo($name);
diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php
index 877f426724..e509123721 100644
--- a/plugins/DevicesDetection/functions.php
+++ b/plugins/DevicesDetection/functions.php
@@ -11,7 +11,7 @@ namespace Piwik\Plugins\DevicesDetection;
use Piwik\Piwik;
use DeviceDetector\Parser\OperatingSystem AS OperatingSystemParser;
-use DeviceDetector\Parser\Device\DeviceParserAbstract AS DeviceParser;
+use DeviceDetector\Parser\Device\AbstractDeviceParser AS DeviceParser;
use DeviceDetector\Parser\Client\Browser AS BrowserParser;
function getBrandLogo($label)
@@ -251,7 +251,7 @@ function getOSFamilyFullName($label)
$label = Piwik::translate('DevicesDetection_Console');
}
- if ($label !== false) {
+ if ($label !== null) {
return $label;
}
return Piwik::translate('General_Unknown');
@@ -283,7 +283,7 @@ function getOsFullName($label)
return Piwik::translate('General_Unknown');
}
-function _mapLegacyOsShortCodes($shortCode)
+function _mapLegacyOsShortCodes($shortCode): string
{
$legacyShortCodes = array(
'IPA' => 'IOS', // iPad => iOS
@@ -309,7 +309,7 @@ function _mapLegacyOsShortCodes($shortCode)
'WXP' => 'WIN',
//'VMS' => '', // OpenVMS => ??
);
- return ($shortCode && array_key_exists($shortCode, $legacyShortCodes)) ? $legacyShortCodes[$shortCode] : $shortCode;
+ return ($shortCode && array_key_exists($shortCode, $legacyShortCodes)) ? $legacyShortCodes[$shortCode] : (string) $shortCode;
}
/**
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index 204ea30e20..526ac2d840 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -124,7 +124,7 @@
<category>Visitors</category>
<name>Device brand</name>
<segment>deviceBrand</segment>
- <acceptedValues>3Q, 4Good, 360, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, altron, Amazon, AMGOO, Amoi, Anry, ANS, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Asano, Ask, Assistant, Asus, AT&amp;T, Atom, Audiovox, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes &amp; Noble, BBK, BDF, Becker, Beeline, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, BIHEE, Bird, Bitel, Bitmore, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, Clout, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Contixo, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datawind, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, Divisat, DMM, DNS, DoCoMo, Doogee, Doov, Dopod, Doro, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Element, Elenberg, Elephone, Energizer, Energy Sistem, Enot, Ergo, Ericsson, Ericy, Essential, Essentielb, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, Fengxiang, FiGO, FinePower, Fly, FNB, Fondi, FORME, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, Gome, GoMobile, Google, Goophone, Gradiente, Grape, Gree, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Highscreen, Hisense, Hoffmann, Homtom, Hoozo, Hosin, How, HP, HTC, Huadoo, Huawei, Humax, Hyrican, Hyundai, i-Joy, i-mate, i-mobile, iBall, iBerry, IconBIT, iGet, iHunt, Ikea, iKoMo, iLA, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, iOcean, iPro, Irbis, iRola, iRulu, iTel, iVA, iView, iZotron, JAY-Tech, JFone, Jiayu, JKL, Jolla, Just5, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler &amp; Strauss, Keneksi, Kiano, Kingsun, Kivi, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Kooper, KOPO, Koridy, KRONO, Krüger&amp;Matz, KT-Tech, Kuliao, Kumai, Kyocera, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Lingwin, Loewe, Logicom, Lumus, Luna, LYF, M.T.T., M4tel, Macoox, Majestic, Mann, Manta Multimedia, Masstel, Maxcom, Maxtron, Maxwest, Maze, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mio, Miray, Mito, Mitsubishi, MIXC, MLLED, MLS, Mobicel, Mobiistar, Mobiola, Mobistel, Mobo, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, Multilaser, MYFON, MyPhone, Myria, Mystery, MyTab, MyWigo, National, Navon, NEC, Neffos, Netgear, NeuImage, Newgen, Newland, Newman, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nous, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Onda, OnePlus, Onix, ONN, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Owwo, Oysters, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Phicomm, Philco, Philips, Phonemax, phoneOne, Pioneer, Pixus, Ployer, Plum, PocketBook, POCO, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, Positivo BGH, PPTV, Prestigio, Primepad, Prixton, Proline, ProScan, Protruly, PULID, Q-Touch, Q.Bell, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, Ravoz, Razer, RCA Tablets, Readboy, Realme, RED, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Ryte, Safaricom, Sagem, Samsung, Sanei, Santin, Sanyo, Savio, Schneider, Sega, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senseit, Senwa, SFR, Sharp, Shift Phones, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Sony Ericsson, Soundmax, Soyes, Spectrum, Spice, Star, Starway, STF Mobile, STK, Stonex, Storex, Sugar, Sumvision, SunVan, Sunvell, SuperSonic, Supra, Swipe, SWISSMOBILITY, Symphony, Syrox, T-Mobile, TB Touch, TCL, TD Systems, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, teXet, ThL, Thomson, TIANYU, Timovi, Tinai, TiPhone, Tolino, Tone, Tooky, Top House, Toplux, Toshiba, Touchmate, TrekStor, Trevi, True, Tunisie Telecom, Turbo, Turbo-X, TVC, TWM, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, Vastking, Venso, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Vitelcom, Vivax, Vivo, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, Voxtel, Voyo, Vsun, Vulcan, Walton, Web TV, Weimei, WellcoM, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Wolder, Wolfgang, Wonu, Woo, Woxter, X-TIGI, X-View, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Yandex, Yarvik, Yes, Yezz, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zeemi, Zen, Zenek, Zfiner, Zidoo, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn</acceptedValues>
+ <acceptedValues>2E, 3Q, 4Good, 360, 8848, A1, Accent, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Alcor, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, altron, Amazon, AMGOO, Amigoo, Amoi, Anry, ANS, Aoson, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Asano, Ask, Assistant, Asus, AT&amp;T, Atom, Audiovox, Avenzo, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes &amp; Noble, BBK, BB Mobile, BDF, Becker, Beeline, Beelink, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, BIHEE, Billion, Bird, Bitel, Bitmore, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, Bobarry, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, Cloudfone, Clout, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Contixo, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datawind, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, Divisat, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Element, Elenberg, Elephone, Eltex, Energizer, Energy Sistem, Enot, Ergo, Ericsson, Ericy, Essential, Essentielb, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, Fengxiang, Fero, FiGO, FinePower, FireFly Mobile, Fly, FNB, Fondi, FORME, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, Gome, GoMobile, Google, Goophone, Gradiente, Grape, Gree, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Highscreen, Hisense, Hoffmann, Homtom, Hoozo, Hosin, Hotwav, How, HP, HTC, Huadoo, Huawei, Humax, Hyrican, Hyundai, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iDroid, iGet, iHunt, Ikea, iKoMo, iLA, iLife, iMars, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, Invin, iOcean, iPro, IQM, Irbis, iRola, iRulu, iTel, iTruck, iVA, iView, iZotron, JAY-Tech, JFone, Jiayu, Jinga, JKL, Jolla, Just5, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler &amp; Strauss, Keneksi, Kenxinda, Kiano, Kingsun, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Kooper, KOPO, Koridy, KRONO, Krüger&amp;Matz, KT-Tech, Kuliao, Kumai, Kyocera, Kzen, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Lingwin, Loewe, Logic, Logicom, Lumigon, Lumus, Luna, LYF, M.T.T., M4tel, Macoox, Majestic, Mann, Manta Multimedia, Masstel, Maxcom, Maxtron, MAXVI, Maxwest, Maze, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mio, Miray, Mito, Mitsubishi, MIXC, MiXzo, MLLED, MLS, Mobicel, Mobiistar, Mobiola, Mobistel, Mobo, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, Multilaser, MYFON, MyPhone, Myria, Mystery, MyTab, MyWigo, National, Navon, NEC, Neffos, Neomi, Netgear, NeuImage, Newgen, Newland, Newman, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nomu, Nos, Nous, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Onda, OnePlus, Onix, ONN, Openbox, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Phicomm, Philco, Philips, Phonemax, phoneOne, Pioneer, Pixus, Ployer, Plum, PocketBook, POCO, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, Positivo BGH, PPTV, Prestigio, Primepad, Primux, Prixton, Proline, ProScan, Protruly, PULID, Q-Touch, Q.Bell, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, Ravoz, Razer, RCA Tablets, Readboy, Realme, RED, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Ryte, Safaricom, Sagem, Samsung, Sanei, Santin, Sanyo, Savio, Schneider, Sega, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, SFR, Sharp, Shift Phones, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Sony Ericsson, Soundmax, Soyes, Spectrum, Spice, SQOOL, Star, Starway, STF Mobile, STK, Stonex, Storex, Sugar, Sumvision, Sunstech, SunVan, Sunvell, SuperSonic, Supra, Swipe, SWISSMOBILITY, Swisstone, Symphony, Syrox, T-Mobile, Takara, TB Touch, TCL, TD Systems, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Tele2, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, TIANYU, Time2, Timovi, Tinai, TiPhone, Tolino, Tone, Tooky, Top House, Toplux, Torex, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Tronsmart, True, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TVC, TWM, Twoe, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, Vastking, Venso, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Vitelcom, Vivax, Vivo, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, Web TV, Weimei, WellcoM, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Wolder, Wolfgang, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Yandex, Yarvik, Yes, Yezz, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zeemi, Zen, Zenek, Zfiner, Zidoo, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn</acceptedValues>
</row>
<row>
<type>dimension</type>