Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 9bdb6e3

Browse files
committed
[web] rename DomRenderer to FlutterViewEmbedder
1 parent c5ad34c commit 9bdb6e3

40 files changed

+152
-139
lines changed

lib/web_ui/lib/src/engine.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import '../ui.dart' as ui;
4141

4242
// ignore: unused_import
4343
import 'engine/configuration.dart';
44-
import 'engine/dom_renderer.dart';
44+
import 'engine/embedder.dart';
4545
import 'engine/keyboard.dart';
4646
import 'engine/mouse_cursor.dart';
4747
import 'engine/navigation/js_url_strategy.dart';
@@ -130,7 +130,7 @@ export 'engine/color_filter.dart';
130130

131131
export 'engine/configuration.dart';
132132

133-
export 'engine/dom_renderer.dart';
133+
export 'engine/embedder.dart';
134134

135135
export 'engine/engine_canvas.dart';
136136

@@ -413,8 +413,8 @@ void initializeEngine() {
413413

414414
_engineInitialized = true;
415415

416-
// Initialize the DomRenderer before initializing framework bindings.
417-
ensureDomRendererInitialized();
416+
// Initialize the FlutterViewEmbedder before initializing framework bindings.
417+
ensureFlutterViewEmbedderInitialized();
418418

419419
WebExperiments.ensureInitialized();
420420

lib/web_ui/lib/src/engine/canvaskit/initialization.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import 'package:js/js.dart';
1313
import '../../engine.dart' show kProfileMode;
1414
import '../browser_detection.dart';
1515
import '../configuration.dart';
16-
import '../dom_renderer.dart';
16+
import '../embedder.dart';
1717
import 'canvaskit_api.dart';
1818
import 'fonts.dart';
1919

@@ -78,7 +78,7 @@ Future<void> initializeCanvasKit({String? canvasKitBase}) {
7878

7979
/// Add a Skia scene host.
8080
skiaSceneHost = html.Element.tag('flt-scene');
81-
domRenderer.renderScene(skiaSceneHost);
81+
flutterViewEmbedder.renderScene(skiaSceneHost);
8282
return canvasKitCompleter.future;
8383
}
8484

lib/web_ui/lib/src/engine/dom_renderer.dart renamed to lib/web_ui/lib/src/engine/embedder.dart

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,23 @@ import 'text_editing/text_editing.dart';
2121
import 'util.dart';
2222
import 'window.dart';
2323

24-
class DomRenderer {
25-
DomRenderer() {
24+
/// Controls the placement and lifecycle of a Flutter view on the web page.
25+
///
26+
/// Manages several top-level elements that host Flutter-generated content,
27+
/// including:
28+
///
29+
/// - [glassPaneElement], the root element of a Flutter view.
30+
/// - [glassPaneShadow], the shadow root used to isolate Flutter-rendered
31+
/// content from the surrounding page content, including from the platform
32+
/// views.
33+
/// - [sceneElement], the element that hosts Flutter layers and pictures, and
34+
/// projects platform views.
35+
/// - [sceneHostElement], the anchor that provides a stable location in the DOM
36+
/// tree for the [sceneElement].
37+
/// - [semanticsHostElement], hosts the ARIA-annotated semantics tree.
38+
class FlutterViewEmbedder {
39+
FlutterViewEmbedder() {
2640
reset();
27-
2841
assert(() {
2942
_setupHotRestart();
3043
return true;
@@ -527,7 +540,7 @@ void applyGlobalCssRulesToSheet(
527540
html.CssStyleSheet sheet, {
528541
required BrowserEngine browserEngine,
529542
required bool hasAutofillOverlay,
530-
String glassPaneTagName = DomRenderer._glassPaneTagName,
543+
String glassPaneTagName = FlutterViewEmbedder._glassPaneTagName,
531544
}) {
532545
final bool isWebKit = browserEngine == BrowserEngine.webkit;
533546
final bool isFirefox = browserEngine == BrowserEngine.firefox;
@@ -646,9 +659,9 @@ void applyGlobalCssRulesToSheet(
646659
}
647660
}
648661

649-
/// Singleton DOM renderer.
650-
DomRenderer get domRenderer => ensureDomRendererInitialized();
662+
/// The embedder singleton.
663+
FlutterViewEmbedder get flutterViewEmbedder => ensureFlutterViewEmbedderInitialized();
651664

652-
/// Initializes the [DomRenderer], if it's not already initialized.
653-
DomRenderer ensureDomRendererInitialized() => _domRenderer ??= DomRenderer();
654-
DomRenderer? _domRenderer;
665+
/// Initializes the [FlutterViewEmbedder], if it's not already initialized.
666+
FlutterViewEmbedder ensureFlutterViewEmbedderInitialized() => _flutterViewEmbedder ??= FlutterViewEmbedder();
667+
FlutterViewEmbedder? _flutterViewEmbedder;

lib/web_ui/lib/src/engine/host_node.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'dart:html' as html;
66

77
import 'browser_detection.dart';
8-
import 'dom_renderer.dart';
8+
import 'embedder.dart';
99
import 'text_editing/text_editing.dart';
1010

1111
/// The interface required to host a flutter app in the DOM, and its tests.

lib/web_ui/lib/src/engine/html/color_filter.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import 'package:ui/ui.dart' as ui;
1010
import '../browser_detection.dart';
1111
import '../canvaskit/color_filter.dart';
1212
import '../color_filter.dart';
13-
import '../dom_renderer.dart';
13+
import '../embedder.dart';
1414
import '../util.dart';
1515
import 'bitmap_canvas.dart';
1616
import 'path_to_svg_clip.dart';
@@ -53,7 +53,7 @@ class PersistedColorFilter extends PersistedContainerSurface
5353
@override
5454
void discard() {
5555
super.discard();
56-
domRenderer.removeResource(_filterElement);
56+
flutterViewEmbedder.removeResource(_filterElement);
5757
// Do not detach the child container from the root. It is permanently
5858
// attached. The elements are reused together and are detached from the DOM
5959
// together.
@@ -72,7 +72,7 @@ class PersistedColorFilter extends PersistedContainerSurface
7272

7373
@override
7474
void apply() {
75-
domRenderer.removeResource(_filterElement);
75+
flutterViewEmbedder.removeResource(_filterElement);
7676
_filterElement = null;
7777
final EngineColorFilter? engineValue = filter as EngineColorFilter?;
7878
if (engineValue == null) {
@@ -138,7 +138,7 @@ class PersistedColorFilter extends PersistedContainerSurface
138138
// Use SVG filter for blend mode.
139139
final SvgFilter svgFilter = svgFilterFromBlendMode(filterColor, colorFilterBlendMode);
140140
_filterElement = svgFilter.element;
141-
domRenderer.addResource(_filterElement!);
141+
flutterViewEmbedder.addResource(_filterElement!);
142142
style.filter = 'url(#${svgFilter.id})';
143143
if (colorFilterBlendMode == ui.BlendMode.saturation ||
144144
colorFilterBlendMode == ui.BlendMode.multiply ||
@@ -150,7 +150,7 @@ class PersistedColorFilter extends PersistedContainerSurface
150150
void _applyMatrixColorFilter(CkMatrixColorFilter colorFilter) {
151151
final SvgFilter svgFilter = svgFilterFromColorMatrix(colorFilter.matrix);
152152
_filterElement = svgFilter.element;
153-
domRenderer.addResource(_filterElement!);
153+
flutterViewEmbedder.addResource(_filterElement!);
154154
childContainer!.style.filter = 'url(#${svgFilter.id})';
155155
}
156156

lib/web_ui/lib/src/engine/html/dom_canvas.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import 'dart:typed_data';
1010
import 'package:ui/ui.dart' as ui;
1111

1212
import '../browser_detection.dart';
13-
import '../dom_renderer.dart';
13+
import '../embedder.dart';
1414
import '../engine_canvas.dart';
1515
import '../html_image_codec.dart';
1616
import '../text/paragraph.dart';
@@ -32,7 +32,7 @@ class DomCanvas extends EngineCanvas with SaveElementStackTracking {
3232
@override
3333
void clear() {
3434
super.clear();
35-
domRenderer.removeAllChildren(rootElement);
35+
flutterViewEmbedder.removeAllChildren(rootElement);
3636
}
3737

3838
@override

lib/web_ui/lib/src/engine/html/picture.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'dart:typed_data';
88

99
import 'package:ui/ui.dart' as ui;
1010

11-
import '../dom_renderer.dart';
11+
import '../embedder.dart';
1212
import '../engine_canvas.dart';
1313
import '../frame_reference.dart';
1414
import '../picture.dart';
@@ -350,7 +350,7 @@ class PersistedPicture extends PersistedLeafSurface {
350350
oldSurface._canvas = null;
351351
}
352352
if (rootElement != null) {
353-
domRenderer.removeAllChildren(rootElement!);
353+
flutterViewEmbedder.removeAllChildren(rootElement!);
354354
}
355355
if (_canvas != null && _canvas != oldCanvas) {
356356
_recycleCanvas(_canvas);
@@ -432,7 +432,7 @@ class PersistedPicture extends PersistedLeafSurface {
432432
_recycleCanvas(_canvas);
433433
final DomCanvas domCanvas = DomCanvas(rootElement!);
434434
_canvas = domCanvas;
435-
domRenderer.removeAllChildren(rootElement!);
435+
flutterViewEmbedder.removeAllChildren(rootElement!);
436436
picture.recordingCanvas!.apply(domCanvas, _optimalLocalCullRect!);
437437
}
438438

@@ -473,7 +473,7 @@ class PersistedPicture extends PersistedLeafSurface {
473473
surfaceStatsFor(this).paintPixelCount +=
474474
bitmapCanvas.bitmapPixelCount;
475475
}
476-
domRenderer.removeAllChildren(rootElement!);
476+
flutterViewEmbedder.removeAllChildren(rootElement!);
477477
rootElement!.append(bitmapCanvas.rootElement);
478478
bitmapCanvas.clear();
479479
picture.recordingCanvas!.apply(bitmapCanvas, _optimalLocalCullRect!);

lib/web_ui/lib/src/engine/html/shader_mask.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'dart:html' as html;
77
import 'package:ui/ui.dart' as ui;
88

99
import '../browser_detection.dart';
10-
import '../dom_renderer.dart';
10+
import '../embedder.dart';
1111
import 'bitmap_canvas.dart';
1212
import 'color_filter.dart';
1313
import 'shaders/shader.dart';
@@ -57,7 +57,7 @@ class PersistedShaderMask extends PersistedContainerSurface
5757
@override
5858
void discard() {
5959
super.discard();
60-
domRenderer.removeResource(_shaderElement);
60+
flutterViewEmbedder.removeResource(_shaderElement);
6161
// Do not detach the child container from the root. It is permanently
6262
// attached. The elements are reused together and are detached from the DOM
6363
// together.
@@ -83,7 +83,7 @@ class PersistedShaderMask extends PersistedContainerSurface
8383

8484
@override
8585
void apply() {
86-
domRenderer.removeResource(_shaderElement);
86+
flutterViewEmbedder.removeResource(_shaderElement);
8787
_shaderElement = null;
8888
if (shader is ui.Gradient) {
8989
rootElement!.style
@@ -162,7 +162,7 @@ class PersistedShaderMask extends PersistedContainerSurface
162162
} else {
163163
rootElement!.style.filter = 'url(#${svgFilter.id})';
164164
}
165-
domRenderer.addResource(_shaderElement!);
165+
flutterViewEmbedder.addResource(_shaderElement!);
166166
}
167167
}
168168

lib/web_ui/lib/src/engine/mouse_cursor.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'dom_renderer.dart';
5+
import 'embedder.dart';
66
import 'util.dart';
77

88
/// Provides mouse cursor bindings, such as the `flutter/mousecursor` channel.
@@ -67,7 +67,7 @@ class MouseCursor {
6767

6868
void activateSystemCursor(String? kind) {
6969
setElementStyle(
70-
domRenderer.glassPaneElement!,
70+
flutterViewEmbedder.glassPaneElement!,
7171
'cursor',
7272
_mapKindToCssValue(kind),
7373
);

lib/web_ui/lib/src/engine/platform_dispatcher.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import 'canvaskit/initialization.dart';
1616
import 'canvaskit/layer_scene_builder.dart';
1717
import 'canvaskit/rasterizer.dart';
1818
import 'clipboard.dart';
19-
import 'dom_renderer.dart';
19+
import 'embedder.dart';
2020
import 'html/scene.dart';
2121
import 'mouse_cursor.dart';
2222
import 'platform_views/message_handler.dart';
@@ -434,7 +434,7 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher {
434434
return;
435435
case 'SystemChrome.setPreferredOrientations':
436436
final List<dynamic> arguments = decoded.arguments as List<dynamic>;
437-
domRenderer.setPreferredOrientation(arguments).then((bool success) {
437+
flutterViewEmbedder.setPreferredOrientation(arguments).then((bool success) {
438438
replyToPlatformMessage(
439439
callback, codec.encodeSuccessEnvelope(success));
440440
});
@@ -483,7 +483,7 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher {
483483
_platformViewMessageHandler ??= PlatformViewMessageHandler(
484484
contentManager: platformViewManager,
485485
contentHandler: (html.Element content) {
486-
domRenderer.glassPaneElement!.append(content);
486+
flutterViewEmbedder.glassPaneElement!.append(content);
487487
},
488488
);
489489
_platformViewMessageHandler!.handlePlatformViewCall(data, callback!);
@@ -606,7 +606,7 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher {
606606
rasterizer!.draw(layerScene.layerTree);
607607
} else {
608608
final SurfaceScene surfaceScene = scene as SurfaceScene;
609-
domRenderer.renderScene(surfaceScene.webOnlyRootElement);
609+
flutterViewEmbedder.renderScene(surfaceScene.webOnlyRootElement);
610610
}
611611
frameTimingsOnRasterFinish();
612612
}
@@ -727,7 +727,7 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher {
727727
_configuration = _configuration.copyWith(locales: const <ui.Locale>[]);
728728
}
729729

730-
// Called by DomRenderer when browser languages change.
730+
// Called by FlutterViewEmbedder when browser languages change.
731731
void updateLocales() {
732732
_configuration = _configuration.copyWith(locales: parseBrowserLanguages());
733733
}

0 commit comments

Comments
 (0)