From 4be1b57d5012afb617605e6e3b4e0ef5543f6ae5 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Tue, 18 Feb 2025 16:28:24 -0500 Subject: [PATCH] [web] Cleanup everything HTML from the engine (outside html/ folder) (#162840) Things being cleaned up: - Remove `flutter.js` support for HTML/AUTO renderers. - Delete the renderer auto-detection logic and flag. - Remove references to the `HtmlRenderer` from renderer-agnostic code. - Remove the `auto-selected`/`requested explicitly` info from the DOM. As a follow up to this, I'll create another PR that deletes the entire `html/` folder. --- .../lib/web_ui/flutter_js/src/loader.js | 8 +---- .../lib/web_ui/flutter_js/src/types.d.ts | 2 -- .../web_ui/lib/src/engine/configuration.dart | 6 ---- .../src/engine/html_image_element_codec.dart | 4 +-- .../web_ui/lib/src/engine/initialization.dart | 7 +--- .../lib/web_ui/lib/src/engine/renderer.dart | 34 ++++--------------- .../view_embedder/global_html_attributes.dart | 6 +--- .../lib/web_ui/lib/src/engine/window.dart | 2 -- .../global_html_attributes_test.dart | 12 ++----- .../lib/web_ui/test/engine/window_test.dart | 2 +- 10 files changed, 14 insertions(+), 69 deletions(-) diff --git a/engine/src/flutter/lib/web_ui/flutter_js/src/loader.js b/engine/src/flutter/lib/web_ui/flutter_js/src/loader.js index 2194a9e2be..97a6a4cd0b 100644 --- a/engine/src/flutter/lib/web_ui/flutter_js/src/loader.js +++ b/engine/src/flutter/lib/web_ui/flutter_js/src/loader.js @@ -92,13 +92,7 @@ export class FlutterLoader { * @param {import("./types").WebRenderer} renderer **/ const buildContainsRenderer = (build, renderer) => { - switch (build.renderer) { - // The "auto" build contains both canvaskit and html renderers. - case "auto": - return renderer == "canvaskit" || renderer == "html"; - default: - return build.renderer == renderer; - } + return build.renderer == renderer; } const buildIsCompatible = (build) => { diff --git a/engine/src/flutter/lib/web_ui/flutter_js/src/types.d.ts b/engine/src/flutter/lib/web_ui/flutter_js/src/types.d.ts index 259e904162..bb07a64f50 100644 --- a/engine/src/flutter/lib/web_ui/flutter_js/src/types.d.ts +++ b/engine/src/flutter/lib/web_ui/flutter_js/src/types.d.ts @@ -8,8 +8,6 @@ type WasmCompileTarget = "dart2wasm"; export type CompileTarget = JSCompileTarget | WasmCompileTarget; export type WebRenderer = - "auto" | - "html" | "canvaskit" | "skwasm"; diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/configuration.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/configuration.dart index a78278a655..91cc90d9be 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/configuration.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/configuration.dart @@ -172,12 +172,6 @@ class FlutterConfiguration { // runtime. They must be static constants for the compiler to remove dead code // effectively. - /// Auto detect which rendering backend to use. - /// - /// Using flutter tools option "--web-renderer=auto" would set the value to - /// true. Otherwise, it would be false. - static const bool flutterWebAutoDetect = bool.fromEnvironment('FLUTTER_WEB_AUTO_DETECT'); - static const bool flutterWebUseSkwasm = bool.fromEnvironment('FLUTTER_WEB_USE_SKWASM'); /// Enable the Skia-based rendering backend. diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/html_image_element_codec.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/html_image_element_codec.dart index 8e0fde1535..19365b2858 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/html_image_element_codec.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/html_image_element_codec.dart @@ -39,9 +39,7 @@ abstract class HtmlImageElementCodec implements ui.Codec { // builders to create UI. chunkCallback?.call(0, 100); imgElement = createDomHTMLImageElement(); - if (renderer is! HtmlRenderer) { - imgElement!.crossOrigin = 'anonymous'; - } + imgElement!.crossOrigin = 'anonymous'; imgElement! ..decoding = 'async' ..src = src; diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/initialization.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/initialization.dart index 8f596cae15..9dcba6e3df 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/initialization.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/initialization.dart @@ -190,12 +190,7 @@ Future initializeEngineUi() async { ensureMetaTag('generator', 'Flutter'); if (!configuration.multiViewEnabled) { - final EngineFlutterWindow implicitView = ensureImplicitViewInitialized( - hostElement: configuration.hostElement, - ); - if (renderer is HtmlRenderer) { - ensureResourceManagerInitialized(implicitView); - } + ensureImplicitViewInitialized(hostElement: configuration.hostElement); } _initializationState = DebugEngineInitializationState.initialized; } diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/renderer.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/renderer.dart index 9bd017994c..db88d12f8a 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/renderer.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/renderer.dart @@ -25,35 +25,13 @@ abstract class Renderer { factory Renderer._internal() { if (FlutterConfiguration.flutterWebUseSkwasm) { return SkwasmRenderer(); + } else if (FlutterConfiguration.useSkia) { + return CanvasKitRenderer(); } else { - bool useCanvasKit; - if (FlutterConfiguration.flutterWebAutoDetect) { - if (configuration.requestedRendererType != null) { - useCanvasKit = configuration.requestedRendererType == 'canvaskit'; - } else { - // If requestedRendererType is not specified, use CanvasKit for desktop and - // html for mobile. - useCanvasKit = isDesktop; - } - } else { - useCanvasKit = FlutterConfiguration.useSkia; - } - - // Warn users in development that anything other than canvaskit is deprecated. - assert(() { - if (!useCanvasKit) { - // The user requested 'html' or 'auto' either in the command-line or JS. - final String requested = - configuration.requestedRendererType ?? - (FlutterConfiguration.flutterWebAutoDetect ? 'auto' : 'html'); - printWarning( - 'The HTML Renderer is being deprecated. Stop using the "$requested" renderer mode.' - '\nSee: https://docs.flutter.dev/to/web-html-renderer-deprecation', - ); - } - return true; - }()); - return useCanvasKit ? CanvasKitRenderer() : HtmlRenderer(); + throw StateError( + 'Wrong combination of configuration flags. Was expecting either CanvasKit or Skwasm to be ' + 'selected.', + ); } } diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/view_embedder/global_html_attributes.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/view_embedder/global_html_attributes.dart index e37d981661..1d26bc53e9 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/view_embedder/global_html_attributes.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/view_embedder/global_html_attributes.dart @@ -25,7 +25,6 @@ class GlobalHtmlAttributes { void applyAttributes({ required int viewId, - required bool autoDetectRenderer, required String rendererTag, required String buildMode, }) { @@ -39,10 +38,7 @@ class GlobalHtmlAttributes { // document.querySelector('flutter-view[flt-view-id="$viewId"]') rootElement.setAttribute(flutterViewIdAttributeName, viewId); - // How was the current renderer selected? - final String rendererSelection = autoDetectRenderer ? 'auto-selected' : 'requested explicitly'; - - hostElement.setAttribute('flt-renderer', '$rendererTag ($rendererSelection)'); + hostElement.setAttribute('flt-renderer', rendererTag); hostElement.setAttribute('flt-build-mode', buildMode); // TODO(mdebbar): Disable spellcheck until changes in the framework and // engine are complete. diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/window.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/window.dart index b158736b0a..badd6dc086 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/window.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/window.dart @@ -11,7 +11,6 @@ import 'package:ui/ui_web/src/ui_web.dart' as ui_web; import '../engine.dart' show DimensionsProvider, registerHotRestartListener, renderer; import 'browser_detection.dart'; -import 'configuration.dart'; import 'display.dart'; import 'dom.dart'; import 'initialization.dart'; @@ -73,7 +72,6 @@ class EngineFlutterView implements ui.FlutterView { _resizeSubscription = onResize.listen(_didResize); _globalHtmlAttributes.applyAttributes( viewId: viewId, - autoDetectRenderer: FlutterConfiguration.flutterWebAutoDetect, rendererTag: renderer.rendererTag, buildMode: buildMode, ); diff --git a/engine/src/flutter/lib/web_ui/test/engine/view_embedder/global_html_attributes_test.dart b/engine/src/flutter/lib/web_ui/test/engine/view_embedder/global_html_attributes_test.dart index f31ab0ed6a..98c09364e7 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/view_embedder/global_html_attributes_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/view_embedder/global_html_attributes_test.dart @@ -22,25 +22,19 @@ void doTests() { globalHtmlAttributes.applyAttributes( viewId: 123, - autoDetectRenderer: true, rendererTag: 'canvaskit', buildMode: 'release', ); expect(rootElement.getAttribute('flt-view-id'), '123'); - expect(hostElement.getAttribute('flt-renderer'), 'canvaskit (auto-selected)'); + expect(hostElement.getAttribute('flt-renderer'), 'canvaskit'); expect(hostElement.getAttribute('flt-build-mode'), 'release'); expect(hostElement.getAttribute('spellcheck'), 'false'); - globalHtmlAttributes.applyAttributes( - viewId: 456, - autoDetectRenderer: false, - rendererTag: 'html', - buildMode: 'debug', - ); + globalHtmlAttributes.applyAttributes(viewId: 456, rendererTag: 'skwasm', buildMode: 'debug'); expect(rootElement.getAttribute('flt-view-id'), '456'); - expect(hostElement.getAttribute('flt-renderer'), 'html (requested explicitly)'); + expect(hostElement.getAttribute('flt-renderer'), 'skwasm'); expect(hostElement.getAttribute('flt-build-mode'), 'debug'); expect(hostElement.getAttribute('spellcheck'), 'false'); }); diff --git a/engine/src/flutter/lib/web_ui/test/engine/window_test.dart b/engine/src/flutter/lib/web_ui/test/engine/window_test.dart index b442952eb0..73a2bd50a1 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/window_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/window_test.dart @@ -551,7 +551,7 @@ Future testMain() async { final DomElement host = createDomHTMLDivElement(); final EngineFlutterView view = EngineFlutterView(dispatcher, host); - expect(host.getAttribute('flt-renderer'), 'canvaskit (requested explicitly)'); + expect(host.getAttribute('flt-renderer'), 'canvaskit'); expect(host.getAttribute('flt-build-mode'), 'debug'); view.dispose();