| 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 b92cbd32dbf14be6beb4cf0621db2232ffb976b2..6a87e4bbb327e1242c8f2537503715a13be972bc 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;
|
| @@ -1556,12 +1564,14 @@ class ServerContextManagerCallbacks extends ContextManagerCallbacks {
|
| AnalysisEngine.instance.createAnalysisContext();
|
| context.contentCache = analysisServer.overlayState;
|
| analysisServer.folderMap[folder] = context;
|
| + 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;
|
| }
|
|
|
| @@ -1637,7 +1647,11 @@ class ServerContextManagerCallbacks extends ContextManagerCallbacks {
|
| }
|
|
|
| resolvers.addAll(packageUriResolvers);
|
| - resolvers.add(new ResourceUriResolver(resourceProvider));
|
| + if (context.fileResolverProvider == null) {
|
| + resolvers.add(new ResourceUriResolver(resourceProvider));
|
| + } else {
|
| + resolvers.add(context.fileResolverProvider(folder));
|
| + }
|
| return new SourceFactory(resolvers, disposition.packages);
|
| }
|
| }
|
|
|