Add OS checks for Android and ChromeOS
This commit is contained in:
parent
8fb30fb9dc
commit
a187821e4f
|
@ -93,6 +93,15 @@ export function isIOS() {
|
||||||
!!(/ipod/i).exec(navigator.platform));
|
!!(/ipod/i).exec(navigator.platform));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function isAndroid() {
|
||||||
|
return !!(/android/i).exec(navigator.platform);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isChromeOS() {
|
||||||
|
/* ChromeOS sets navigator.platform to Linux :/ */
|
||||||
|
return !!navigator.userAgent.match(' CrOS ');
|
||||||
|
}
|
||||||
|
|
||||||
/* Browser */
|
/* Browser */
|
||||||
|
|
||||||
export function isSafari() {
|
export function isSafari() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
const expect = chai.expect;
|
const expect = chai.expect;
|
||||||
|
|
||||||
import { isMac, isWindows, isIOS,
|
import { isMac, isWindows, isIOS, isAndroid, isChromeOS,
|
||||||
isSafari, isFirefox, isChrome, isChromium, isOpera, isEdge,
|
isSafari, isFirefox, isChrome, isChromium, isOpera, isEdge,
|
||||||
isGecko, isWebKit, isBlink } from '../core/util/browser.js';
|
isGecko, isWebKit, isBlink } from '../core/util/browser.js';
|
||||||
|
|
||||||
|
@ -26,11 +26,14 @@ describe('OS detection', function () {
|
||||||
"MacPPC",
|
"MacPPC",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
navigator.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6 Safari/605.1.15";
|
||||||
platforms.forEach((platform) => {
|
platforms.forEach((platform) => {
|
||||||
navigator.platform = platform;
|
navigator.platform = platform;
|
||||||
expect(isMac()).to.be.true;
|
expect(isMac()).to.be.true;
|
||||||
expect(isWindows()).to.be.false;
|
expect(isWindows()).to.be.false;
|
||||||
expect(isIOS()).to.be.false;
|
expect(isIOS()).to.be.false;
|
||||||
|
expect(isAndroid()).to.be.false;
|
||||||
|
expect(isChromeOS()).to.be.false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -40,11 +43,14 @@ describe('OS detection', function () {
|
||||||
"Win64",
|
"Win64",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36";
|
||||||
platforms.forEach((platform) => {
|
platforms.forEach((platform) => {
|
||||||
navigator.platform = platform;
|
navigator.platform = platform;
|
||||||
expect(isMac()).to.be.false;
|
expect(isMac()).to.be.false;
|
||||||
expect(isWindows()).to.be.true;
|
expect(isWindows()).to.be.true;
|
||||||
expect(isIOS()).to.be.false;
|
expect(isIOS()).to.be.false;
|
||||||
|
expect(isAndroid()).to.be.false;
|
||||||
|
expect(isChromeOS()).to.be.false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -55,11 +61,47 @@ describe('OS detection', function () {
|
||||||
"iPad",
|
"iPad",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
navigator.userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Mobile/15E148 Safari/604.1";
|
||||||
platforms.forEach((platform) => {
|
platforms.forEach((platform) => {
|
||||||
navigator.platform = platform;
|
navigator.platform = platform;
|
||||||
expect(isMac()).to.be.false;
|
expect(isMac()).to.be.false;
|
||||||
expect(isWindows()).to.be.false;
|
expect(isWindows()).to.be.false;
|
||||||
expect(isIOS()).to.be.true;
|
expect(isIOS()).to.be.true;
|
||||||
|
expect(isAndroid()).to.be.false;
|
||||||
|
expect(isChromeOS()).to.be.false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle Android', function () {
|
||||||
|
const platforms = [
|
||||||
|
"Android",
|
||||||
|
];
|
||||||
|
|
||||||
|
navigator.userAgent = "Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0";
|
||||||
|
platforms.forEach((platform) => {
|
||||||
|
navigator.platform = platform;
|
||||||
|
expect(isMac()).to.be.false;
|
||||||
|
expect(isWindows()).to.be.false;
|
||||||
|
expect(isIOS()).to.be.false;
|
||||||
|
expect(isAndroid()).to.be.true;
|
||||||
|
expect(isChromeOS()).to.be.false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle ChromeOS', function () {
|
||||||
|
let userAgents = [
|
||||||
|
"Mozilla/5.0 (X11; CrOS x86_64 15183.59.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.75 Safari/537.36",
|
||||||
|
"Mozilla/5.0 (X11; CrOS aarch64 15183.59.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.75 Safari/537.36",
|
||||||
|
];
|
||||||
|
|
||||||
|
navigator.platform = "Linux x86_64";
|
||||||
|
userAgents.forEach((ua) => {
|
||||||
|
navigator.userAgent = ua;
|
||||||
|
expect(isMac()).to.be.false;
|
||||||
|
expect(isWindows()).to.be.false;
|
||||||
|
expect(isIOS()).to.be.false;
|
||||||
|
expect(isAndroid()).to.be.false;
|
||||||
|
expect(isChromeOS()).to.be.true;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue