8
0
Просмотр исходного кода

Feature: Add env.isEdge property.

Maciej Gołaszewski 7 лет назад
Родитель
Сommit
c6c4fa88d6
2 измененных файлов с 39 добавлено и 2 удалено
  1. 19 1
      packages/ckeditor5-utils/src/env.js
  2. 20 1
      packages/ckeditor5-utils/tests/env.js

+ 19 - 1
packages/ckeditor5-utils/src/env.js

@@ -23,7 +23,15 @@ const env = {
 	 * @static
 	 * @member {Boolean} module:utils/env~env#isMac
 	 */
-	isMac: isMac( userAgent )
+	isMac: isMac( userAgent ),
+
+	/**
+	 * Indicates that application is running on Edge browser.
+	 *
+	 * @static
+	 * @member {Boolean} module:utils/env~env#isEdge
+	 */
+	isEdge: isEdge( userAgent )
 };
 
 export default env;
@@ -37,3 +45,13 @@ export default env;
 export function isMac( userAgent ) {
 	return userAgent.indexOf( 'macintosh' ) > -1;
 }
+
+/**
+ * Checks if User Agent represented by the string is Edge browser.
+ *
+ * @param {String} userAgent **Lowercase** `navigator.userAgent` string.
+ * @returns {Boolean} Whether User Agent is Edge or not.
+ */
+export function isEdge( userAgent ) {
+	return userAgent.indexOf( 'edge' ) > -1;
+}

+ 20 - 1
packages/ckeditor5-utils/tests/env.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-import env, { isMac } from '../src/env';
+import env, { isEdge, isMac } from '../src/env';
 
 describe( 'Env', () => {
 	beforeEach( () => {
@@ -19,6 +19,12 @@ describe( 'Env', () => {
 		} );
 	} );
 
+	describe( 'isEdge', () => {
+		it( 'is a boolean', () => {
+			expect( env.isEdge ).to.be.a( 'boolean' );
+		} );
+	} );
+
 	describe( 'isMac()', () => {
 		it( 'returns true for macintosh UA strings', () => {
 			expect( isMac( 'macintosh' ) ).to.be.true;
@@ -31,4 +37,17 @@ describe( 'Env', () => {
 			expect( isMac( 'foo' ) ).to.be.false;
 		} );
 	} );
+
+	describe( 'isEdge()', () => {
+		it( 'returns true for Edge UA strings', () => {
+			expect( isEdge( 'edge' ) ).to.be.true;
+			expect( isEdge( 'foo edge bar' ) ).to.be.true;
+		} );
+
+		it( 'returns false for non–Edge UA strings', () => {
+			expect( isEdge( '' ) ).to.be.false;
+			expect( isEdge( 'mac' ) ).to.be.false;
+			expect( isEdge( 'foo' ) ).to.be.false;
+		} );
+	} );
 } );