Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(963)

Side by Side Diff: sdk/lib/_internal/pub/asset/dart/transformer_isolate.dart

Issue 198053009: Use real "package:" imports in pub's plugin-loading code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | sdk/lib/_internal/pub/lib/src/barback/build_environment.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // Note: this explicitly avoids using a library tag because pub will add 5 library pub.transformer_isolate;
6 // additional imports at the top of the file.
7 6
8 import 'dart:async'; 7 import 'dart:async';
9 import 'dart:isolate'; 8 import 'dart:isolate';
10 import 'dart:convert'; 9 import 'dart:convert';
11 import 'dart:mirrors'; 10 import 'dart:mirrors';
12 11
13 import '<<URL_BASE>>/packages/source_maps/span.dart'; 12 import 'package:source_maps/span.dart';
14 import '<<URL_BASE>>/packages/stack_trace/stack_trace.dart'; 13 import 'package:stack_trace/stack_trace.dart';
15 import '<<URL_BASE>>/packages/barback/barback.dart'; 14 import 'package:barback/barback.dart';
16 // TODO(nweiz): don't import from "src" once issue 14966 is fixed. 15 // TODO(nweiz): don't import from "src" once issue 14966 is fixed.
17 import '<<URL_BASE>>/packages/barback/src/internal_asset.dart'; 16 import 'package:barback/src/internal_asset.dart';
18 17
19 /// Sets up the initial communication with the host isolate. 18 /// Sets up the initial communication with the host isolate.
20 void main(_, SendPort replyTo) { 19 void loadTransformers(SendPort replyTo) {
21 var port = new ReceivePort(); 20 var port = new ReceivePort();
22 replyTo.send(port.sendPort); 21 replyTo.send(port.sendPort);
23 port.first.then((wrappedMessage) { 22 port.first.then((wrappedMessage) {
24 _respond(wrappedMessage, (message) { 23 _respond(wrappedMessage, (message) {
25 var library = Uri.parse(message['library']); 24 var library = Uri.parse(message['library']);
26 var configuration = JSON.decode(message['configuration']); 25 var configuration = JSON.decode(message['configuration']);
27 var mode = new BarbackMode(message['mode']); 26 var mode = new BarbackMode(message['mode']);
28 return initialize(library, configuration, mode). 27 return _initialize(library, configuration, mode).
29 map(_serializeTransformerOrGroup).toList(); 28 map(_serializeTransformerOrGroup).toList();
30 }); 29 });
31 }); 30 });
32 } 31 }
33 32
34 /// Loads all the transformers and groups defined in [uri]. 33 /// Loads all the transformers and groups defined in [uri].
35 /// 34 ///
36 /// Loads the library, finds any Transformer or TransformerGroup subclasses in 35 /// Loads the library, finds any Transformer or TransformerGroup subclasses in
37 /// it, instantiates them with [configuration] and [mode], and returns them. 36 /// it, instantiates them with [configuration] and [mode], and returns them.
38 Iterable initialize(Uri uri, Map configuration, BarbackMode mode) { 37 Iterable _initialize(Uri uri, Map configuration, BarbackMode mode) {
39 var mirrors = currentMirrorSystem(); 38 var mirrors = currentMirrorSystem();
40 var transformerClass = reflectClass(Transformer); 39 var transformerClass = reflectClass(Transformer);
41 var groupClass = reflectClass(TransformerGroup); 40 var groupClass = reflectClass(TransformerGroup);
42 41
43 // TODO(nweiz): if no valid transformers are found, throw an error message 42 // TODO(nweiz): if no valid transformers are found, throw an error message
44 // describing candidates and why they were rejected. 43 // describing candidates and why they were rejected.
45 return mirrors.libraries[uri].declarations.values.map((declaration) { 44 return mirrors.libraries[uri].declarations.values.map((declaration) {
46 if (declaration is! ClassMirror) return null; 45 if (declaration is! ClassMirror) return null;
47 var classMirror = declaration; 46 var classMirror = declaration;
48 if (classMirror.isPrivate) return null; 47 if (classMirror.isPrivate) return null;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 } 101 }
103 102
104 Future<String> readInputAsString(AssetId id, {Encoding encoding}) { 103 Future<String> readInputAsString(AssetId id, {Encoding encoding}) {
105 if (encoding == null) encoding = UTF8; 104 if (encoding == null) encoding = UTF8;
106 return getInput(id).then((input) => input.readAsString(encoding: encoding)); 105 return getInput(id).then((input) => input.readAsString(encoding: encoding));
107 } 106 }
108 107
109 Stream<List<int>> readInput(AssetId id) => 108 Stream<List<int>> readInput(AssetId id) =>
110 _futureStream(getInput(id).then((input) => input.read())); 109 _futureStream(getInput(id).then((input) => input.read()));
111 110
111 Future<bool> hasInput(AssetId id) {
112 return getInput(id).then((_) => true).catchError((error) {
113 if (error is AssetNotFoundException && error.id == id) return false;
114 throw error;
115 });
116 }
117
112 void addOutput(Asset output) { 118 void addOutput(Asset output) {
113 _call(_port, { 119 _call(_port, {
114 'type': 'addOutput', 120 'type': 'addOutput',
115 'output': serializeAsset(output) 121 'output': serializeAsset(output)
116 }); 122 });
117 } 123 }
124
125 void consumePrimary() {
126 _call(_port, {'type': 'consumePrimary'});
127 }
118 } 128 }
119 129
120 /// Returns the mirror for the root Object type. 130 /// Returns the mirror for the root Object type.
121 ClassMirror get objectMirror => reflectClass(Object); 131 ClassMirror get objectMirror => reflectClass(Object);
122 132
123 // TODO(nweiz): clean this up when issue 13248 is fixed. 133 // TODO(nweiz): clean this up when issue 13248 is fixed.
124 MethodMirror getConstructor(ClassMirror classMirror, String constructor) { 134 MethodMirror getConstructor(ClassMirror classMirror, String constructor) {
125 var name = new Symbol("${MirrorSystem.getName(classMirror.simpleName)}" 135 var name = new Symbol("${MirrorSystem.getName(classMirror.simpleName)}"
126 ".$constructor"); 136 ".$constructor");
127 var candidate = classMirror.declarations[name]; 137 var candidate = classMirror.declarations[name];
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 subscription = callback().listen(controller.add, 391 subscription = callback().listen(controller.add,
382 onError: controller.addError, 392 onError: controller.addError,
383 onDone: controller.close); 393 onDone: controller.close);
384 }, 394 },
385 onCancel: () => subscription.cancel(), 395 onCancel: () => subscription.cancel(),
386 onPause: () => subscription.pause(), 396 onPause: () => subscription.pause(),
387 onResume: () => subscription.resume(), 397 onResume: () => subscription.resume(),
388 sync: true); 398 sync: true);
389 return controller.stream; 399 return controller.stream;
390 } 400 }
OLDNEW
« no previous file with comments | « no previous file | sdk/lib/_internal/pub/lib/src/barback/build_environment.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698