diff --git a/src/service/platform-impl.js b/src/service/platform-impl.js index ea83a023e991..e3deb0b3540c 100644 --- a/src/service/platform-impl.js +++ b/src/service/platform-impl.js @@ -53,7 +53,7 @@ export class Platform { */ isSafari() { return /Safari/i.test(this.navigator_.userAgent) && !this.isChrome() && - !this.isEdge(); + !this.isEdge() && !this.isFirefox(); } /** @@ -70,7 +70,7 @@ export class Platform { * @return {boolean} */ isFirefox() { - return /Firefox/i.test(this.navigator_.userAgent) && !this.isEdge(); + return /Firefox|FxiOS/i.test(this.navigator_.userAgent) && !this.isEdge(); } /** @@ -109,7 +109,7 @@ export class Platform { return this.evalMajorVersion_(/(Chrome|CriOS)\/(\d+)/, 2); } if (this.isFirefox()) { - return this.evalMajorVersion_(/Firefox\/(\d+)/, 1); + return this.evalMajorVersion_(/(Firefox|FxiOS)\/(\d+)/, 2); } if (this.isIe()) { return this.evalMajorVersion_(/MSIE\s(\d+)/, 1); diff --git a/test/functional/test-platform.js b/test/functional/test-platform.js index de48a4de6ea8..30c82358f3ad 100644 --- a/test/functional/test-platform.js +++ b/test/functional/test-platform.js @@ -163,6 +163,18 @@ describe('Platform', () => { 'Gecko/20100101 Firefox/40.1'); }); + it('Firefox ios', () => { + isIos = true; + isFirefox = true; + isWebKit = true; + majorVersion = 7; + iosVersion = '10.3.1'; + iosMajorVersion = 10; + testUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X)' + + ' AppleWebKit/603.1.30 (KHTML, like Gecko) FxiOS/7.5b3349' + + ' Mobile/14E304 Safari/603.1.30'); + }); + it('IE', () => { isIe = true; majorVersion = 10;