Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Unified Diff: pkg/front_end/lib/src/base/uri_resolver.dart

Issue 2614063007: Use URIs rather than paths in front end API. (Closed)
Patch Set: Run dartfmt Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/front_end/lib/src/base/uri_resolver.dart
diff --git a/pkg/front_end/lib/src/base/uri_resolver.dart b/pkg/front_end/lib/src/base/uri_resolver.dart
index db469f0003df510d13a843e5714d15aa220f65be..0c6a4209743afe02849f32f3ca51c2a0948c90ae 100644
--- a/pkg/front_end/lib/src/base/uri_resolver.dart
+++ b/pkg/front_end/lib/src/base/uri_resolver.dart
@@ -2,13 +2,15 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:path/path.dart' as p;
-
-/// The class `UriResolver` implements the rules for resolving URIs to file
-/// paths.
-///
-/// TODO(paulberry): Is it necessary to support the "http" scheme?
+/// The class `UriResolver` implements the rules for resolving "dart:" and
+/// "package:" URIs.
class UriResolver {
+ /// The URI scheme used for "package" URIs.
+ static const PACKAGE_SCHEME = 'package';
+
+ /// The URI scheme used for "dart" URIs.
+ static const DART_SCHEME = 'dart';
+
/// A map from package name to the file URI of the "lib" directory of the
/// corresponding package. This is equivalent to the format returned by
/// the "package_config" package's parse() function.
@@ -18,36 +20,27 @@ class UriResolver {
/// of the defining compilation unit of the SDK library.
final Map<String, Uri> sdkLibraries;
- /// The path context which should be used to convert from file URIs to file
- /// paths.
- final p.Context pathContext;
-
- /// The URI scheme used for "package" URIs.
- static const PACKAGE_SCHEME = 'package';
+ UriResolver(this.packages, this.sdkLibraries);
- /// The URI scheme used for "dart" URIs.
- static const DART_SCHEME = 'dart';
-
- /// The URI scheme used for "file" URIs.
- static const FILE_SCHEME = 'file';
-
- UriResolver(this.packages, this.sdkLibraries, this.pathContext);
-
- /// Converts a URI to a file path.
+ /// Converts "package:" and "dart:" URIs to the locations of the corresponding
+ /// files.
///
- /// If the given URI is valid, and of a recognized form, returns the file path
- /// it corresponds to. Otherwise returns `null`. It is not necessary for the
- /// URI to be absolute (relative URIs will be converted to relative file
- /// paths).
+ /// If the given URI is a "package:" or "dart:" URI, is well formed, and names
+ /// a package or dart library that is recognized, returns the URI it resolves
+ /// to. If the given URI is a "package:" or "dart:" URI, and is ill-formed
+ /// or names a package or dart library that is not recognized, returns `null`.
///
- /// Note that no I/O is performed; the file path that is returned will be
+ /// If the given URI has any scheme other than "package:" or "dart:", it is
+ /// returned unchanged.
+ ///
+ /// It is not necessary for the URI to be absolute (relative URIs will be
+ /// passed through unchanged).
+ ///
+ /// Note that no I/O is performed; the URI that is returned will be
/// independent of whether or not any particular file exists on the file
/// system.
- String resolve(Uri uri) {
- Uri fileUri;
- if (uri.scheme == FILE_SCHEME) {
- fileUri = uri;
- } else {
+ Uri resolve(Uri uri) {
+ if (uri.scheme == DART_SCHEME || uri.scheme == PACKAGE_SCHEME) {
var path = uri.path;
var slashIndex = path.indexOf('/');
String prefix;
@@ -67,9 +60,9 @@ class UriResolver {
libUri = sdkLibraries[prefix];
}
if (libUri == null) return null;
- fileUri = libUri.resolve(rest);
- if (fileUri.scheme != FILE_SCHEME) return null;
+ return libUri.resolve(rest);
+ } else {
+ return uri;
}
- return pathContext.fromUri(fileUri);
}
}

Powered by Google App Engine
This is Rietveld 408576698