Skip to content
This repository was archived by the owner on Apr 11, 2024. It is now read-only.

Commit a270956

Browse files
bnjmnt4njdalton
authored andcommitted
Code cleanup.
1 parent 0e13066 commit a270956

File tree

2 files changed

+105
-113
lines changed

2 files changed

+105
-113
lines changed

platform.js

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -639,12 +639,27 @@
639639
name = 'Android Browser';
640640
os = /\bAndroid\b/.test(os) ? os : 'Android';
641641
}
642+
// Detect Silk desktop/accelerated modes.
643+
else if (name == 'Silk') {
644+
if (!/\bMobi/i.test(ua)) {
645+
os = 'Android';
646+
description.unshift('desktop mode');
647+
}
648+
if (/Accelerated *= *true/i.test(ua)) {
649+
description.unshift('accelerated');
650+
}
651+
}
642652
// Detect PaleMoon identifying as Firefox.
643653
else if (name == 'PaleMoon' && (data = /\bFirefox\/([\d.]+)\b/.exec(ua))) {
644654
description.push('identifying as Firefox ' + data[1]);
645655
}
656+
// Detect Firefox OS and products running Firefox.
657+
else if (name == 'Firefox' && (data = /\b(Mobile|Tablet|TV)\b/i.exec(ua))) {
658+
os || (os = 'Firefox OS');
659+
product || (product = data[1]);
660+
}
646661
// Detect false positives for Firefox/Safari.
647-
else if (!name || (data = !/\bMinefield\b|\(Android\b/i.test(ua) && /\b(?:Firefox|Safari)\b/.exec(name))) {
662+
else if (!name || (data = !/\bMinefield\b/i.test(ua) && /\b(?:Firefox|Safari)\b/.exec(name))) {
648663
// Escape the `/` for Firefox 1.
649664
if (name && !product && /[\/,]|^[^(]+?\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {
650665
// Clear name of false positives.
@@ -656,11 +671,6 @@
656671
name = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(os) ? os : data) + ' Browser';
657672
}
658673
}
659-
// Detect Firefox OS and products running Firefox.
660-
if (name == 'Firefox' && (data = /\b(Mobile|Tablet|TV)\b.*?\bFirefox\b/i.exec(ua))) {
661-
os || (os = 'Firefox OS');
662-
product || (product = data[1]);
663-
}
664674
// Detect non-Opera (Presto-based) versions (order is important).
665675
if (!version) {
666676
version = getVersion([
@@ -671,19 +681,15 @@
671681
]);
672682
}
673683
// Detect stubborn layout engines.
674-
if (layout == 'iCab' && parseFloat(version) > 3) {
675-
layout = ['WebKit'];
676-
} else if ((data =
677-
/\bOpera\b/.test(name) && (/\bOPR\b/.test(ua) ? 'Blink' : 'Presto') ||
678-
/\b(?:Midori|Nook|Safari)\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||
679-
!layout && /\bMSIE\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident')
680-
)) {
684+
if ((data =
685+
layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||
686+
/\bOpera\b/.test(name) && (/\bOPR\b/.test(ua) ? 'Blink' : 'Presto') ||
687+
/\b(?:Midori|Nook|Safari)\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||
688+
!layout && /\bMSIE\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||
689+
layout == 'WebKit' && /\bPlayStation\b(?! Vita\b)/i.test(name) && 'NetFront'
690+
)) {
681691
layout = [data];
682692
}
683-
// Detect NetFront on PlayStation.
684-
else if (/\bPlayStation\b(?! Vita\b)/i.test(name) && layout == 'WebKit') {
685-
layout = ['NetFront'];
686-
}
687693
// Detect Windows Phone 7 desktop mode.
688694
if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(ua) || 0)[1])) {
689695
name += ' Mobile';
@@ -779,16 +785,6 @@
779785
else if (name == 'Maxthon' && version) {
780786
version = version.replace(/\.[\d.]+/, '.x');
781787
}
782-
// Detect Silk desktop/accelerated modes.
783-
else if (name == 'Silk') {
784-
if (!/\bMobi/i.test(ua)) {
785-
os = 'Android';
786-
description.unshift('desktop mode');
787-
}
788-
if (/Accelerated *= *true/i.test(ua)) {
789-
description.unshift('accelerated');
790-
}
791-
}
792788
// Detect Xbox 360 and Xbox One.
793789
else if (/\bXbox\b/i.test(product)) {
794790
os = null;
@@ -817,19 +813,16 @@
817813
}
818814
// Detect Opera identifying/masking itself as another browser.
819815
// http://www.opera.com/support/kb/view/843/
820-
else if (this != forOwn && (
821-
product != 'Wii' && (
822-
(useFeatures && opera) ||
823-
(/Opera/.test(name) && /\b(?:MSIE|Firefox)\b/i.test(ua)) ||
824-
(name == 'Firefox' && /\bOS X (?:\d+\.){2,}/.test(os)) ||
825-
(name == 'IE' && (
826-
(os && !/^Win/.test(os) && version > 5.5) ||
827-
/\bWindows XP\b/.test(os) && version > 8 ||
828-
version == 8 && !/\bTrident\b/.test(ua)
829-
))
830-
)
816+
else if (this != forOwn && product != 'Wii' && (
817+
(useFeatures && opera) ||
818+
(/Opera/.test(name) && /\b(?:MSIE|Firefox)\b/i.test(ua)) ||
819+
(name == 'Firefox' && /\bOS X (?:\d+\.){2,}/.test(os)) ||
820+
(name == 'IE' && (
821+
(os && !/^Win/.test(os) && version > 5.5) ||
822+
/\bWindows XP\b/.test(os) && version > 8 ||
823+
version == 8 && !/\bTrident\b/.test(ua)
824+
))
831825
) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {
832-
833826
// When "identifying", the UA contains both Opera and the other browser's name.
834827
data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');
835828
if (reOpera.test(name)) {

test/test.js

Lines changed: 73 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1602,6 +1602,79 @@
16021602
'version': '1.0'
16031603
},
16041604

1605+
'Opera 9.00 on Nintendo Wii': {
1606+
'ua': 'Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)',
1607+
'layout': 'Presto',
1608+
'manufacturer': 'Nintendo',
1609+
'name': 'Opera',
1610+
'opera': { '[[Class]]': 'Opera', 'version': function() { return '9.00'; } },
1611+
'product': 'Wii',
1612+
'version': '9.00'
1613+
},
1614+
1615+
'Opera 10.10 (identifying as Firefox 2.0.0) on Windows XP': {
1616+
'ua': 'Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.10',
1617+
'layout': 'Presto',
1618+
'name': 'Opera',
1619+
'opera': { '[[Class]]': 'Opera', 'version': function() { return '10.10'; } },
1620+
'os': 'Windows XP',
1621+
'version': '10.10'
1622+
},
1623+
1624+
'Opera 10.63 (identifying as IE 6.0) on Windows XP': {
1625+
'ua': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 10.63',
1626+
'layout': 'Presto',
1627+
'name': 'Opera',
1628+
'opera': { '[[Class]]': 'Opera', 'version': function() { return '10.63'; } },
1629+
'os': 'Windows XP',
1630+
'version': '10.63'
1631+
},
1632+
1633+
'Opera 11.00 on Windows XP': {
1634+
'ua': 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.6.37 Version/11.00',
1635+
'layout': 'Presto',
1636+
'name': 'Opera',
1637+
'opera': { '[[Class]]': 'Opera', 'version': function() { return '11.00'; } },
1638+
'os': 'Windows XP',
1639+
'version': '11.00'
1640+
},
1641+
1642+
'Opera 11.52 (masking as Firefox 4.0) on OS X 10.7.2': {
1643+
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7.2; en; rv:2.0) Gecko/20100101 Firefox/4.0',
1644+
'layout': 'Presto',
1645+
'name': 'Opera',
1646+
'opera': { '[[Class]]': 'Opera', 'version': function() { return '11.52'; } },
1647+
'os': 'OS X 10.7.2',
1648+
'version': '11.52'
1649+
},
1650+
1651+
'Opera 15.0.1147.18 (like Chrome 28.0.1500.20) on OS X 10.8.4': {
1652+
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)',
1653+
'layout': 'Blink',
1654+
'likeChrome': true,
1655+
'name': 'Opera',
1656+
'os': 'OS X 10.8.4',
1657+
'version': '15.0.1147.18'
1658+
},
1659+
1660+
'Opera 18.0.1284.49 (like Chrome 31.0.1650.57) on OS X 10.9.1': {
1661+
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1284.49',
1662+
'layout': 'Blink',
1663+
'likeChrome': true,
1664+
'name': 'Opera',
1665+
'os': 'OS X 10.9.1',
1666+
'version': '18.0.1284.49'
1667+
},
1668+
1669+
'Opera 21.0.1432.67 (like Chrome 34.0.1847.132) on OS X 10.9.3': {
1670+
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.132 Safari/537.36 OPR/21.0.1432.67',
1671+
'layout': 'Blink',
1672+
'likeChrome': true,
1673+
'name': 'Opera',
1674+
'os': 'OS X 10.9.3',
1675+
'version': '21.0.1432.67'
1676+
},
1677+
16051678
'Opera Mini 4.1.11355': {
16061679
'ua': 'Opera/9.50 (J2ME/MIDP; Opera Mini/4.1.11355/542; U; en)',
16071680
'layout': 'Presto',
@@ -1671,7 +1744,6 @@
16711744
'version': '12.00'
16721745
},
16731746

1674-
16751747
'Opera Mobile 25.0.1619.84037 (like Chrome 38.0.2125.102) on Asus T00J (Android 4.3)': {
16761748
'ua': 'Mozilla/5.0 (Linux; Android 4.3; ASUS_T00J Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36 OPR/25.0.1619.84037',
16771749
'layout': 'Blink',
@@ -1682,79 +1754,6 @@
16821754
'version': '25.0.1619.84037'
16831755
},
16841756

1685-
'Opera 9.00 on Nintendo Wii': {
1686-
'ua': 'Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)',
1687-
'layout': 'Presto',
1688-
'manufacturer': 'Nintendo',
1689-
'name': 'Opera',
1690-
'opera': { '[[Class]]': 'Opera', 'version': function() { return '9.00'; } },
1691-
'product': 'Wii',
1692-
'version': '9.00'
1693-
},
1694-
1695-
'Opera 10.10 (identifying as Firefox 2.0.0) on Windows XP': {
1696-
'ua': 'Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.10',
1697-
'layout': 'Presto',
1698-
'name': 'Opera',
1699-
'opera': { '[[Class]]': 'Opera', 'version': function() { return '10.10'; } },
1700-
'os': 'Windows XP',
1701-
'version': '10.10'
1702-
},
1703-
1704-
'Opera 10.63 (identifying as IE 6.0) on Windows XP': {
1705-
'ua': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 10.63',
1706-
'layout': 'Presto',
1707-
'name': 'Opera',
1708-
'opera': { '[[Class]]': 'Opera', 'version': function() { return '10.63'; } },
1709-
'os': 'Windows XP',
1710-
'version': '10.63'
1711-
},
1712-
1713-
'Opera 11.00 on Windows XP': {
1714-
'ua': 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.6.37 Version/11.00',
1715-
'layout': 'Presto',
1716-
'name': 'Opera',
1717-
'opera': { '[[Class]]': 'Opera', 'version': function() { return '11.00'; } },
1718-
'os': 'Windows XP',
1719-
'version': '11.00'
1720-
},
1721-
1722-
'Opera 11.52 (masking as Firefox 4.0) on OS X 10.7.2': {
1723-
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7.2; en; rv:2.0) Gecko/20100101 Firefox/4.0',
1724-
'layout': 'Presto',
1725-
'name': 'Opera',
1726-
'opera': { '[[Class]]': 'Opera', 'version': function() { return '11.52'; } },
1727-
'os': 'OS X 10.7.2',
1728-
'version': '11.52'
1729-
},
1730-
1731-
'Opera 15.0.1147.18 (like Chrome 28.0.1500.20) on OS X 10.8.4': {
1732-
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)',
1733-
'layout': 'Blink',
1734-
'likeChrome': true,
1735-
'name': 'Opera',
1736-
'os': 'OS X 10.8.4',
1737-
'version': '15.0.1147.18'
1738-
},
1739-
1740-
'Opera 18.0.1284.49 (like Chrome 31.0.1650.57) on OS X 10.9.1': {
1741-
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1284.49',
1742-
'layout': 'Blink',
1743-
'likeChrome': true,
1744-
'name': 'Opera',
1745-
'os': 'OS X 10.9.1',
1746-
'version': '18.0.1284.49'
1747-
},
1748-
1749-
'Opera 21.0.1432.67 (like Chrome 34.0.1847.132) on OS X 10.9.3': {
1750-
'ua': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.132 Safari/537.36 OPR/21.0.1432.67',
1751-
'layout': 'Blink',
1752-
'likeChrome': true,
1753-
'name': 'Opera',
1754-
'os': 'OS X 10.9.3',
1755-
'version': '21.0.1432.67'
1756-
},
1757-
17581757
'PaleMoon 25.6.0 on Windows 10 64-bit': {
17591758
'ua': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:25.6) Gecko/20150723 PaleMoon/25.6.0',
17601759
'layout': 'Gecko',

0 commit comments

Comments
 (0)