| OLD | NEW |
| 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 library context.directory.manager; | 5 library context.directory.manager; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 import 'dart:convert'; | 9 import 'dart:convert'; |
| 10 import 'dart:core' hide Resource; | 10 import 'dart:core' hide Resource; |
| 11 | 11 |
| 12 import 'package:analysis_server/src/analysis_server.dart'; | 12 import 'package:analysis_server/src/analysis_server.dart'; |
| 13 import 'package:analyzer/file_system/file_system.dart'; | 13 import 'package:analyzer/file_system/file_system.dart'; |
| 14 import 'package:analyzer/instrumentation/instrumentation.dart'; | 14 import 'package:analyzer/instrumentation/instrumentation.dart'; |
| 15 import 'package:analyzer/plugin/embedded_resolver_provider.dart'; | |
| 16 import 'package:analyzer/plugin/options.dart'; | 15 import 'package:analyzer/plugin/options.dart'; |
| 17 import 'package:analyzer/plugin/resolver_provider.dart'; | 16 import 'package:analyzer/plugin/resolver_provider.dart'; |
| 18 import 'package:analyzer/source/analysis_options_provider.dart'; | 17 import 'package:analyzer/source/analysis_options_provider.dart'; |
| 19 import 'package:analyzer/source/config.dart'; | 18 import 'package:analyzer/source/config.dart'; |
| 20 import 'package:analyzer/source/embedder.dart'; | 19 import 'package:analyzer/source/embedder.dart'; |
| 21 import 'package:analyzer/source/package_map_provider.dart'; | 20 import 'package:analyzer/source/package_map_provider.dart'; |
| 22 import 'package:analyzer/source/package_map_resolver.dart'; | 21 import 'package:analyzer/source/package_map_resolver.dart'; |
| 23 import 'package:analyzer/source/path_filter.dart'; | 22 import 'package:analyzer/source/path_filter.dart'; |
| 24 import 'package:analyzer/source/pub_package_map_provider.dart'; | 23 import 'package:analyzer/source/pub_package_map_provider.dart'; |
| 25 import 'package:analyzer/source/sdk_ext.dart'; | 24 import 'package:analyzer/source/sdk_ext.dart'; |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 * TODO(scheglov) remove [pathContext]. | 400 * TODO(scheglov) remove [pathContext]. |
| 402 */ | 401 */ |
| 403 AbsolutePathContext absolutePathContext; | 402 AbsolutePathContext absolutePathContext; |
| 404 | 403 |
| 405 /** | 404 /** |
| 406 * The context used to work with file system paths. | 405 * The context used to work with file system paths. |
| 407 */ | 406 */ |
| 408 pathos.Context pathContext; | 407 pathos.Context pathContext; |
| 409 | 408 |
| 410 /** | 409 /** |
| 411 * A function that will return a [UriResolver] that can be used to resolve | |
| 412 * URI's for embedded libraries within a given folder, or `null` if we should | |
| 413 * fall back to the standard URI resolver. | |
| 414 */ | |
| 415 final EmbeddedResolverProvider embeddedUriResolverProvider; | |
| 416 | |
| 417 /** | |
| 418 * The list of excluded paths (folders and files) most recently passed to | 410 * The list of excluded paths (folders and files) most recently passed to |
| 419 * [setRoots]. | 411 * [setRoots]. |
| 420 */ | 412 */ |
| 421 List<String> excludedPaths = <String>[]; | 413 List<String> excludedPaths = <String>[]; |
| 422 | 414 |
| 423 /** | 415 /** |
| 424 * The list of included paths (folders and files) most recently passed to | 416 * The list of included paths (folders and files) most recently passed to |
| 425 * [setRoots]. | 417 * [setRoots]. |
| 426 */ | 418 */ |
| 427 List<String> includedPaths = <String>[]; | 419 List<String> includedPaths = <String>[]; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 * Stream subscription we are using to watch each analysis root directory for | 481 * Stream subscription we are using to watch each analysis root directory for |
| 490 * changes. | 482 * changes. |
| 491 */ | 483 */ |
| 492 final Map<Folder, StreamSubscription<WatchEvent>> changeSubscriptions = | 484 final Map<Folder, StreamSubscription<WatchEvent>> changeSubscriptions = |
| 493 <Folder, StreamSubscription<WatchEvent>>{}; | 485 <Folder, StreamSubscription<WatchEvent>>{}; |
| 494 | 486 |
| 495 ContextManagerImpl( | 487 ContextManagerImpl( |
| 496 this.resourceProvider, | 488 this.resourceProvider, |
| 497 this.sdkManager, | 489 this.sdkManager, |
| 498 this.packageResolverProvider, | 490 this.packageResolverProvider, |
| 499 this.embeddedUriResolverProvider, | |
| 500 this._packageMapProvider, | 491 this._packageMapProvider, |
| 501 this.analyzedFilesGlobs, | 492 this.analyzedFilesGlobs, |
| 502 this._instrumentationService, | 493 this._instrumentationService, |
| 503 this.defaultContextOptions) { | 494 this.defaultContextOptions) { |
| 504 absolutePathContext = resourceProvider.absolutePathContext; | 495 absolutePathContext = resourceProvider.absolutePathContext; |
| 505 pathContext = resourceProvider.pathContext; | 496 pathContext = resourceProvider.pathContext; |
| 506 } | 497 } |
| 507 | 498 |
| 508 @override | 499 @override |
| 509 Iterable<AnalysisContext> get analysisContexts => folderMap.values; | 500 Iterable<AnalysisContext> get analysisContexts => folderMap.values; |
| (...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 /** | 1150 /** |
| 1160 * Set up a [SourceFactory] that resolves packages as appropriate for the | 1151 * Set up a [SourceFactory] that resolves packages as appropriate for the |
| 1161 * given [disposition]. | 1152 * given [disposition]. |
| 1162 */ | 1153 */ |
| 1163 SourceFactory _createSourceFactory(InternalAnalysisContext context, | 1154 SourceFactory _createSourceFactory(InternalAnalysisContext context, |
| 1164 AnalysisOptions options, FolderDisposition disposition, Folder folder) { | 1155 AnalysisOptions options, FolderDisposition disposition, Folder folder) { |
| 1165 List<UriResolver> resolvers = []; | 1156 List<UriResolver> resolvers = []; |
| 1166 List<UriResolver> packageUriResolvers = | 1157 List<UriResolver> packageUriResolvers = |
| 1167 disposition.createPackageUriResolvers(resourceProvider); | 1158 disposition.createPackageUriResolvers(resourceProvider); |
| 1168 | 1159 |
| 1169 EmbedderUriResolver embedderUriResolver; | 1160 EmbedderUriResolver embedderUriResolver = |
| 1170 | |
| 1171 // First check for a resolver provider. | |
| 1172 if (embeddedUriResolverProvider != null) { | |
| 1173 embedderUriResolver = embeddedUriResolverProvider(folder); | |
| 1174 } | |
| 1175 | |
| 1176 // If no embedded URI resolver was provided, defer to a locator-backed one. | |
| 1177 embedderUriResolver ??= | |
| 1178 new EmbedderUriResolver(context.embedderYamlLocator.embedderYamls); | 1161 new EmbedderUriResolver(context.embedderYamlLocator.embedderYamls); |
| 1179 if (embedderUriResolver.length == 0) { | 1162 if (embedderUriResolver.length == 0) { |
| 1180 // The embedder uri resolver has no mappings. Use the default Dart SDK | 1163 // The embedder uri resolver has no mappings. Use the default Dart SDK |
| 1181 // uri resolver. | 1164 // uri resolver. |
| 1182 resolvers.add(new DartUriResolver(sdkManager.getSdkForOptions(options))); | 1165 resolvers.add(new DartUriResolver(sdkManager.getSdkForOptions(options))); |
| 1183 } else { | 1166 } else { |
| 1184 // The embedder uri resolver has mappings, use it instead of the default | 1167 // The embedder uri resolver has mappings, use it instead of the default |
| 1185 // Dart SDK uri resolver. | 1168 // Dart SDK uri resolver. |
| 1186 resolvers.add(embedderUriResolver); | 1169 resolvers.add(embedderUriResolver); |
| 1187 } | 1170 } |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1834 ResourceProvider resourceProvider) { | 1817 ResourceProvider resourceProvider) { |
| 1835 if (packages != null) { | 1818 if (packages != null) { |
| 1836 // Construct package map for the SdkExtUriResolver. | 1819 // Construct package map for the SdkExtUriResolver. |
| 1837 Map<String, List<Folder>> packageMap = buildPackageMap(resourceProvider); | 1820 Map<String, List<Folder>> packageMap = buildPackageMap(resourceProvider); |
| 1838 return <UriResolver>[new SdkExtUriResolver(packageMap)]; | 1821 return <UriResolver>[new SdkExtUriResolver(packageMap)]; |
| 1839 } else { | 1822 } else { |
| 1840 return const <UriResolver>[]; | 1823 return const <UriResolver>[]; |
| 1841 } | 1824 } |
| 1842 } | 1825 } |
| 1843 } | 1826 } |
| OLD | NEW |