diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/browser_detection.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/browser_detection.dart index 5d0f55d4a2d..054b16e6be8 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/browser_detection.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/browser_detection.dart @@ -19,6 +19,9 @@ enum BrowserEngine { /// The engine that powers Edge. edge, + /// The engine that powers Internet Explorer 11. + ie11, + /// We were unable to detect the current browser engine. unknown, } @@ -33,14 +36,16 @@ BrowserEngine get browserEngine => _browserEngine ??= _detectBrowserEngine(); BrowserEngine _detectBrowserEngine() { final String vendor = html.window.navigator.vendor; - final String agent = html.window.navigator.userAgent; + final String agent = html.window.navigator.userAgent.toLowerCase(); if (vendor == 'Google Inc.') { return BrowserEngine.blink; } else if (vendor == 'Apple Computer, Inc.') { return BrowserEngine.webkit; - } else if (agent.contains('Edge/')) { + } else if (agent.contains('edge/')) { return BrowserEngine.edge; - } else if (vendor == '') { + } else if (agent.contains('trident/7.0')) { + return BrowserEngine.ie11; + } else if (vendor == '' && agent.contains('firefox')) { // An empty string means firefox: // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vendor return BrowserEngine.firefox; @@ -48,7 +53,6 @@ BrowserEngine _detectBrowserEngine() { // Assume blink otherwise, but issue a warning. print('WARNING: failed to detect current browser engine.'); - return BrowserEngine.unknown; }