| Index: pkg/compiler/lib/src/js_backend/backend_serialization.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/backend_serialization.dart b/pkg/compiler/lib/src/js_backend/backend_serialization.dart
|
| index ddd5c507ed898e0f403fb7e56be11724f735fdf4..cc7cc03fe57f93667c901a1e6f25129e64c13dd4 100644
|
| --- a/pkg/compiler/lib/src/js_backend/backend_serialization.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/backend_serialization.dart
|
| @@ -35,6 +35,10 @@ class JavaScriptBackendSerialization implements BackendSerialization {
|
| deserializer = new JavaScriptBackendDeserializer(backend);
|
| }
|
|
|
| +const Key JS_INTEROP_NAME = const Key('jsInteropName');
|
| +const Key NATIVE_MEMBER_NAME = const Key('nativeMemberName');
|
| +const Key NATIVE_CLASS_TAG_INFO = const Key('nativeClassTagInfo');
|
| +
|
| class JavaScriptBackendSerializer implements SerializerPlugin {
|
| final JavaScriptBackend backend;
|
|
|
| @@ -42,12 +46,22 @@ class JavaScriptBackendSerializer implements SerializerPlugin {
|
|
|
| @override
|
| void onElement(Element element, ObjectEncoder createEncoder(String tag)) {
|
| - // TODO(johnniwinther): Add more data, e.g. js-interop names, native tags,
|
| - // etc.
|
| - String nativeName = backend.nativeData.nativeMemberName[element];
|
| - if (nativeName != null) {
|
| - ObjectEncoder encoder = createEncoder(_BACKEND_DATA_TAG);
|
| - encoder.setString(Key.NAME, nativeName);
|
| + ObjectEncoder encoder;
|
| + ObjectEncoder getEncoder() {
|
| + return encoder ??= createEncoder(_BACKEND_DATA_TAG);
|
| + }
|
| +
|
| + String jsInteropName = backend.nativeData.jsInteropNames[element];
|
| + if (jsInteropName != null) {
|
| + getEncoder().setString(JS_INTEROP_NAME, jsInteropName);
|
| + }
|
| + String nativeMemberName = backend.nativeData.nativeMemberName[element];
|
| + if (nativeMemberName != null) {
|
| + getEncoder().setString(NATIVE_MEMBER_NAME, nativeMemberName);
|
| + }
|
| + String nativeClassTagInfo = backend.nativeData.nativeClassTagInfo[element];
|
| + if (nativeClassTagInfo != null) {
|
| + getEncoder().setString(NATIVE_CLASS_TAG_INFO, nativeClassTagInfo);
|
| }
|
| }
|
|
|
| @@ -96,8 +110,21 @@ class JavaScriptBackendDeserializer implements DeserializerPlugin {
|
| void onElement(Element element, ObjectDecoder getDecoder(String tag)) {
|
| ObjectDecoder decoder = getDecoder(_BACKEND_DATA_TAG);
|
| if (decoder != null) {
|
| - String nativeName = decoder.getString(Key.NAME);
|
| - backend.nativeData.nativeMemberName[element] = nativeName;
|
| + String jsInteropName =
|
| + decoder.getString(JS_INTEROP_NAME, isOptional: true);
|
| + if (jsInteropName != null) {
|
| + backend.nativeData.jsInteropNames[element] = jsInteropName;
|
| + }
|
| + String nativeMemberName =
|
| + decoder.getString(NATIVE_MEMBER_NAME, isOptional: true);
|
| + if (nativeMemberName != null) {
|
| + backend.nativeData.nativeMemberName[element] = nativeMemberName;
|
| + }
|
| + String nativeClassTagInfo =
|
| + decoder.getString(NATIVE_CLASS_TAG_INFO, isOptional: true);
|
| + if (nativeClassTagInfo != null) {
|
| + backend.nativeData.nativeClassTagInfo[element] = nativeClassTagInfo;
|
| + }
|
| }
|
| }
|
|
|
|
|