Chromium Code Reviews| 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..aa3fa784640518117a7851571a28be0660d63c1b |
| --- /dev/null |
| +++ b/pkg/compiler/lib/src/js_backend/backend_serialization.dart |
| @@ -0,0 +1,58 @@ |
| +// 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)) { |
|
Siggi Cherem (dart-lang)
2016/03/16 23:40:14
// TODO: add other pieces of native data? (e.g. js
Johnni Winther
2016/03/17 10:49:37
Done.
|
| + 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; |
| + } |
| + } |
| +} |
| + |