| 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; |
| (...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 Map<Folder, YamlMap> embedderYamls = | 894 Map<Folder, YamlMap> embedderYamls = |
| 895 new EmbedderYamlLocator(packageMap).embedderYamls; | 895 new EmbedderYamlLocator(packageMap).embedderYamls; |
| 896 | 896 |
| 897 SourceFactory sourceFactory = info.context.sourceFactory; | 897 SourceFactory sourceFactory = info.context.sourceFactory; |
| 898 | 898 |
| 899 // Check for library embedders. | 899 // Check for library embedders. |
| 900 if (embedderYamls.values.any(definesEmbeddedLibs)) { | 900 if (embedderYamls.values.any(definesEmbeddedLibs)) { |
| 901 // If there is no embedded URI resolver, a new source factory needs to | 901 // If there is no embedded URI resolver, a new source factory needs to |
| 902 // be recreated. | 902 // be recreated. |
| 903 if (sourceFactory is SourceFactoryImpl) { | 903 if (sourceFactory is SourceFactoryImpl) { |
| 904 if (!sourceFactory.resolvers | 904 // Get all but the dart: Uri resolver. |
| 905 .any((UriResolver r) => r is EmbedderUriResolver)) { | 905 List<UriResolver> resolvers = sourceFactory.resolvers |
| 906 // Get all but the dart: Uri resolver. | 906 .where((r) => r is! DartUriResolver) |
| 907 List<UriResolver> resolvers = sourceFactory.resolvers | 907 .toList(); |
| 908 .where((r) => r is! DartUriResolver) | 908 // Add an embedded URI resolver in its place. |
| 909 .toList(); | 909 resolvers.add(new DartUriResolver(new EmbedderSdk(embedderYamls))); |
| 910 // Add an embedded URI resolver in its place. | |
| 911 resolvers.add(new EmbedderUriResolver(embedderYamls)); | |
| 912 | 910 |
| 913 // Set a new source factory. | 911 // Set a new source factory. |
| 914 SourceFactoryImpl newFactory = sourceFactory.clone(); | 912 SourceFactoryImpl newFactory = sourceFactory.clone(); |
| 915 newFactory.resolvers.clear(); | 913 newFactory.resolvers.clear(); |
| 916 newFactory.resolvers.addAll(resolvers); | 914 newFactory.resolvers.addAll(resolvers); |
| 917 info.context.sourceFactory = newFactory; | 915 info.context.sourceFactory = newFactory; |
| 918 return; | 916 return; |
| 919 } | |
| 920 } | 917 } |
| 921 } | 918 } |
| 922 | 919 |
| 923 // Next check for package URI updates. | 920 // Next check for package URI updates. |
| 924 if (info.isPathToPackageDescription(path)) { | 921 if (info.isPathToPackageDescription(path)) { |
| 925 Packages packages = _readPackagespec(packagespec); | 922 Packages packages = _readPackagespec(packagespec); |
| 926 if (packages != null) { | 923 if (packages != null) { |
| 927 _updateContextPackageUriResolver( | 924 _updateContextPackageUriResolver( |
| 928 folder, new PackagesFileDisposition(packages)); | 925 folder, new PackagesFileDisposition(packages)); |
| 929 } | 926 } |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1150 /** | 1147 /** |
| 1151 * Set up a [SourceFactory] that resolves packages as appropriate for the | 1148 * Set up a [SourceFactory] that resolves packages as appropriate for the |
| 1152 * given [disposition]. | 1149 * given [disposition]. |
| 1153 */ | 1150 */ |
| 1154 SourceFactory _createSourceFactory(InternalAnalysisContext context, | 1151 SourceFactory _createSourceFactory(InternalAnalysisContext context, |
| 1155 AnalysisOptions options, FolderDisposition disposition, Folder folder) { | 1152 AnalysisOptions options, FolderDisposition disposition, Folder folder) { |
| 1156 List<UriResolver> resolvers = []; | 1153 List<UriResolver> resolvers = []; |
| 1157 List<UriResolver> packageUriResolvers = | 1154 List<UriResolver> packageUriResolvers = |
| 1158 disposition.createPackageUriResolvers(resourceProvider); | 1155 disposition.createPackageUriResolvers(resourceProvider); |
| 1159 | 1156 |
| 1160 EmbedderUriResolver embedderUriResolver = | 1157 EmbedderSdk sdk = |
| 1161 new EmbedderUriResolver(context.embedderYamlLocator.embedderYamls); | 1158 new EmbedderSdk(context.embedderYamlLocator.embedderYamls); |
| 1162 if (embedderUriResolver.length == 0) { | 1159 if (sdk.libraryMap.size() == 0) { |
| 1163 // The embedder uri resolver has no mappings. Use the default Dart SDK | 1160 // The embedder uri resolver has no mappings. Use the default Dart SDK |
| 1164 // uri resolver. | 1161 // uri resolver. |
| 1165 resolvers.add(new DartUriResolver(sdkManager.getSdkForOptions(options))); | 1162 resolvers.add(new DartUriResolver(sdkManager.getSdkForOptions(options))); |
| 1166 } else { | 1163 } else { |
| 1167 // The embedder uri resolver has mappings, use it instead of the default | 1164 // The embedder uri resolver has mappings, use it instead of the default |
| 1168 // Dart SDK uri resolver. | 1165 // Dart SDK uri resolver. |
| 1169 resolvers.add(embedderUriResolver); | 1166 resolvers.add(new DartUriResolver(sdk)); |
| 1170 } | 1167 } |
| 1171 | 1168 |
| 1172 resolvers.addAll(packageUriResolvers); | 1169 resolvers.addAll(packageUriResolvers); |
| 1173 resolvers.add(new ResourceUriResolver(resourceProvider)); | 1170 resolvers.add(new ResourceUriResolver(resourceProvider)); |
| 1174 return new SourceFactory(resolvers, disposition.packages); | 1171 return new SourceFactory(resolvers, disposition.packages); |
| 1175 } | 1172 } |
| 1176 | 1173 |
| 1177 /** | 1174 /** |
| 1178 * Clean up and destroy the context associated with the given folder. | 1175 * Clean up and destroy the context associated with the given folder. |
| 1179 */ | 1176 */ |
| (...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1817 ResourceProvider resourceProvider) { | 1814 ResourceProvider resourceProvider) { |
| 1818 if (packages != null) { | 1815 if (packages != null) { |
| 1819 // Construct package map for the SdkExtUriResolver. | 1816 // Construct package map for the SdkExtUriResolver. |
| 1820 Map<String, List<Folder>> packageMap = buildPackageMap(resourceProvider); | 1817 Map<String, List<Folder>> packageMap = buildPackageMap(resourceProvider); |
| 1821 return <UriResolver>[new SdkExtUriResolver(packageMap)]; | 1818 return <UriResolver>[new SdkExtUriResolver(packageMap)]; |
| 1822 } else { | 1819 } else { |
| 1823 return const <UriResolver>[]; | 1820 return const <UriResolver>[]; |
| 1824 } | 1821 } |
| 1825 } | 1822 } |
| 1826 } | 1823 } |
| OLD | NEW |