tweaks
diff --git a/benchmarks/lib/complex.dart b/benchmarks/lib/complex.dart
index 55ea57e..b473f1f 100644
--- a/benchmarks/lib/complex.dart
+++ b/benchmarks/lib/complex.dart
@@ -10,7 +10,9 @@
final math.Random random = math.Random(0);
void main() {
- ui.setScreenSize(3840, 2160); // 4k
+ ui.initializeEngine(
+ screenSize: const Size(3840, 2160), // 4k
+ );
runApp(MyApp());
}
diff --git a/benchmarks/lib/counter.dart b/benchmarks/lib/counter.dart
index cbe1933..8703c1b 100644
--- a/benchmarks/lib/counter.dart
+++ b/benchmarks/lib/counter.dart
@@ -1,6 +1,10 @@
+import 'package:engine/ui.dart' as ui;
import 'package:flute/material.dart';
void main() {
+ ui.initializeEngine(
+ screenSize: const Size(3840, 2160), // 4k
+ );
runApp(MyApp());
}
diff --git a/engine/lib/src/initialization_io.dart b/engine/lib/src/initialization_io.dart
new file mode 100644
index 0000000..325aed5
--- /dev/null
+++ b/engine/lib/src/initialization_io.dart
@@ -0,0 +1 @@
+Future<void> initializeEngine() async {}
diff --git a/engine/lib/src/initialization_web.dart b/engine/lib/src/initialization_web.dart
new file mode 100644
index 0000000..c18c064
--- /dev/null
+++ b/engine/lib/src/initialization_web.dart
@@ -0,0 +1,10 @@
+import 'package:js/js.dart';
+
+@JS('window.flutterCanvasKit')
+external set _windowFlutterCanvasKit(Object? value);
+
+Future<void> initializeEngine() async {
+ // Pretend that CanvasKit exists. Flute doesn't render anything, but we're
+ // interested in exercising the CanvasKit codepaths in the framework.
+ _windowFlutterCanvasKit = Object();
+}
diff --git a/engine/lib/ui.dart b/engine/lib/ui.dart
index 7b45a79..a852356 100644
--- a/engine/lib/ui.dart
+++ b/engine/lib/ui.dart
@@ -8,6 +8,9 @@
import 'dart:math' as math;
import 'dart:typed_data';
+import 'src/initialization_io.dart'
+ if (dart.library.js_util) 'src/initialization_web.dart' as initialization;
+
part 'src/annotations.dart';
part 'src/channel_buffers.dart';
part 'src/compositing.dart';
@@ -40,7 +43,12 @@
double _screenWidth = 1024;
double _screenHeight = 1024;
-void setScreenSize(double width, double height) {
- _screenWidth = width;
- _screenHeight = height;
+Future<void> initializeEngine({
+ Size? screenSize,
+}) async {
+ if (screenSize != null) {
+ _screenWidth = screenSize.width;
+ _screenHeight = screenSize.height;
+ }
+ await initialization.initializeEngine();
}
diff --git a/engine/pubspec.yaml b/engine/pubspec.yaml
index be5c371..babeba2 100644
--- a/engine/pubspec.yaml
+++ b/engine/pubspec.yaml
@@ -3,4 +3,5 @@
environment:
sdk: ">=2.17.0-0 <4.0.0"
dependencies:
+ js: 0.6.5
meta: 1.8.0
diff --git a/framework/lib/src/foundation/_platform_web.dart b/framework/lib/src/foundation/_platform_web.dart
index 0fb6bf8..84cc723 100644
--- a/framework/lib/src/foundation/_platform_web.dart
+++ b/framework/lib/src/foundation/_platform_web.dart
@@ -40,7 +40,7 @@
// 0.20ms. As `defaultTargetPlatform` is routinely called dozens of times per
// frame this value should be cached.
final platform.TargetPlatform _browserPlatform = () {
- final String navigatorPlatform = domWindow.navigator.platform?.toLowerCase() ?? '';
+ final String navigatorPlatform = "android" ?? '';
if (navigatorPlatform.startsWith('mac')) {
return platform.TargetPlatform.macOS;
}
diff --git a/script/bin/sync.dart b/script/bin/sync.dart
index 673d371..44450dd 100644
--- a/script/bin/sync.dart
+++ b/script/bin/sync.dart
@@ -80,6 +80,7 @@
if (relPath == p.join('src', 'foundation', '_platform_web.dart')) {
source = source.replaceAll('if (ui.debugEmulateFlutterTesterEnvironment as bool)', 'if (true)');
+ source = source.replaceAll('domWindow.navigator.platform?.toLowerCase()', '"android"');
}
bool skip = false;