diff --git a/lib/web_ui/lib/src/engine/browser_detection.dart b/lib/web_ui/lib/src/engine/browser_detection.dart index f771c9ea64ee4..c6c7dc8422292 100644 --- a/lib/web_ui/lib/src/engine/browser_detection.dart +++ b/lib/web_ui/lib/src/engine/browser_detection.dart @@ -206,35 +206,33 @@ bool get isIOS15 { domWindow.navigator.userAgent.contains('OS 15_'); } -/// Detect if running on Chrome version 110 or older on Windows. +/// Detect if running on Chrome version 110 or older. /// -/// These versions of Chrome have a bug on Windows which causes -/// rendering to be flipped upside down. +/// These versions of Chrome have a bug which causes rendering to be flipped +/// upside down when using `createImageBitmap`: see +/// https://chromium.googlesource.com/chromium/src/+/a7f9b00e422a1755918f8ca5500380f98b6fddf2 // TODO(harryterkelsen): Remove this check once we stop supporting Chrome 110 // and earlier, https://github.com/flutter/flutter/issues/139186. -bool get isChrome110OrOlderOnWindows { - if (debugIsChrome110OrOlderOnWindows != null) { - return debugIsChrome110OrOlderOnWindows!; +bool get isChrome110OrOlder { + if (debugIsChrome110OrOlder != null) { + return debugIsChrome110OrOlder!; } - if (_cachedIsChrome110OrOlderOnWindows != null) { - return _cachedIsChrome110OrOlderOnWindows!; - } - if (operatingSystem != OperatingSystem.windows) { - return _cachedIsChrome110OrOlderOnWindows = false; + if (_cachedIsChrome110OrOlder != null) { + return _cachedIsChrome110OrOlder!; } final RegExp chromeRegexp = RegExp(r'Chrom(e|ium)\/([0-9]+)\.'); final RegExpMatch? match = chromeRegexp.firstMatch(domWindow.navigator.userAgent); if (match != null) { final int chromeVersion = int.parse(match.group(2)!); - return _cachedIsChrome110OrOlderOnWindows = chromeVersion <= 110; + return _cachedIsChrome110OrOlder = chromeVersion <= 110; } - return _cachedIsChrome110OrOlderOnWindows = false; + return _cachedIsChrome110OrOlder = false; } // Cache the result of checking if the app is running on Chrome 110 on Windows // since we check this on every frame. -bool? _cachedIsChrome110OrOlderOnWindows; +bool? _cachedIsChrome110OrOlder; /// If set to true pretends that the current browser is iOS Safari. /// @@ -267,7 +265,7 @@ bool get isWasm => const bool.fromEnvironment('dart.library.ffi'); bool? debugIsIOS15; /// Use in tests to simulated the detection of Chrome 110 or older on Windows. -bool? debugIsChrome110OrOlderOnWindows; +bool? debugIsChrome110OrOlder; int? _cachedWebGLVersion; diff --git a/lib/web_ui/lib/src/engine/dom.dart b/lib/web_ui/lib/src/engine/dom.dart index 47c464a8de840..cd2d3a46c31e5 100644 --- a/lib/web_ui/lib/src/engine/dom.dart +++ b/lib/web_ui/lib/src/engine/dom.dart @@ -3674,7 +3674,7 @@ bool debugDisableCreateImageBitmapSupport = false; bool get browserSupportsCreateImageBitmap => _createImageBitmapFunction != null && - !isChrome110OrOlderOnWindows && + !isChrome110OrOlder && !debugDisableCreateImageBitmapSupport; @JS() diff --git a/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart b/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart index d23270e1e8a31..8861e9c037fe7 100644 --- a/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart +++ b/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart @@ -24,7 +24,7 @@ void testMain() { tearDown(() { debugDisableCreateImageBitmapSupport = false; - debugIsChrome110OrOlderOnWindows = null; + debugIsChrome110OrOlder = null; }); test('can render without createImageBitmap', () async { @@ -69,7 +69,7 @@ void testMain() { test( 'createImageBitmap support is disabled on ' 'Windows on Chrome version 110 or older', () async { - debugIsChrome110OrOlderOnWindows = true; + debugIsChrome110OrOlder = true; debugDisableCreateImageBitmapSupport = false; expect(browserSupportsCreateImageBitmap, isFalse);