mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Revert "[web] Migrate Flutter Web DOM usage to JS static interop - 12. (#33241)" (flutter/engine#33321)
This reverts commit 74088eff467c8719f99d310d0b345c3012f5bde8.
This commit is contained in:
parent
a5e962d3b4
commit
ed1b2bfb94
@ -212,7 +212,7 @@ class HtmlViewEmbedder {
|
||||
void _compositeWithParams(int viewId, EmbeddedViewParams params) {
|
||||
// If we haven't seen this viewId yet, cache it for clips/transforms.
|
||||
final ViewClipChain clipChain = _viewClipChains.putIfAbsent(viewId, () {
|
||||
return ViewClipChain(view: createPlatformViewSlot(viewId));
|
||||
return ViewClipChain(view: createPlatformViewSlot(viewId) as DomElement);
|
||||
});
|
||||
|
||||
final DomElement slot = clipChain.slot;
|
||||
|
||||
@ -139,8 +139,6 @@ extension DomElementExtension on DomElement {
|
||||
external /* List<DomElement> */ List<Object?> get children;
|
||||
external String get id;
|
||||
external set id(String id);
|
||||
external set spellcheck(bool? value);
|
||||
external String get tagName;
|
||||
external DomCSSStyleDeclaration get style;
|
||||
external void append(DomNode node);
|
||||
external String? getAttribute(String attributeName);
|
||||
@ -162,14 +160,6 @@ extension DomCSSStyleDeclarationExtension on DomCSSStyleDeclaration {
|
||||
set transform(String value) => setProperty('transform', value);
|
||||
set transformOrigin(String value) => setProperty('transform-origin', value);
|
||||
set opacity(String value) => setProperty('opacity', value);
|
||||
set color(String value) => setProperty('color', value);
|
||||
set top(String value) => setProperty('top', value);
|
||||
set left(String value) => setProperty('left', value);
|
||||
set right(String value) => setProperty('right', value);
|
||||
set bottom(String value) => setProperty('bottom', value);
|
||||
set backgroundColor(String value) => setProperty('background-color', value);
|
||||
set pointerEvents(String value) => setProperty('pointer-events', value);
|
||||
set filter(String value) => setProperty('filter', value);
|
||||
String get width => getPropertyValue('width');
|
||||
String get height => getPropertyValue('height');
|
||||
String get position => getPropertyValue('position');
|
||||
@ -178,19 +168,10 @@ extension DomCSSStyleDeclarationExtension on DomCSSStyleDeclaration {
|
||||
String get transform => getPropertyValue('transform');
|
||||
String get transformOrigin => getPropertyValue('transform-origin');
|
||||
String get opacity => getPropertyValue('opacity');
|
||||
String get color => getPropertyValue('color');
|
||||
String get top => getPropertyValue('top');
|
||||
String get left => getPropertyValue('left');
|
||||
String get right => getPropertyValue('right');
|
||||
String get bottom => getPropertyValue('bottom');
|
||||
String get backgroundColor => getPropertyValue('background-color');
|
||||
String get pointerEvents => getPropertyValue('pointer-events');
|
||||
String get filter => getPropertyValue('filter');
|
||||
|
||||
external String getPropertyValue(String property);
|
||||
external void setProperty(String propertyName, String value,
|
||||
[String priority]);
|
||||
external String removeProperty(String property);
|
||||
}
|
||||
|
||||
@JS()
|
||||
|
||||
@ -200,7 +200,7 @@ class FlutterViewEmbedder {
|
||||
hasAutofillOverlay: browserHasAutofillOverlay(),
|
||||
);
|
||||
|
||||
final DomHTMLBodyElement bodyElement = domDocument.body!;
|
||||
final html.BodyElement bodyElement = html.document.body!;
|
||||
|
||||
bodyElement.setAttribute(
|
||||
'flt-renderer',
|
||||
@ -270,8 +270,8 @@ class FlutterViewEmbedder {
|
||||
// IMPORTANT: the glass pane element must come after the scene element in the DOM node list so
|
||||
// it can intercept input events.
|
||||
_glassPaneElement?.remove();
|
||||
final DomElement glassPaneElement = domDocument.createElement(_glassPaneTagName);
|
||||
_glassPaneElement = glassPaneElement as html.Element;
|
||||
final html.Element glassPaneElement = html.document.createElement(_glassPaneTagName);
|
||||
_glassPaneElement = glassPaneElement;
|
||||
glassPaneElement.style
|
||||
..position = 'absolute'
|
||||
..top = '0'
|
||||
@ -285,8 +285,7 @@ class FlutterViewEmbedder {
|
||||
|
||||
// Create a [HostNode] under the glass pane element, and attach everything
|
||||
// there, instead of directly underneath the glass panel.
|
||||
final HostNode glassPaneElementHostNode = _createHostNode(glassPaneElement
|
||||
as html.Element);
|
||||
final HostNode glassPaneElementHostNode = _createHostNode(glassPaneElement);
|
||||
_glassPaneShadow = glassPaneElementHostNode;
|
||||
|
||||
// Don't allow the scene to receive pointer events.
|
||||
@ -336,8 +335,8 @@ class FlutterViewEmbedder {
|
||||
_sceneHostElement!.style.opacity = '0.3';
|
||||
}
|
||||
|
||||
PointerBinding.initInstance(glassPaneElement as html.Element);
|
||||
KeyboardBinding.initInstance(glassPaneElement as html.Element);
|
||||
PointerBinding.initInstance(glassPaneElement);
|
||||
KeyboardBinding.initInstance(glassPaneElement);
|
||||
|
||||
if (html.window.visualViewport == null && isWebKit) {
|
||||
// Older Safari versions sometimes give us bogus innerWidth/innerHeight
|
||||
|
||||
@ -7,7 +7,6 @@ import 'dart:html' as html;
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../browser_detection.dart';
|
||||
import '../dom.dart';
|
||||
import '../util.dart';
|
||||
import '../vector_math.dart';
|
||||
import 'shaders/shader.dart';
|
||||
@ -26,9 +25,9 @@ class PersistedBackdropFilter extends PersistedContainerSurface
|
||||
/// [rootElement] is used to host child in front of [filterElement] that
|
||||
/// is transformed to cover background.
|
||||
@override
|
||||
html.Element? get childContainer => _childContainer as html.Element?;
|
||||
DomElement? _childContainer;
|
||||
DomElement? _filterElement;
|
||||
html.Element? get childContainer => _childContainer;
|
||||
html.Element? _childContainer;
|
||||
html.Element? _filterElement;
|
||||
ui.Rect? _activeClipBounds;
|
||||
// Cached inverted transform for [transform].
|
||||
late Matrix4 _invertedTransform;
|
||||
@ -44,10 +43,10 @@ class PersistedBackdropFilter extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = defaultCreateElement('flt-backdrop');
|
||||
element.style.transformOrigin = '0 0 0';
|
||||
_childContainer = createDomElement('flt-backdrop-interior');
|
||||
html.Element createElement() {
|
||||
final html.Element element = defaultCreateElement('flt-backdrop')
|
||||
..style.transformOrigin = '0 0 0';
|
||||
_childContainer = html.Element.tag('flt-backdrop-interior');
|
||||
_childContainer!.style.position = 'absolute';
|
||||
if (debugExplainSurfaceStats) {
|
||||
// This creates an additional interior element. Count it too.
|
||||
@ -103,7 +102,7 @@ class PersistedBackdropFilter extends PersistedContainerSurface
|
||||
}
|
||||
parentSurface = parentSurface.parent;
|
||||
}
|
||||
final DomCSSStyleDeclaration filterElementStyle = _filterElement!.style;
|
||||
final html.CssStyleDeclaration filterElementStyle = _filterElement!.style;
|
||||
filterElementStyle
|
||||
..position = 'absolute'
|
||||
..left = '${left}px'
|
||||
|
||||
@ -7,7 +7,6 @@ import 'dart:svg' as svg;
|
||||
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import '../shadow.dart';
|
||||
import '../util.dart';
|
||||
import 'dom_canvas.dart';
|
||||
@ -24,8 +23,8 @@ mixin _DomClip on PersistedContainerSurface {
|
||||
/// [rootElement] is used to compensate for the coordinate system shift
|
||||
/// introduced by the [rootElement] translation.
|
||||
@override
|
||||
html.Element? get childContainer => _childContainer as html.Element?;
|
||||
DomElement? _childContainer;
|
||||
html.Element? get childContainer => _childContainer;
|
||||
html.Element? _childContainer;
|
||||
|
||||
@override
|
||||
void adoptElements(_DomClip oldSurface) {
|
||||
@ -35,9 +34,9 @@ mixin _DomClip on PersistedContainerSurface {
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = defaultCreateElement('flt-clip');
|
||||
_childContainer = createDomElement('flt-clip-interior');
|
||||
html.Element createElement() {
|
||||
final html.Element element = defaultCreateElement('flt-clip');
|
||||
_childContainer = html.Element.tag('flt-clip-interior');
|
||||
if (debugExplainSurfaceStats) {
|
||||
// This creates an additional interior element. Count it too.
|
||||
surfaceStatsFor(this).allocatedDomNodeCount++;
|
||||
@ -97,7 +96,7 @@ class PersistedClipRect extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
return super.createElement()..setAttribute('clip-type', 'rect');
|
||||
}
|
||||
|
||||
@ -154,7 +153,7 @@ class PersistedClipRRect extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
return super.createElement()..setAttribute('clip-type', 'rrect');
|
||||
}
|
||||
|
||||
@ -239,7 +238,7 @@ class PersistedPhysicalShape extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
return super.createElement()..setAttribute('clip-type', 'physical-shape');
|
||||
}
|
||||
|
||||
@ -468,7 +467,7 @@ class PersistedClipPath extends PersistedContainerSurface
|
||||
html.Element? _clipElement;
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
return defaultCreateElement('flt-clippath');
|
||||
}
|
||||
|
||||
|
||||
@ -10,7 +10,6 @@ import 'package:ui/ui.dart' as ui;
|
||||
import '../browser_detection.dart';
|
||||
import '../canvaskit/color_filter.dart';
|
||||
import '../color_filter.dart';
|
||||
import '../dom.dart';
|
||||
import '../embedder.dart';
|
||||
import '../util.dart';
|
||||
import 'bitmap_canvas.dart';
|
||||
@ -24,12 +23,12 @@ class PersistedColorFilter extends PersistedContainerSurface
|
||||
: super(oldLayer);
|
||||
|
||||
@override
|
||||
html.Element? get childContainer => _childContainer as html.Element?;
|
||||
html.Element? get childContainer => _childContainer;
|
||||
|
||||
/// The dedicated child container element that's separate from the
|
||||
/// [rootElement] is used to compensate for the coordinate system shift
|
||||
/// introduced by the [rootElement] translation.
|
||||
DomElement? _childContainer;
|
||||
html.Element? _childContainer;
|
||||
|
||||
/// Color filter to apply to this surface.
|
||||
final ui.ColorFilter filter;
|
||||
@ -62,9 +61,9 @@ class PersistedColorFilter extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = defaultCreateElement('flt-color-filter');
|
||||
final DomElement container = createDomElement('flt-filter-interior');
|
||||
html.Element createElement() {
|
||||
final html.Element element = defaultCreateElement('flt-color-filter');
|
||||
final html.Element container = html.Element.tag('flt-filter-interior');
|
||||
container.style.position = 'absolute';
|
||||
_childContainer = container;
|
||||
element.append(_childContainer!);
|
||||
|
||||
@ -2,9 +2,10 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:html' as html;
|
||||
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import 'shaders/shader.dart';
|
||||
import 'surface.dart';
|
||||
|
||||
@ -16,7 +17,7 @@ class PersistedImageFilter extends PersistedContainerSurface
|
||||
final ui.ImageFilter filter;
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
return defaultCreateElement('flt-image-filter');
|
||||
}
|
||||
|
||||
|
||||
@ -2,9 +2,10 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:html' as html;
|
||||
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import '../util.dart';
|
||||
import '../vector_math.dart';
|
||||
import 'surface.dart';
|
||||
@ -39,8 +40,8 @@ class PersistedOffset extends PersistedContainerSurface
|
||||
_localTransformInverse ??= Matrix4.translationValues(-dx, -dy, 0);
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = domDocument.createElement('flt-offset');
|
||||
html.Element createElement() {
|
||||
final html.Element element = html.document.createElement('flt-offset');
|
||||
setElementStyle(element, 'position', 'absolute');
|
||||
setElementStyle(element, 'transform-origin', '0 0 0');
|
||||
return element;
|
||||
|
||||
@ -2,9 +2,10 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:html' as html;
|
||||
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import '../util.dart';
|
||||
import '../vector_math.dart';
|
||||
import 'surface.dart';
|
||||
@ -41,8 +42,8 @@ class PersistedOpacity extends PersistedContainerSurface
|
||||
Matrix4.translationValues(-offset.dx, -offset.dy, 0);
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = domDocument.createElement('flt-opacity');
|
||||
html.Element createElement() {
|
||||
final html.Element element = html.document.createElement('flt-opacity');
|
||||
setElementStyle(element, 'position', 'absolute');
|
||||
setElementStyle(element, 'transform-origin', '0 0 0');
|
||||
return element;
|
||||
@ -50,7 +51,7 @@ class PersistedOpacity extends PersistedContainerSurface
|
||||
|
||||
@override
|
||||
void apply() {
|
||||
final DomElement element = rootElement! as DomElement;
|
||||
final html.Element element = rootElement!;
|
||||
setElementStyle(element, 'opacity', '${alpha / 255}');
|
||||
element.style.transform = 'translate(${offset.dx}px, ${offset.dy}px)';
|
||||
}
|
||||
|
||||
@ -8,7 +8,6 @@ import 'dart:typed_data';
|
||||
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import '../engine_canvas.dart';
|
||||
import '../frame_reference.dart';
|
||||
import '../picture.dart';
|
||||
@ -122,8 +121,8 @@ class PersistedPicture extends PersistedLeafSurface {
|
||||
CrossFrameCache<html.HtmlElement>();
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = defaultCreateElement('flt-picture');
|
||||
html.Element createElement() {
|
||||
final html.Element element = defaultCreateElement('flt-picture');
|
||||
|
||||
// The DOM elements used to render pictures are used purely to put pixels on
|
||||
// the screen. They have no semantic information. If an assistive technology
|
||||
|
||||
@ -2,7 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import '../dom.dart';
|
||||
import 'dart:html' as html;
|
||||
|
||||
import '../platform_views/slots.dart';
|
||||
import 'surface.dart';
|
||||
|
||||
@ -17,7 +18,7 @@ class PersistedPlatformView extends PersistedLeafSurface {
|
||||
PersistedPlatformView(this.viewId, this.dx, this.dy, this.width, this.height);
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
return createPlatformViewSlot(viewId);
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,6 @@ import 'dart:html' as html;
|
||||
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import '../vector_math.dart';
|
||||
import 'surface.dart';
|
||||
|
||||
@ -60,7 +59,7 @@ class PersistedScene extends PersistedContainerSurface {
|
||||
_localTransformInverse ??= Matrix4.identity();
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
return defaultCreateElement('flt-scene');
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@ import 'dart:html' as html;
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../browser_detection.dart';
|
||||
import '../dom.dart';
|
||||
import '../embedder.dart';
|
||||
import 'bitmap_canvas.dart';
|
||||
import 'color_filter.dart';
|
||||
@ -35,7 +34,7 @@ class PersistedShaderMask extends PersistedContainerSurface
|
||||
this.filterQuality,
|
||||
) : super(oldLayer);
|
||||
|
||||
DomElement? _childContainer;
|
||||
html.Element? _childContainer;
|
||||
final ui.Shader shader;
|
||||
final ui.Rect maskRect;
|
||||
final ui.BlendMode blendMode;
|
||||
@ -53,7 +52,7 @@ class PersistedShaderMask extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
html.Element? get childContainer => _childContainer as html.Element?;
|
||||
html.Element? get childContainer => _childContainer;
|
||||
|
||||
@override
|
||||
void discard() {
|
||||
@ -73,9 +72,9 @@ class PersistedShaderMask extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = defaultCreateElement('flt-shader-mask');
|
||||
final DomElement container = createDomElement('flt-mask-interior');
|
||||
html.Element createElement() {
|
||||
final html.Element element = defaultCreateElement('flt-shader-mask');
|
||||
final html.Element container = html.Element.tag('flt-mask-interior');
|
||||
container.style.position = 'absolute';
|
||||
_childContainer = container;
|
||||
element.append(_childContainer!);
|
||||
|
||||
@ -7,7 +7,6 @@ import 'dart:html' as html;
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import '../frame_reference.dart';
|
||||
import '../onscreen_logging.dart';
|
||||
import '../semantics.dart';
|
||||
@ -370,7 +369,7 @@ abstract class PersistedSurface implements ui.EngineLayer {
|
||||
}
|
||||
}
|
||||
assert(debugAssertSurfaceState(this, PersistedSurfaceState.created));
|
||||
rootElement = createElement() as html.Element;
|
||||
rootElement = createElement();
|
||||
assert(rootElement != null);
|
||||
applyWebkitClipFix(rootElement);
|
||||
if (debugExplainSurfaceStats) {
|
||||
@ -500,12 +499,12 @@ abstract class PersistedSurface implements ui.EngineLayer {
|
||||
}
|
||||
|
||||
/// Creates a DOM element for this surface.
|
||||
DomElement createElement();
|
||||
html.Element createElement();
|
||||
|
||||
/// Creates a DOM element for this surface preconfigured with common
|
||||
/// attributes, such as absolute positioning and debug information.
|
||||
DomElement defaultCreateElement(String tagName) {
|
||||
final DomElement element = createDomElement(tagName);
|
||||
html.Element defaultCreateElement(String tagName) {
|
||||
final html.Element element = html.Element.tag(tagName);
|
||||
element.style.position = 'absolute';
|
||||
if (assertionsEnabled) {
|
||||
element.setAttribute('flt-layer-state', 'new');
|
||||
|
||||
@ -2,11 +2,11 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:html' as html;
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../dom.dart';
|
||||
import '../util.dart';
|
||||
import '../vector_math.dart';
|
||||
import 'surface.dart';
|
||||
@ -41,8 +41,8 @@ class PersistedTransform extends PersistedContainerSurface
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
final DomElement element = domDocument.createElement('flt-transform');
|
||||
html.Element createElement() {
|
||||
final html.Element element = html.document.createElement('flt-transform');
|
||||
setElementStyle(element, 'position', 'absolute');
|
||||
setElementStyle(element, 'transform-origin', '0 0 0');
|
||||
return element;
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dom.dart';
|
||||
import 'embedder.dart';
|
||||
import 'util.dart';
|
||||
|
||||
@ -68,7 +67,7 @@ class MouseCursor {
|
||||
|
||||
void activateSystemCursor(String? kind) {
|
||||
setElementStyle(
|
||||
flutterViewEmbedder.glassPaneElement! as DomElement,
|
||||
flutterViewEmbedder.glassPaneElement!,
|
||||
'cursor',
|
||||
_mapKindToCssValue(kind),
|
||||
);
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import '../dom.dart';
|
||||
import 'dart:html' as html;
|
||||
|
||||
/// Returns the name of a slot from its `viewId`.
|
||||
///
|
||||
@ -32,14 +32,14 @@ String getPlatformViewSlotName(int viewId) {
|
||||
///
|
||||
/// (When the framework accesses a `slot`, it's really accessing its wrapper
|
||||
/// `flt-platform-view-slot` tag)
|
||||
DomElement createPlatformViewSlot(int viewId) {
|
||||
html.Element createPlatformViewSlot(int viewId) {
|
||||
final String slotName = getPlatformViewSlotName(viewId);
|
||||
|
||||
final DomElement wrapper = domDocument
|
||||
final html.Element wrapper = html.document
|
||||
.createElement('flt-platform-view-slot')
|
||||
..style.pointerEvents = 'auto';
|
||||
|
||||
final DomElement slot = domDocument.createElement('slot')
|
||||
final html.Element slot = html.document.createElement('slot')
|
||||
..setAttribute('name', slotName);
|
||||
|
||||
return wrapper..append(slot);
|
||||
|
||||
@ -8,7 +8,6 @@ import 'dart:math' as math;
|
||||
import 'package:ui/ui.dart' as ui;
|
||||
|
||||
import '../browser_detection.dart';
|
||||
import '../dom.dart';
|
||||
import '../embedder.dart';
|
||||
import '../util.dart';
|
||||
import 'layout_service.dart';
|
||||
@ -744,7 +743,7 @@ void applyTextStyleToElement({
|
||||
if (textDecoration != null) {
|
||||
if (browserEngine == BrowserEngine.webkit) {
|
||||
setElementStyle(
|
||||
element as DomElement, '-webkit-text-decoration', textDecoration);
|
||||
element, '-webkit-text-decoration', textDecoration);
|
||||
} else {
|
||||
cssStyle.textDecoration = textDecoration;
|
||||
}
|
||||
|
||||
@ -656,7 +656,7 @@ String bytesToHexString(List<int> data) {
|
||||
/// [name] is the name of the property. [value] is the value of the property.
|
||||
/// If [value] is null, removes the style property.
|
||||
void setElementStyle(
|
||||
DomElement element, String name, String? value) {
|
||||
html.Element element, String name, String? value) {
|
||||
if (value == null) {
|
||||
element.style.removeProperty(name);
|
||||
} else {
|
||||
|
||||
@ -121,8 +121,8 @@ void testMain() {
|
||||
test('slot property has the same value as createPlatformViewSlot', () async {
|
||||
final html.Element content =
|
||||
contentManager.renderContent(viewType, viewId, null);
|
||||
final DomElement slot = createPlatformViewSlot(viewId);
|
||||
final DomElement innerSlot = slot.querySelector('slot')!;
|
||||
final html.Element slot = createPlatformViewSlot(viewId);
|
||||
final html.Element innerSlot = slot.querySelector('slot')!;
|
||||
|
||||
expect(content.getAttribute('slot'), innerSlot.getAttribute('name'),
|
||||
reason:
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:html' as html;
|
||||
|
||||
import 'package:test/bootstrap/browser.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:ui/src/engine.dart';
|
||||
@ -18,17 +20,17 @@ void testMain() {
|
||||
test(
|
||||
'can render slot, even for views that might have never been rendered before',
|
||||
() async {
|
||||
final DomElement slot = createPlatformViewSlot(viewId);
|
||||
final html.Element slot = createPlatformViewSlot(viewId);
|
||||
expect(slot, isNotNull);
|
||||
expect(slot.querySelector('slot'), isNotNull);
|
||||
});
|
||||
|
||||
test('rendered markup contains required attributes', () async {
|
||||
final DomElement slot = createPlatformViewSlot(viewId);
|
||||
final html.Element slot = createPlatformViewSlot(viewId);
|
||||
expect(slot.style.pointerEvents, 'auto',
|
||||
reason:
|
||||
'Should re-enable pointer events for the contents of the view.');
|
||||
final DomElement innerSlot = slot.querySelector('slot')!;
|
||||
final html.Element innerSlot = slot.querySelector('slot')!;
|
||||
expect(innerSlot.getAttribute('name'), contains('$viewId'),
|
||||
reason:
|
||||
'The name attribute of the inner SLOT tag must refer to the viewId.');
|
||||
|
||||
@ -70,7 +70,7 @@ Future<void> testMain() async {
|
||||
|
||||
group('createElement', () {
|
||||
test('creates slot element that can receive pointer events', () {
|
||||
final DomElement element = view.createElement();
|
||||
final html.Element element = view.createElement();
|
||||
|
||||
expect(element.tagName, equalsIgnoringCase('flt-platform-view-slot'));
|
||||
expect(element.style.pointerEvents, 'auto');
|
||||
|
||||
@ -396,9 +396,9 @@ class _LoggingTestSurface extends PersistedContainerSurface {
|
||||
}
|
||||
|
||||
@override
|
||||
DomElement createElement() {
|
||||
html.Element createElement() {
|
||||
log.add('createElement');
|
||||
return createDomElement('flt-test-layer');
|
||||
return html.Element.tag('flt-test-layer');
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:html' as html;
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:test/bootstrap/browser.dart';
|
||||
@ -106,13 +107,13 @@ void testMain() {
|
||||
});
|
||||
|
||||
test('can set style properties on elements', () {
|
||||
final DomElement element = domDocument.createElement('div');
|
||||
final html.Element element = html.document.createElement('div');
|
||||
setElementStyle(element, 'color', 'red');
|
||||
expect(element.style.color, 'red');
|
||||
});
|
||||
|
||||
test('can remove style properties from elements', () {
|
||||
final DomElement element = domDocument.createElement('div');
|
||||
final html.Element element = html.document.createElement('div');
|
||||
setElementStyle(element, 'color', 'blue');
|
||||
expect(element.style.color, 'blue');
|
||||
setElementStyle(element, 'color', null);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user