Skip to content

Commit 133e8a8

Browse files
mkustermannjason-simmons
authored andcommitted
Use new dart:js_interop way to externalize/internalize objects (flutter#53304)
The issue in [0] was fixed. So we no longer have to use conditional imports and dart2wasm vs dart2js specific implementations. Instead we use the new extension methods introduced due to [0], namely `Object.toExternalReference` and `ExternalDartReference.toDartObject`. [0] dart-lang/sdk#55183
1 parent d11ae15 commit 133e8a8

File tree

9 files changed

+13
-59
lines changed

9 files changed

+13
-59
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40602,7 +40602,6 @@ ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/shadow.dart + ../../../flutte
4060240602
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl.dart + ../../../flutter/LICENSE
4060340603
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/canvas.dart + ../../../flutter/LICENSE
4060440604
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/codecs.dart + ../../../flutter/LICENSE
40605-
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/dart_js_conversion.dart + ../../../flutter/LICENSE
4060640605
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/filters.dart + ../../../flutter/LICENSE
4060740606
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/font_collection.dart + ../../../flutter/LICENSE
4060840607
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/image.dart + ../../../flutter/LICENSE
@@ -40639,7 +40638,6 @@ ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/shaders.da
4063940638
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/surface.dart + ../../../flutter/LICENSE
4064040639
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/vertices.dart + ../../../flutter/LICENSE
4064140640
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_stub.dart + ../../../flutter/LICENSE
40642-
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_stub/dart_js_conversion.dart + ../../../flutter/LICENSE
4064340641
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_stub/renderer.dart + ../../../flutter/LICENSE
4064440642
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/svg.dart + ../../../flutter/LICENSE
4064540643
ORIGIN: ../../../flutter/lib/web_ui/lib/src/engine/test_embedding.dart + ../../../flutter/LICENSE
@@ -43484,7 +43482,6 @@ FILE: ../../../flutter/lib/web_ui/lib/src/engine/shadow.dart
4348443482
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl.dart
4348543483
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/canvas.dart
4348643484
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/codecs.dart
43487-
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/dart_js_conversion.dart
4348843485
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/filters.dart
4348943486
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/font_collection.dart
4349043487
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/image.dart
@@ -43521,7 +43518,6 @@ FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/shaders.dart
4352143518
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/surface.dart
4352243519
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/vertices.dart
4352343520
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_stub.dart
43524-
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_stub/dart_js_conversion.dart
4352543521
FILE: ../../../flutter/lib/web_ui/lib/src/engine/skwasm/skwasm_stub/renderer.dart
4352643522
FILE: ../../../flutter/lib/web_ui/lib/src/engine/svg.dart
4352743523
FILE: ../../../flutter/lib/web_ui/lib/src/engine/test_embedding.dart

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import 'package:ui/src/engine.dart';
2121
/// 5. The finalizer function is called with the SkPaint as the sole argument.
2222
/// 6. We call `delete` on SkPaint.
2323
DomFinalizationRegistry _finalizationRegistry = DomFinalizationRegistry(
24-
(JSAny boxedUniq) {
25-
final UniqueRef<Object> uniq = boxedUniq.fromJSWrapper as UniqueRef<Object>;
24+
(ExternalDartReference boxedUniq) {
25+
final UniqueRef<Object> uniq = boxedUniq.toDartObject as UniqueRef<Object>;
2626
uniq.collect();
2727
}.toJS
2828
);
@@ -34,7 +34,7 @@ NativeMemoryFinalizationRegistry nativeMemoryFinalizationRegistry = NativeMemory
3434
class NativeMemoryFinalizationRegistry {
3535
void register(Object owner, UniqueRef<Object> ref) {
3636
if (browserSupportsFinalizationRegistry) {
37-
_finalizationRegistry.register(owner.toJSWrapper, ref.toJSWrapper);
37+
_finalizationRegistry.register(owner.toExternalReference, ref.toExternalReference);
3838
}
3939
}
4040
}

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

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'dart:typed_data';
99

1010
import 'package:js/js_util.dart' as js_util;
1111
import 'package:meta/meta.dart';
12-
import 'package:ui/src/engine/skwasm/skwasm_stub.dart' if (dart.library.ffi) 'package:ui/src/engine/skwasm/skwasm_impl.dart';
1312

1413
import 'browser_detection.dart';
1514

@@ -38,13 +37,6 @@ import 'browser_detection.dart';
3837
/// used carefully and only on types that are known to not contains `JSNull` and
3938
/// `JSUndefined`.
4039
extension ObjectToJSAnyExtension on Object {
41-
// Once `Object.toJSBox` is faster (see
42-
// https://github.com/dart-lang/sdk/issues/55183) we can remove this
43-
// backend-specific workaround.
44-
@pragma('wasm:prefer-inline')
45-
@pragma('dart2js:tryInline')
46-
JSAny get toJSWrapper => dartToJsWrapper(this);
47-
4840
@pragma('wasm:prefer-inline')
4941
@pragma('dart2js:tryInline')
5042
JSAny get toJSAnyShallow {
@@ -61,10 +53,6 @@ extension ObjectToJSAnyExtension on Object {
6153
}
6254

6355
extension JSAnyToObjectExtension on JSAny {
64-
@pragma('wasm:prefer-inline')
65-
@pragma('dart2js:tryInline')
66-
Object get fromJSWrapper => jsWrapperToDart(this);
67-
6856
@pragma('wasm:prefer-inline')
6957
@pragma('dart2js:tryInline')
7058
Object get toObjectShallow {
@@ -3674,13 +3662,14 @@ class DomFinalizationRegistry {
36743662

36753663
extension DomFinalizationRegistryExtension on DomFinalizationRegistry {
36763664
@JS('register')
3677-
external JSVoid register(JSAny target, JSAny value);
3665+
external JSVoid register(
3666+
ExternalDartReference target, ExternalDartReference value);
36783667

36793668
@JS('register')
3680-
external JSVoid registerWithToken(JSAny target, JSAny value, JSAny token);
3669+
external JSVoid registerWithToken(ExternalDartReference target, ExternalDartReference value, ExternalDartReference token);
36813670

36823671
@JS('unregister')
3683-
external JSVoid unregister(JSAny token);
3672+
external JSVoid unregister(ExternalDartReference token);
36843673
}
36853674

36863675
@JS('window.FinalizationRegistry')

lib/web_ui/lib/src/engine/skwasm/skwasm_impl.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import 'dart:ffi';
1111

1212
export 'skwasm_impl/canvas.dart';
1313
export 'skwasm_impl/codecs.dart';
14-
export 'skwasm_impl/dart_js_conversion.dart';
1514
export 'skwasm_impl/filters.dart';
1615
export 'skwasm_impl/font_collection.dart';
1716
export 'skwasm_impl/image.dart';

lib/web_ui/lib/src/engine/skwasm/skwasm_impl/dart_js_conversion.dart

Lines changed: 0 additions & 16 deletions
This file was deleted.

lib/web_ui/lib/src/engine/skwasm/skwasm_impl/memory.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@ typedef DisposeFunction<T extends NativeType> = void Function(Pointer<T>);
2828

2929
class SkwasmFinalizationRegistry<T extends NativeType> {
3030
SkwasmFinalizationRegistry(this.dispose)
31-
: registry = DomFinalizationRegistry(((JSNumber address) =>
32-
dispose(Pointer<T>.fromAddress(address.toDartDouble.toInt()))
31+
: registry = DomFinalizationRegistry(((ExternalDartReference address) =>
32+
dispose(Pointer<T>.fromAddress(address.toDartObject as int))
3333
).toJS);
3434

3535
final DomFinalizationRegistry registry;
3636
final DisposeFunction<T> dispose;
3737

3838
void register(SkwasmObjectWrapper<T> wrapper) {
39-
final JSAny jsWrapper = wrapper.toJSWrapper;
39+
final ExternalDartReference jsWrapper = wrapper.toExternalReference;
4040
registry.registerWithToken(
41-
jsWrapper, wrapper.handle.address.toJS, jsWrapper);
41+
jsWrapper, wrapper.handle.address.toExternalReference, jsWrapper);
4242
}
4343

4444
void evict(SkwasmObjectWrapper<T> wrapper) {
45-
final JSAny jsWrapper = wrapper.toJSWrapper;
45+
final ExternalDartReference jsWrapper = wrapper.toExternalReference;
4646
registry.unregister(jsWrapper);
4747
dispose(wrapper.handle);
4848
}

lib/web_ui/lib/src/engine/skwasm/skwasm_stub.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,4 @@
66
// ignore: unnecessary_library_directive
77
library skwasm_stub;
88

9-
export 'skwasm_stub/dart_js_conversion.dart';
109
export 'skwasm_stub/renderer.dart';

lib/web_ui/lib/src/engine/skwasm/skwasm_stub/dart_js_conversion.dart

Lines changed: 0 additions & 13 deletions
This file was deleted.

lib/web_ui/test/canvaskit/canvaskit_api_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1929,7 +1929,7 @@ void _paragraphTests() {
19291929
// So the test simply tests that a FinalizationRegistry can be constructed
19301930
// and its `register` method can be called.
19311931
final DomFinalizationRegistry registry = DomFinalizationRegistry((String arg) {}.toJS);
1932-
registry.register(Object().toJSWrapper, Object().toJSWrapper);
1932+
registry.register(Object().toExternalReference, Object().toExternalReference);
19331933
});
19341934
}
19351935

0 commit comments

Comments
 (0)