diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter
index 5ba213f..bd363d1 100644
--- a/ci/licenses_golden/licenses_flutter
+++ b/ci/licenses_golden/licenses_flutter
@@ -983,6 +983,7 @@
 FILE: ../../../flutter/lib/web_ui/lib/src/engine/clipboard.dart
 FILE: ../../../flutter/lib/web_ui/lib/src/engine/color_filter.dart
 FILE: ../../../flutter/lib/web_ui/lib/src/engine/configuration.dart
+FILE: ../../../flutter/lib/web_ui/lib/src/engine/dom.dart
 FILE: ../../../flutter/lib/web_ui/lib/src/engine/embedder.dart
 FILE: ../../../flutter/lib/web_ui/lib/src/engine/engine_canvas.dart
 FILE: ../../../flutter/lib/web_ui/lib/src/engine/font_change_util.dart
diff --git a/lib/web_ui/lib/src/engine.dart b/lib/web_ui/lib/src/engine.dart
index fedb084..9961367 100644
--- a/lib/web_ui/lib/src/engine.dart
+++ b/lib/web_ui/lib/src/engine.dart
@@ -55,6 +55,7 @@
 export 'engine/clipboard.dart';
 export 'engine/color_filter.dart';
 export 'engine/configuration.dart';
+export 'engine/dom.dart';
 export 'engine/embedder.dart';
 export 'engine/engine_canvas.dart';
 export 'engine/font_change_util.dart';
diff --git a/lib/web_ui/lib/src/engine/assets.dart b/lib/web_ui/lib/src/engine/assets.dart
index a352a2a..439983b 100644
--- a/lib/web_ui/lib/src/engine/assets.dart
+++ b/lib/web_ui/lib/src/engine/assets.dart
@@ -6,6 +6,7 @@
 import 'dart:html' as html;
 import 'dart:typed_data';
 
+import 'dom.dart';
 import 'text/font_collection.dart';
 import 'util.dart';
 
@@ -23,10 +24,13 @@
   const AssetManager({this.assetsDir = _defaultAssetsDir});
 
   String? get _baseUrl {
-    return html.window.document
+    return domWindow.document
         .querySelectorAll('meta')
-        .whereType<html.MetaElement>()
-        .firstWhereOrNull((html.MetaElement element) => element.name == 'assetBase')
+        .where((Object? domNode) => domInstanceOfString(domNode,
+                'HTMLMetaElement'))
+        .map((Object? domNode) => domNode! as DomHTMLMetaElement)
+        .firstWhereOrNull(
+            (DomHTMLMetaElement element) => element.name == 'assetBase')
         ?.content;
   }
 
@@ -83,6 +87,7 @@
 class AssetManagerException implements Exception {
   /// Http request url for asset.
   final String url;
+
   /// Http status of response.
   final int httpStatus;
 
@@ -97,8 +102,10 @@
 class WebOnlyMockAssetManager implements AssetManager {
   /// Mock asset directory relative to base url.
   String defaultAssetsDir = '';
+
   /// Mock empty asset manifest.
   String defaultAssetManifest = '{}';
+
   /// Mock font manifest overridable for unit testing.
   String defaultFontManifest = '''
   [
diff --git a/lib/web_ui/lib/src/engine/dom.dart b/lib/web_ui/lib/src/engine/dom.dart
new file mode 100644
index 0000000..58feade
--- /dev/null
+++ b/lib/web_ui/lib/src/engine/dom.dart
@@ -0,0 +1,53 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:js/js.dart';
+import 'package:js/js_util.dart' as js_util;
+
+@JS()
+@staticInterop
+class DomWindow {}
+
+extension DomWindowExtension on DomWindow {
+  external DomDocument get document;
+}
+
+@JS('window')
+external DomWindow get domWindow;
+
+@JS()
+@staticInterop
+class DomDocument {}
+
+extension DomDocumentExtension on DomDocument {
+  external /* List<Node> */ List<Object?> querySelectorAll(String selectors);
+}
+
+@JS()
+@staticInterop
+class DomEventTarget {}
+
+@JS()
+@staticInterop
+class DomNode extends DomEventTarget {}
+
+@JS()
+@staticInterop
+class DomHTMLElement extends DomNode {}
+
+@JS()
+@staticInterop
+class DomHTMLMetaElement {}
+
+extension DomHTMLMetaElementExtension on DomHTMLMetaElement {
+  external String get name;
+  external String get content;
+  external set name(String value);
+}
+
+Object? domGetConstructor(String constructorName) =>
+    js_util.getProperty(domWindow, constructorName);
+
+bool domInstanceOfString(Object? element, String objectType) =>
+    js_util.instanceof(element, domGetConstructor(objectType)!);
