Chromium Code Reviews| Index: pkg/analysis_server/lib/src/analysis_server.dart |
| diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart |
| index 5859a63103818eb38f29be3a8eb80cb0247e0814..ac5ccbf15623af9c532d2512e02aad5779757615 100644 |
| --- a/pkg/analysis_server/lib/src/analysis_server.dart |
| +++ b/pkg/analysis_server/lib/src/analysis_server.dart |
| @@ -295,6 +295,12 @@ class AnalysisServer { |
| new StreamController<ContextsChangedEvent>.broadcast(); |
| /** |
| + * The file resolver provider used to override the way file URI's are |
| + * resolved in some contexts. |
| + */ |
| + ResolverProvider fileResolverProvider; |
| + |
| + /** |
| * Initialize a newly created server to receive requests from and send |
| * responses to the given [channel]. |
| * |
| @@ -312,7 +318,8 @@ class AnalysisServer { |
| this.options, |
| this.defaultSdkCreator, |
| this.instrumentationService, |
| - {ResolverProvider packageResolverProvider: null, |
| + {ResolverProvider fileResolverProvider: null, |
| + ResolverProvider packageResolverProvider: null, |
| bool useSingleContextManager: false, |
| this.rethrowExceptions: true}) |
| : index = _index, |
| @@ -339,6 +346,7 @@ class AnalysisServer { |
| instrumentationService, |
| defaultContextOptions); |
| } |
| + this.fileResolverProvider = fileResolverProvider; |
| ServerContextManagerCallbacks contextManagerCallbacks = |
| new ServerContextManagerCallbacks(this, resourceProvider); |
| contextManager.callbacks = contextManagerCallbacks; |
| @@ -1557,12 +1565,14 @@ class ServerContextManagerCallbacks extends ContextManagerCallbacks { |
| context.contentCache = analysisServer.overlayState; |
| analysisServer.folderMap[folder] = context; |
| _locateEmbedderYamls(context, disposition); |
| + context.fileResolverProvider = analysisServer.fileResolverProvider; |
| context.sourceFactory = |
| _createSourceFactory(context, options, disposition, folder); |
| context.analysisOptions = options; |
| analysisServer._onContextsChangedController |
| .add(new ContextsChangedEvent(added: [context])); |
| analysisServer.schedulePerformAnalysisOperation(context); |
| + |
| return context; |
| } |
| @@ -1638,7 +1648,11 @@ class ServerContextManagerCallbacks extends ContextManagerCallbacks { |
| } |
| resolvers.addAll(packageUriResolvers); |
| - resolvers.add(new ResourceUriResolver(resourceProvider)); |
| + if(context.fileResolverProvider == null) { |
|
Brian Wilkerson
2016/06/17 20:53:10
nit: format the code
jwren
2016/06/17 21:19:45
Done.
|
| + resolvers.add(new ResourceUriResolver(resourceProvider)); |
| + } else { |
| + resolvers.add(context.fileResolverProvider(folder)); |
| + } |
| return new SourceFactory(resolvers, disposition.packages); |
| } |