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

Commit ae9e092

Browse files
authored
Use dart.library.html to distinguish dart2wasm from dart2js/ddc in conditional imports (#53307)
Users of packages that have specialized code for the VM (which supports FFI) use conditional imports based on `dart.library.ffi`. We don't want the VM-specific code to be used for web in dart2wasm. As a result we're going to make `dart.library.ffi` be false in conditional imports (as well as in `const bool.fromEnvironment('dart.library.ffi')`). Issue dart-lang/sdk#55948 Issue flutter/flutter#149984
1 parent b64722b commit ae9e092

File tree

5 files changed

+5
-9
lines changed

5 files changed

+5
-9
lines changed

lib/web_ui/lib/src/engine/renderer.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'dart:math' as math;
77
import 'dart:typed_data';
88

99
import 'package:ui/src/engine.dart';
10-
import 'package:ui/src/engine/skwasm/skwasm_stub.dart' if (dart.library.ffi) 'package:ui/src/engine/skwasm/skwasm_impl.dart';
10+
import 'package:ui/src/engine/skwasm/skwasm_impl.dart' if (dart.library.html) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
1111
import 'package:ui/ui.dart' as ui;
1212
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
1313

lib/web_ui/lib/ui_web/src/ui_web/browser_detection.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,7 @@ class BrowserDetection {
195195
bool get isEdge => userAgent.contains('Edg/');
196196

197197
/// Whether we are running from a wasm module compiled with dart2wasm.
198-
///
199-
/// Note: Currently the ffi library is available from dart2wasm but not dart2js
200-
/// or dartdevc.
201-
bool get isWasm => const bool.fromEnvironment('dart.library.ffi');
198+
bool get isWasm => !const bool.fromEnvironment('dart.library.html');
202199
}
203200

204201
/// A short-hand accessor to the [BrowserDetection.instance] singleton.

lib/web_ui/test/ui/utils.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
import 'dart:async';
66

77
import 'package:ui/src/engine.dart';
8-
import 'package:ui/src/engine/skwasm/skwasm_stub.dart'
9-
if (dart.library.ffi) 'package:ui/src/engine/skwasm/skwasm_impl.dart';
8+
import 'package:ui/src/engine/skwasm/skwasm_impl.dart' if (dart.library.html) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
109
import 'package:ui/ui.dart';
1110

1211
import '../common/rendering.dart';

web_sdk/sdk_rewriter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ const Set<String> rootLibraryNames = <String>{
102102
};
103103

104104
final Map<Pattern, String> extraImportsMap = <Pattern, String>{
105-
RegExp('skwasm_(stub|impl)'): "import 'dart:_skwasm_stub' if (dart.library.ffi) 'dart:_skwasm_impl';",
105+
RegExp('skwasm_(stub|impl)'): "import 'dart:_skwasm_impl' if (dart.library.html) 'dart:_skwasm_stub';",
106106
'ui_web': "import 'dart:ui_web' as ui_web;",
107107
'engine': "import 'dart:_engine';",
108108
'web_unicode': "import 'dart:_web_unicode';",

web_sdk/test/sdk_rewriter_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ void printSomething() {
165165
test('gets correct extra imports', () {
166166
// Root libraries.
167167
expect(getExtraImportsForLibrary('engine'), <String>[
168-
"import 'dart:_skwasm_stub' if (dart.library.ffi) 'dart:_skwasm_impl';",
168+
"import 'dart:_skwasm_impl' if (dart.library.html) 'dart:_skwasm_stub';",
169169
"import 'dart:ui_web' as ui_web;",
170170
"import 'dart:_web_unicode';",
171171
"import 'dart:_web_test_fonts';",

0 commit comments

Comments
 (0)