зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1448328 - Implement getOrigin for blobURL without nsIURIWithPrincipal, r=smaug
This commit is contained in:
Родитель
48bf20fde9
Коммит
c30c0c3678
|
@ -6426,41 +6426,24 @@ nsContentUtils::GetUTFOrigin(nsIURI* aURI, nsAString& aOrigin)
|
|||
{
|
||||
NS_PRECONDITION(aURI, "missing uri");
|
||||
|
||||
// For Blob URI we have to return the origin of page using its principal.
|
||||
nsCOMPtr<nsIURIWithPrincipal> uriWithPrincipal = do_QueryInterface(aURI);
|
||||
if (uriWithPrincipal) {
|
||||
nsCOMPtr<nsIPrincipal> principal;
|
||||
uriWithPrincipal->GetPrincipal(getter_AddRefs(principal));
|
||||
bool isBlobURL = false;
|
||||
nsresult rv = aURI->SchemeIs(BLOBURI_SCHEME, &isBlobURL);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (principal) {
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsresult rv = principal->GetURI(getter_AddRefs(uri));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
// For Blob URI, the path is the URL of the owning page.
|
||||
if (isBlobURL) {
|
||||
nsAutoCString path;
|
||||
rv = aURI->GetPathQueryRef(path);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (uri && uri != aURI) {
|
||||
return GetUTFOrigin(uri, aOrigin);
|
||||
}
|
||||
} else {
|
||||
// We are probably dealing with an unknown blob URL.
|
||||
bool isBlobURL = false;
|
||||
nsresult rv = aURI->SchemeIs(BLOBURI_SCHEME, &isBlobURL);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (isBlobURL) {
|
||||
nsAutoCString path;
|
||||
rv = aURI->GetPathQueryRef(path);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsresult rv = NS_NewURI(getter_AddRefs(uri), path);
|
||||
if (NS_FAILED(rv)) {
|
||||
aOrigin.AssignLiteral("null");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return GetUTFOrigin(uri, aOrigin);
|
||||
}
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsresult rv = NS_NewURI(getter_AddRefs(uri), path);
|
||||
if (NS_FAILED(rv)) {
|
||||
aOrigin.AssignLiteral("null");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return GetUTFOrigin(uri, aOrigin);
|
||||
}
|
||||
|
||||
aOrigin.Truncate();
|
||||
|
@ -6469,7 +6452,7 @@ nsContentUtils::GetUTFOrigin(nsIURI* aURI, nsAString& aOrigin)
|
|||
NS_ENSURE_TRUE(uri, NS_ERROR_UNEXPECTED);
|
||||
|
||||
nsCString host;
|
||||
nsresult rv = uri->GetHost(host);
|
||||
rv = uri->GetHost(host);
|
||||
|
||||
if (NS_SUCCEEDED(rv) && !host.IsEmpty()) {
|
||||
nsCString scheme;
|
||||
|
|
Загрузка…
Ссылка в новой задаче