| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8a4923fc9aa5715e0a2d2af6f9a97a8edcaa13b8
|
| --- /dev/null
|
| +++ b/pkg/compiler/lib/src/js_backend/backend_serialization.dart
|
| @@ -0,0 +1,60 @@
|
| +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library js_backend.serialization;
|
| +
|
| +import '../common/backend_api.dart' show
|
| + BackendSerialization;
|
| +import '../elements/elements.dart';
|
| +import '../serialization/serialization.dart' show
|
| + DeserializerPlugin,
|
| + ObjectDecoder,
|
| + ObjectEncoder,
|
| + SerializerPlugin;
|
| +import '../serialization/keys.dart';
|
| +import 'js_backend.dart';
|
| +
|
| +const String _BACKEND_DATA_TAG = 'jsBackendData';
|
| +
|
| +class JavaScriptBackendSerialization implements BackendSerialization {
|
| + final JavaScriptBackendSerializer serializer;
|
| + final JavaScriptBackendDeserializer deserializer;
|
| +
|
| + JavaScriptBackendSerialization(JavaScriptBackend backend)
|
| + : serializer = new JavaScriptBackendSerializer(backend),
|
| + deserializer = new JavaScriptBackendDeserializer(backend);
|
| +}
|
| +
|
| +class JavaScriptBackendSerializer implements SerializerPlugin {
|
| + final JavaScriptBackend backend;
|
| +
|
| + JavaScriptBackendSerializer(this.backend);
|
| +
|
| + @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);
|
| + }
|
| + }
|
| +}
|
| +
|
| +class JavaScriptBackendDeserializer implements DeserializerPlugin {
|
| + final JavaScriptBackend backend;
|
| +
|
| + JavaScriptBackendDeserializer(this.backend);
|
| +
|
| + @override
|
| + 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;
|
| + }
|
| + }
|
| +}
|
| +
|
|
|