Skip to content

Commit 10e0e15

Browse files
authored
Revert "[web] Migrate Flutter Web DOM usage to JS static interop - 12. (#33241)" (#33321)
This reverts commit 7956603.
1 parent ed5a2fe commit 10e0e15

24 files changed

+79
-101
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class HtmlViewEmbedder {
212212
void _compositeWithParams(int viewId, EmbeddedViewParams params) {
213213
// If we haven't seen this viewId yet, cache it for clips/transforms.
214214
final ViewClipChain clipChain = _viewClipChains.putIfAbsent(viewId, () {
215-
return ViewClipChain(view: createPlatformViewSlot(viewId));
215+
return ViewClipChain(view: createPlatformViewSlot(viewId) as DomElement);
216216
});
217217

218218
final DomElement slot = clipChain.slot;

lib/web_ui/lib/src/engine/dom.dart

-19
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,6 @@ extension DomElementExtension on DomElement {
139139
external /* List<DomElement> */ List<Object?> get children;
140140
external String get id;
141141
external set id(String id);
142-
external set spellcheck(bool? value);
143-
external String get tagName;
144142
external DomCSSStyleDeclaration get style;
145143
external void append(DomNode node);
146144
external String? getAttribute(String attributeName);
@@ -162,14 +160,6 @@ extension DomCSSStyleDeclarationExtension on DomCSSStyleDeclaration {
162160
set transform(String value) => setProperty('transform', value);
163161
set transformOrigin(String value) => setProperty('transform-origin', value);
164162
set opacity(String value) => setProperty('opacity', value);
165-
set color(String value) => setProperty('color', value);
166-
set top(String value) => setProperty('top', value);
167-
set left(String value) => setProperty('left', value);
168-
set right(String value) => setProperty('right', value);
169-
set bottom(String value) => setProperty('bottom', value);
170-
set backgroundColor(String value) => setProperty('background-color', value);
171-
set pointerEvents(String value) => setProperty('pointer-events', value);
172-
set filter(String value) => setProperty('filter', value);
173163
String get width => getPropertyValue('width');
174164
String get height => getPropertyValue('height');
175165
String get position => getPropertyValue('position');
@@ -178,19 +168,10 @@ extension DomCSSStyleDeclarationExtension on DomCSSStyleDeclaration {
178168
String get transform => getPropertyValue('transform');
179169
String get transformOrigin => getPropertyValue('transform-origin');
180170
String get opacity => getPropertyValue('opacity');
181-
String get color => getPropertyValue('color');
182-
String get top => getPropertyValue('top');
183-
String get left => getPropertyValue('left');
184-
String get right => getPropertyValue('right');
185-
String get bottom => getPropertyValue('bottom');
186-
String get backgroundColor => getPropertyValue('background-color');
187-
String get pointerEvents => getPropertyValue('pointer-events');
188-
String get filter => getPropertyValue('filter');
189171

190172
external String getPropertyValue(String property);
191173
external void setProperty(String propertyName, String value,
192174
[String priority]);
193-
external String removeProperty(String property);
194175
}
195176

196177
@JS()

lib/web_ui/lib/src/engine/embedder.dart

+6-7
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ class FlutterViewEmbedder {
200200
hasAutofillOverlay: browserHasAutofillOverlay(),
201201
);
202202

203-
final DomHTMLBodyElement bodyElement = domDocument.body!;
203+
final html.BodyElement bodyElement = html.document.body!;
204204

205205
bodyElement.setAttribute(
206206
'flt-renderer',
@@ -270,8 +270,8 @@ class FlutterViewEmbedder {
270270
// IMPORTANT: the glass pane element must come after the scene element in the DOM node list so
271271
// it can intercept input events.
272272
_glassPaneElement?.remove();
273-
final DomElement glassPaneElement = domDocument.createElement(_glassPaneTagName);
274-
_glassPaneElement = glassPaneElement as html.Element;
273+
final html.Element glassPaneElement = html.document.createElement(_glassPaneTagName);
274+
_glassPaneElement = glassPaneElement;
275275
glassPaneElement.style
276276
..position = 'absolute'
277277
..top = '0'
@@ -285,8 +285,7 @@ class FlutterViewEmbedder {
285285

286286
// Create a [HostNode] under the glass pane element, and attach everything
287287
// there, instead of directly underneath the glass panel.
288-
final HostNode glassPaneElementHostNode = _createHostNode(glassPaneElement
289-
as html.Element);
288+
final HostNode glassPaneElementHostNode = _createHostNode(glassPaneElement);
290289
_glassPaneShadow = glassPaneElementHostNode;
291290

292291
// Don't allow the scene to receive pointer events.
@@ -336,8 +335,8 @@ class FlutterViewEmbedder {
336335
_sceneHostElement!.style.opacity = '0.3';
337336
}
338337

339-
PointerBinding.initInstance(glassPaneElement as html.Element);
340-
KeyboardBinding.initInstance(glassPaneElement as html.Element);
338+
PointerBinding.initInstance(glassPaneElement);
339+
KeyboardBinding.initInstance(glassPaneElement);
341340

342341
if (html.window.visualViewport == null && isWebKit) {
343342
// Older Safari versions sometimes give us bogus innerWidth/innerHeight

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

+8-9
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'dart:html' as html;
77
import 'package:ui/ui.dart' as ui;
88

99
import '../browser_detection.dart';
10-
import '../dom.dart';
1110
import '../util.dart';
1211
import '../vector_math.dart';
1312
import 'shaders/shader.dart';
@@ -26,9 +25,9 @@ class PersistedBackdropFilter extends PersistedContainerSurface
2625
/// [rootElement] is used to host child in front of [filterElement] that
2726
/// is transformed to cover background.
2827
@override
29-
html.Element? get childContainer => _childContainer as html.Element?;
30-
DomElement? _childContainer;
31-
DomElement? _filterElement;
28+
html.Element? get childContainer => _childContainer;
29+
html.Element? _childContainer;
30+
html.Element? _filterElement;
3231
ui.Rect? _activeClipBounds;
3332
// Cached inverted transform for [transform].
3433
late Matrix4 _invertedTransform;
@@ -44,10 +43,10 @@ class PersistedBackdropFilter extends PersistedContainerSurface
4443
}
4544

4645
@override
47-
DomElement createElement() {
48-
final DomElement element = defaultCreateElement('flt-backdrop');
49-
element.style.transformOrigin = '0 0 0';
50-
_childContainer = createDomElement('flt-backdrop-interior');
46+
html.Element createElement() {
47+
final html.Element element = defaultCreateElement('flt-backdrop')
48+
..style.transformOrigin = '0 0 0';
49+
_childContainer = html.Element.tag('flt-backdrop-interior');
5150
_childContainer!.style.position = 'absolute';
5251
if (debugExplainSurfaceStats) {
5352
// This creates an additional interior element. Count it too.
@@ -103,7 +102,7 @@ class PersistedBackdropFilter extends PersistedContainerSurface
103102
}
104103
parentSurface = parentSurface.parent;
105104
}
106-
final DomCSSStyleDeclaration filterElementStyle = _filterElement!.style;
105+
final html.CssStyleDeclaration filterElementStyle = _filterElement!.style;
107106
filterElementStyle
108107
..position = 'absolute'
109108
..left = '${left}px'

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

+9-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'dart:svg' as svg;
77

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

10-
import '../dom.dart';
1110
import '../shadow.dart';
1211
import '../util.dart';
1312
import 'dom_canvas.dart';
@@ -24,8 +23,8 @@ mixin _DomClip on PersistedContainerSurface {
2423
/// [rootElement] is used to compensate for the coordinate system shift
2524
/// introduced by the [rootElement] translation.
2625
@override
27-
html.Element? get childContainer => _childContainer as html.Element?;
28-
DomElement? _childContainer;
26+
html.Element? get childContainer => _childContainer;
27+
html.Element? _childContainer;
2928

3029
@override
3130
void adoptElements(_DomClip oldSurface) {
@@ -35,9 +34,9 @@ mixin _DomClip on PersistedContainerSurface {
3534
}
3635

3736
@override
38-
DomElement createElement() {
39-
final DomElement element = defaultCreateElement('flt-clip');
40-
_childContainer = createDomElement('flt-clip-interior');
37+
html.Element createElement() {
38+
final html.Element element = defaultCreateElement('flt-clip');
39+
_childContainer = html.Element.tag('flt-clip-interior');
4140
if (debugExplainSurfaceStats) {
4241
// This creates an additional interior element. Count it too.
4342
surfaceStatsFor(this).allocatedDomNodeCount++;
@@ -97,7 +96,7 @@ class PersistedClipRect extends PersistedContainerSurface
9796
}
9897

9998
@override
100-
DomElement createElement() {
99+
html.Element createElement() {
101100
return super.createElement()..setAttribute('clip-type', 'rect');
102101
}
103102

@@ -154,7 +153,7 @@ class PersistedClipRRect extends PersistedContainerSurface
154153
}
155154

156155
@override
157-
DomElement createElement() {
156+
html.Element createElement() {
158157
return super.createElement()..setAttribute('clip-type', 'rrect');
159158
}
160159

@@ -239,7 +238,7 @@ class PersistedPhysicalShape extends PersistedContainerSurface
239238
}
240239

241240
@override
242-
DomElement createElement() {
241+
html.Element createElement() {
243242
return super.createElement()..setAttribute('clip-type', 'physical-shape');
244243
}
245244

@@ -468,7 +467,7 @@ class PersistedClipPath extends PersistedContainerSurface
468467
html.Element? _clipElement;
469468

470469
@override
471-
DomElement createElement() {
470+
html.Element createElement() {
472471
return defaultCreateElement('flt-clippath');
473472
}
474473

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

+5-6
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ 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.dart';
1413
import '../embedder.dart';
1514
import '../util.dart';
1615
import 'bitmap_canvas.dart';
@@ -24,12 +23,12 @@ class PersistedColorFilter extends PersistedContainerSurface
2423
: super(oldLayer);
2524

2625
@override
27-
html.Element? get childContainer => _childContainer as html.Element?;
26+
html.Element? get childContainer => _childContainer;
2827

2928
/// The dedicated child container element that's separate from the
3029
/// [rootElement] is used to compensate for the coordinate system shift
3130
/// introduced by the [rootElement] translation.
32-
DomElement? _childContainer;
31+
html.Element? _childContainer;
3332

3433
/// Color filter to apply to this surface.
3534
final ui.ColorFilter filter;
@@ -62,9 +61,9 @@ class PersistedColorFilter extends PersistedContainerSurface
6261
}
6362

6463
@override
65-
DomElement createElement() {
66-
final DomElement element = defaultCreateElement('flt-color-filter');
67-
final DomElement container = createDomElement('flt-filter-interior');
64+
html.Element createElement() {
65+
final html.Element element = defaultCreateElement('flt-color-filter');
66+
final html.Element container = html.Element.tag('flt-filter-interior');
6867
container.style.position = 'absolute';
6968
_childContainer = container;
7069
element.append(_childContainer!);

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
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 'dart:html' as html;
6+
57
import 'package:ui/ui.dart' as ui;
68

7-
import '../dom.dart';
89
import 'shaders/shader.dart';
910
import 'surface.dart';
1011

@@ -16,7 +17,7 @@ class PersistedImageFilter extends PersistedContainerSurface
1617
final ui.ImageFilter filter;
1718

1819
@override
19-
DomElement createElement() {
20+
html.Element createElement() {
2021
return defaultCreateElement('flt-image-filter');
2122
}
2223

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

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
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 'dart:html' as html;
6+
57
import 'package:ui/ui.dart' as ui;
68

7-
import '../dom.dart';
89
import '../util.dart';
910
import '../vector_math.dart';
1011
import 'surface.dart';
@@ -39,8 +40,8 @@ class PersistedOffset extends PersistedContainerSurface
3940
_localTransformInverse ??= Matrix4.translationValues(-dx, -dy, 0);
4041

4142
@override
42-
DomElement createElement() {
43-
final DomElement element = domDocument.createElement('flt-offset');
43+
html.Element createElement() {
44+
final html.Element element = html.document.createElement('flt-offset');
4445
setElementStyle(element, 'position', 'absolute');
4546
setElementStyle(element, 'transform-origin', '0 0 0');
4647
return element;

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

+5-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
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 'dart:html' as html;
6+
57
import 'package:ui/ui.dart' as ui;
68

7-
import '../dom.dart';
89
import '../util.dart';
910
import '../vector_math.dart';
1011
import 'surface.dart';
@@ -41,16 +42,16 @@ class PersistedOpacity extends PersistedContainerSurface
4142
Matrix4.translationValues(-offset.dx, -offset.dy, 0);
4243

4344
@override
44-
DomElement createElement() {
45-
final DomElement element = domDocument.createElement('flt-opacity');
45+
html.Element createElement() {
46+
final html.Element element = html.document.createElement('flt-opacity');
4647
setElementStyle(element, 'position', 'absolute');
4748
setElementStyle(element, 'transform-origin', '0 0 0');
4849
return element;
4950
}
5051

5152
@override
5253
void apply() {
53-
final DomElement element = rootElement! as DomElement;
54+
final html.Element element = rootElement!;
5455
setElementStyle(element, 'opacity', '${alpha / 255}');
5556
element.style.transform = 'translate(${offset.dx}px, ${offset.dy}px)';
5657
}

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

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import 'dart:typed_data';
88

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

11-
import '../dom.dart';
1211
import '../engine_canvas.dart';
1312
import '../frame_reference.dart';
1413
import '../picture.dart';
@@ -122,8 +121,8 @@ class PersistedPicture extends PersistedLeafSurface {
122121
CrossFrameCache<html.HtmlElement>();
123122

124123
@override
125-
DomElement createElement() {
126-
final DomElement element = defaultCreateElement('flt-picture');
124+
html.Element createElement() {
125+
final html.Element element = defaultCreateElement('flt-picture');
127126

128127
// The DOM elements used to render pictures are used purely to put pixels on
129128
// the screen. They have no semantic information. If an assistive technology

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
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.dart';
5+
import 'dart:html' as html;
6+
67
import '../platform_views/slots.dart';
78
import 'surface.dart';
89

@@ -17,7 +18,7 @@ class PersistedPlatformView extends PersistedLeafSurface {
1718
PersistedPlatformView(this.viewId, this.dx, this.dy, this.width, this.height);
1819

1920
@override
20-
DomElement createElement() {
21+
html.Element createElement() {
2122
return createPlatformViewSlot(viewId);
2223
}
2324

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import 'dart:html' as html;
66

77
import 'package:ui/ui.dart' as ui;
88

9-
import '../dom.dart';
109
import '../vector_math.dart';
1110
import 'surface.dart';
1211

@@ -60,7 +59,7 @@ class PersistedScene extends PersistedContainerSurface {
6059
_localTransformInverse ??= Matrix4.identity();
6160

6261
@override
63-
DomElement createElement() {
62+
html.Element createElement() {
6463
return defaultCreateElement('flt-scene');
6564
}
6665

0 commit comments

Comments
 (0)