| Index: pkg/analyzer/lib/src/context/builder.dart | 
| diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart | 
| index 6ee48d98dee79f4fa9de8585b4bf68c72de45234..375535328df656d2b4339d34a4cd7afacd48af35 100644 | 
| --- a/pkg/analyzer/lib/src/context/builder.dart | 
| +++ b/pkg/analyzer/lib/src/context/builder.dart | 
| @@ -75,6 +75,12 @@ class ContextBuilder { | 
| ResolverProvider packageResolverProvider; | 
|  | 
| /** | 
| +   * The resolver provider used to create a file: URI resolver, or `null` if | 
| +   * the normal file URI resolver is to be used. | 
| +   */ | 
| +  ResolverProvider fileResolverProvider; | 
| + | 
| +  /** | 
| * The file path of the .packages file that should be used in place of any | 
| * file found using the normal (Package Specification DEP) lookup mechanism, | 
| * or `null` if the normal lookup mechanism should be used. | 
| @@ -197,17 +203,23 @@ class ContextBuilder { | 
|  | 
| SourceFactory createSourceFactory( | 
| String rootDirectoryPath, AnalysisOptions options) { | 
| +    Folder _folder = null; | 
| +    Folder folder() { | 
| +      return _folder ??= resourceProvider.getResource('.'); | 
| +    } | 
| +    UriResolver fileResolver = fileResolverProvider == null | 
| +        ? new ResourceUriResolver(resourceProvider) | 
| +        : fileResolverProvider(folder()); | 
| if (packageResolverProvider != null) { | 
| -      Folder folder = resourceProvider.getResource('.'); | 
| -      UriResolver resolver = packageResolverProvider(folder); | 
| -      if (resolver != null) { | 
| +      UriResolver packageResolver = packageResolverProvider(folder()); | 
| +      if (packageResolver != null) { | 
| // TODO(brianwilkerson) This doesn't support either embedder files or | 
| // sdk extensions because we don't have a way to get the package map | 
| // from the resolver. | 
| List<UriResolver> resolvers = <UriResolver>[ | 
| new DartUriResolver(findSdk(null, options)), | 
| -          resolver, | 
| -          new ResourceUriResolver(resourceProvider) | 
| +          packageResolver, | 
| +          fileResolver | 
| ]; | 
| return new SourceFactory(resolvers); | 
| } | 
| @@ -219,7 +231,7 @@ class ContextBuilder { | 
| if (packageMap != null) { | 
| resolvers.add(new PackageMapUriResolver(resourceProvider, packageMap)); | 
| } | 
| -    resolvers.add(new ResourceUriResolver(resourceProvider)); | 
| +    resolvers.add(fileResolver); | 
| return new SourceFactory(resolvers); | 
| } | 
|  | 
|  |