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 1692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1703 Packages get packages => null; | 1703 Packages get packages => null; |
1704 | 1704 |
1705 @override | 1705 @override |
1706 Iterable<UriResolver> createPackageUriResolvers( | 1706 Iterable<UriResolver> createPackageUriResolvers( |
1707 ResourceProvider resourceProvider) => | 1707 ResourceProvider resourceProvider) => |
1708 <UriResolver>[resolver]; | 1708 <UriResolver>[resolver]; |
1709 | 1709 |
1710 @override | 1710 @override |
1711 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) => | 1711 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) => |
1712 new EmbedderYamlLocator(null); | 1712 new EmbedderYamlLocator(null); |
| 1713 |
| 1714 @override |
| 1715 SdkExtensionFinder getSdkExtensionFinder(ResourceProvider resourceProvider) => |
| 1716 new SdkExtensionFinder(null); |
1713 } | 1717 } |
1714 | 1718 |
1715 /** | 1719 /** |
1716 * An instance of the class [FolderDisposition] represents the information | 1720 * An instance of the class [FolderDisposition] represents the information |
1717 * gathered by the [ContextManagerImpl] to determine how to create an | 1721 * gathered by the [ContextManagerImpl] to determine how to create an |
1718 * [AnalysisContext] for a given folder. | 1722 * [AnalysisContext] for a given folder. |
1719 * | 1723 * |
1720 * Note: [ContextManagerImpl] may use equality testing and hash codes to | 1724 * Note: [ContextManagerImpl] may use equality testing and hash codes to |
1721 * determine when two folders should share the same context, so derived classes | 1725 * determine when two folders should share the same context, so derived classes |
1722 * may need to override operator== and hashCode() if object identity is | 1726 * may need to override operator== and hashCode() if object identity is |
(...skipping 27 matching lines...) Expand all Loading... |
1750 */ | 1754 */ |
1751 Iterable<UriResolver> createPackageUriResolvers( | 1755 Iterable<UriResolver> createPackageUriResolvers( |
1752 ResourceProvider resourceProvider); | 1756 ResourceProvider resourceProvider); |
1753 | 1757 |
1754 /** | 1758 /** |
1755 * Return the locator used to locate the _embedder.yaml file used to configure | 1759 * Return the locator used to locate the _embedder.yaml file used to configure |
1756 * the SDK. The [resourceProvider] is used to access the file system in cases | 1760 * the SDK. The [resourceProvider] is used to access the file system in cases |
1757 * where that is necessary. | 1761 * where that is necessary. |
1758 */ | 1762 */ |
1759 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider); | 1763 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider); |
| 1764 |
| 1765 /** |
| 1766 * Return the extension finder used to locate the `_sdkext` file used to add |
| 1767 * extensions to the SDK. The [resourceProvider] is used to access the file |
| 1768 * system in cases where that is necessary. |
| 1769 */ |
| 1770 SdkExtensionFinder getSdkExtensionFinder(ResourceProvider resourceProvider); |
1760 } | 1771 } |
1761 | 1772 |
1762 /** | 1773 /** |
1763 * Concrete [FolderDisposition] object indicating that the context for a given | 1774 * Concrete [FolderDisposition] object indicating that the context for a given |
1764 * folder should not resolve "package:" URIs at all. | 1775 * folder should not resolve "package:" URIs at all. |
1765 */ | 1776 */ |
1766 class NoPackageFolderDisposition extends FolderDisposition { | 1777 class NoPackageFolderDisposition extends FolderDisposition { |
1767 @override | 1778 @override |
1768 final String packageRoot; | 1779 final String packageRoot; |
1769 | 1780 |
1770 NoPackageFolderDisposition({this.packageRoot}); | 1781 NoPackageFolderDisposition({this.packageRoot}); |
1771 | 1782 |
1772 @override | 1783 @override |
1773 Packages get packages => null; | 1784 Packages get packages => null; |
1774 | 1785 |
1775 @override | 1786 @override |
1776 Iterable<UriResolver> createPackageUriResolvers( | 1787 Iterable<UriResolver> createPackageUriResolvers( |
1777 ResourceProvider resourceProvider) => | 1788 ResourceProvider resourceProvider) => |
1778 const <UriResolver>[]; | 1789 const <UriResolver>[]; |
1779 | 1790 |
1780 @override | 1791 @override |
1781 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) => | 1792 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) => |
1782 new EmbedderYamlLocator(null); | 1793 new EmbedderYamlLocator(null); |
| 1794 |
| 1795 @override |
| 1796 SdkExtensionFinder getSdkExtensionFinder(ResourceProvider resourceProvider) => |
| 1797 new SdkExtensionFinder(null); |
1783 } | 1798 } |
1784 | 1799 |
1785 /** | 1800 /** |
1786 * Concrete [FolderDisposition] object indicating that the context for a given | 1801 * Concrete [FolderDisposition] object indicating that the context for a given |
1787 * folder should resolve packages using a package map. | 1802 * folder should resolve packages using a package map. |
1788 */ | 1803 */ |
1789 class PackageMapDisposition extends FolderDisposition { | 1804 class PackageMapDisposition extends FolderDisposition { |
1790 final Map<String, List<Folder>> packageMap; | 1805 final Map<String, List<Folder>> packageMap; |
1791 | 1806 |
1792 EmbedderYamlLocator _embedderLocator; | 1807 EmbedderYamlLocator _embedderLocator; |
| 1808 SdkExtensionFinder _sdkExtensionFinder; |
1793 | 1809 |
1794 @override | 1810 @override |
1795 final String packageRoot; | 1811 final String packageRoot; |
1796 | 1812 |
1797 PackageMapDisposition(this.packageMap, {this.packageRoot}); | 1813 PackageMapDisposition(this.packageMap, {this.packageRoot}); |
1798 | 1814 |
1799 @override | 1815 @override |
1800 Packages get packages => null; | 1816 Packages get packages => null; |
1801 | 1817 |
1802 @override | 1818 @override |
1803 Iterable<UriResolver> createPackageUriResolvers( | 1819 Iterable<UriResolver> createPackageUriResolvers( |
1804 ResourceProvider resourceProvider) => | 1820 ResourceProvider resourceProvider) => |
1805 <UriResolver>[ | 1821 <UriResolver>[ |
1806 new SdkExtUriResolver(packageMap), | 1822 new SdkExtUriResolver(packageMap), |
1807 new PackageMapUriResolver(resourceProvider, packageMap) | 1823 new PackageMapUriResolver(resourceProvider, packageMap) |
1808 ]; | 1824 ]; |
1809 | 1825 |
1810 @override | 1826 @override |
1811 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) { | 1827 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) { |
1812 if (_embedderLocator == null) { | 1828 if (_embedderLocator == null) { |
1813 _embedderLocator = new EmbedderYamlLocator(packageMap); | 1829 _embedderLocator = new EmbedderYamlLocator(packageMap); |
1814 } | 1830 } |
1815 return _embedderLocator; | 1831 return _embedderLocator; |
1816 } | 1832 } |
| 1833 |
| 1834 @override |
| 1835 SdkExtensionFinder getSdkExtensionFinder(ResourceProvider resourceProvider) { |
| 1836 return _sdkExtensionFinder ??= new SdkExtensionFinder(packageMap); |
| 1837 } |
1817 } | 1838 } |
1818 | 1839 |
1819 /** | 1840 /** |
1820 * Concrete [FolderDisposition] object indicating that the context for a given | 1841 * Concrete [FolderDisposition] object indicating that the context for a given |
1821 * folder should resolve packages using a ".packages" file. | 1842 * folder should resolve packages using a ".packages" file. |
1822 */ | 1843 */ |
1823 class PackagesFileDisposition extends FolderDisposition { | 1844 class PackagesFileDisposition extends FolderDisposition { |
1824 @override | 1845 @override |
1825 final Packages packages; | 1846 final Packages packages; |
1826 | 1847 |
1827 Map<String, List<Folder>> packageMap; | 1848 Map<String, List<Folder>> packageMap; |
1828 | 1849 |
1829 EmbedderYamlLocator _embedderLocator; | 1850 EmbedderYamlLocator _embedderLocator; |
| 1851 SdkExtensionFinder _sdkExtensionFinder; |
1830 | 1852 |
1831 PackagesFileDisposition(this.packages); | 1853 PackagesFileDisposition(this.packages); |
1832 | 1854 |
1833 @override | 1855 @override |
1834 String get packageRoot => null; | 1856 String get packageRoot => null; |
1835 | 1857 |
1836 Map<String, List<Folder>> buildPackageMap(ResourceProvider resourceProvider) { | 1858 Map<String, List<Folder>> buildPackageMap(ResourceProvider resourceProvider) { |
1837 if (packageMap == null) { | 1859 if (packageMap == null) { |
1838 packageMap = <String, List<Folder>>{}; | 1860 packageMap = <String, List<Folder>>{}; |
1839 if (packages != null) { | 1861 if (packages != null) { |
(...skipping 21 matching lines...) Expand all Loading... |
1861 } | 1883 } |
1862 | 1884 |
1863 @override | 1885 @override |
1864 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) { | 1886 EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) { |
1865 if (_embedderLocator == null) { | 1887 if (_embedderLocator == null) { |
1866 _embedderLocator = | 1888 _embedderLocator = |
1867 new EmbedderYamlLocator(buildPackageMap(resourceProvider)); | 1889 new EmbedderYamlLocator(buildPackageMap(resourceProvider)); |
1868 } | 1890 } |
1869 return _embedderLocator; | 1891 return _embedderLocator; |
1870 } | 1892 } |
| 1893 |
| 1894 @override |
| 1895 SdkExtensionFinder getSdkExtensionFinder(ResourceProvider resourceProvider) { |
| 1896 return _sdkExtensionFinder ??= |
| 1897 new SdkExtensionFinder(buildPackageMap(resourceProvider)); |
| 1898 } |
1871 } | 1899 } |
OLD | NEW |