mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 20:51:19 +00:00
Change Dart_DefaultCanonicalizeUrl to accept the library url string instead of a library, this is useful to allow us to use this to generically resolve a Uri relative to another string.
BUG= R=johnmccutchan@google.com Review URL: https://codereview.chromium.org/2068833002 .
This commit is contained in:
parent
e1d39e28cf
commit
72f7d1456c
|
@ -408,11 +408,12 @@ static Dart_Handle LoadDataAsync_Invoke(Dart_Handle tag,
|
|||
Dart_Handle DartUtils::LibraryTagHandler(Dart_LibraryTag tag,
|
||||
Dart_Handle library,
|
||||
Dart_Handle url) {
|
||||
if (tag == Dart_kCanonicalizeUrl) {
|
||||
return Dart_DefaultCanonicalizeUrl(library, url);
|
||||
Dart_Handle library_url = Dart_LibraryUrl(library);
|
||||
if (Dart_IsError(library_url)) {
|
||||
return library_url;
|
||||
}
|
||||
if (!Dart_IsLibrary(library)) {
|
||||
return Dart_NewApiError("not a library");
|
||||
if (tag == Dart_kCanonicalizeUrl) {
|
||||
return Dart_DefaultCanonicalizeUrl(library_url, url);
|
||||
}
|
||||
if (!Dart_IsString(url)) {
|
||||
return Dart_NewApiError("url is not a string");
|
||||
|
@ -422,7 +423,6 @@ Dart_Handle DartUtils::LibraryTagHandler(Dart_LibraryTag tag,
|
|||
if (Dart_IsError(result)) {
|
||||
return result;
|
||||
}
|
||||
Dart_Handle library_url = Dart_LibraryUrl(library);
|
||||
const char* library_url_string = NULL;
|
||||
result = Dart_StringToCString(library_url, &library_url_string);
|
||||
if (Dart_IsError(result)) {
|
||||
|
|
|
@ -362,7 +362,11 @@ Dart_Handle Loader::LibraryTagHandler(Dart_LibraryTag tag,
|
|||
Dart_Handle library,
|
||||
Dart_Handle url) {
|
||||
if (tag == Dart_kCanonicalizeUrl) {
|
||||
return Dart_DefaultCanonicalizeUrl(library, url);
|
||||
Dart_Handle library_url = Dart_LibraryUrl(library);
|
||||
if (Dart_IsError(library_url)) {
|
||||
return library_url;
|
||||
}
|
||||
return Dart_DefaultCanonicalizeUrl(library_url, url);
|
||||
}
|
||||
const char* url_string = NULL;
|
||||
Dart_Handle result = Dart_StringToCString(url, &url_string);
|
||||
|
@ -374,6 +378,9 @@ Dart_Handle Loader::LibraryTagHandler(Dart_LibraryTag tag,
|
|||
if (tag != Dart_kScriptTag) {
|
||||
// Grab the library's url.
|
||||
Dart_Handle library_url = Dart_LibraryUrl(library);
|
||||
if (Dart_IsError(library_url)) {
|
||||
return library_url;
|
||||
}
|
||||
const char* library_url_string = NULL;
|
||||
result = Dart_StringToCString(library_url, &library_url_string);
|
||||
if (Dart_IsError(result)) {
|
||||
|
@ -399,6 +406,9 @@ Dart_Handle Loader::LibraryTagHandler(Dart_LibraryTag tag,
|
|||
url_string);
|
||||
}
|
||||
Dart_Handle library_url = Dart_LibraryUrl(library);
|
||||
if (Dart_IsError(library_url)) {
|
||||
return library_url;
|
||||
}
|
||||
Dart_Handle library_file_path = DartUtils::LibraryFilePath(library_url);
|
||||
const char* lib_path_str = NULL;
|
||||
Dart_StringToCString(library_file_path, &lib_path_str);
|
||||
|
|
|
@ -2692,15 +2692,15 @@ DART_EXPORT Dart_Handle Dart_SetLibraryTagHandler(
|
|||
* This canonicalization function should be sufficient for most
|
||||
* embedders to implement the Dart_kCanonicalizeUrl tag.
|
||||
*
|
||||
* \param library The library relative to which the url is being
|
||||
* resolved.
|
||||
* \param base_url The base url relative to which the url is
|
||||
* being resolved.
|
||||
* \param url The url being resolved and canonicalized. This
|
||||
* parameter is a string handle.
|
||||
*
|
||||
* \return If no error occurs, a String object is returned. Otherwise
|
||||
* an error handle is returned.
|
||||
*/
|
||||
DART_EXPORT Dart_Handle Dart_DefaultCanonicalizeUrl(Dart_Handle library,
|
||||
DART_EXPORT Dart_Handle Dart_DefaultCanonicalizeUrl(Dart_Handle base_url,
|
||||
Dart_Handle url);
|
||||
|
||||
/**
|
||||
|
|
|
@ -5171,24 +5171,23 @@ DART_EXPORT Dart_Handle Dart_SetLibraryTagHandler(
|
|||
}
|
||||
|
||||
|
||||
DART_EXPORT Dart_Handle Dart_DefaultCanonicalizeUrl(Dart_Handle library,
|
||||
DART_EXPORT Dart_Handle Dart_DefaultCanonicalizeUrl(Dart_Handle base_url,
|
||||
Dart_Handle url) {
|
||||
API_TIMELINE_DURATION;
|
||||
DARTSCOPE(Thread::Current());
|
||||
CHECK_CALLBACK_STATE(T);
|
||||
|
||||
const Library& lib = Api::UnwrapLibraryHandle(Z, library);
|
||||
if (lib.IsNull()) {
|
||||
RETURN_TYPE_ERROR(Z, library, Library);
|
||||
const String& base_uri = Api::UnwrapStringHandle(Z, base_url);
|
||||
if (base_uri.IsNull()) {
|
||||
RETURN_TYPE_ERROR(Z, base_url, String);
|
||||
}
|
||||
const String& uri = Api::UnwrapStringHandle(Z, url);
|
||||
if (uri.IsNull()) {
|
||||
RETURN_TYPE_ERROR(Z, url, String);
|
||||
}
|
||||
|
||||
const String& lib_uri = String::Handle(Z, lib.url());
|
||||
const char* resolved_uri;
|
||||
if (!ResolveUri(uri.ToCString(), lib_uri.ToCString(), &resolved_uri)) {
|
||||
if (!ResolveUri(uri.ToCString(), base_uri.ToCString(), &resolved_uri)) {
|
||||
return Api::NewError("%s: Unable to canonicalize uri '%s'.",
|
||||
CURRENT_FUNC, uri.ToCString());
|
||||
}
|
||||
|
|
|
@ -140,7 +140,11 @@ static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag,
|
|||
Dart_Handle library,
|
||||
Dart_Handle url) {
|
||||
if (tag == Dart_kCanonicalizeUrl) {
|
||||
return Dart_DefaultCanonicalizeUrl(library, url);
|
||||
Dart_Handle library_url = Dart_LibraryUrl(library);
|
||||
if (Dart_IsError(library_url)) {
|
||||
return library_url;
|
||||
}
|
||||
return Dart_DefaultCanonicalizeUrl(library_url, url);
|
||||
}
|
||||
if (tag == Dart_kScriptTag) {
|
||||
// Reload request.
|
||||
|
|
Loading…
Reference in a new issue