mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 01:05:45 +00:00
Bug 1101584 - sContentUtils::GetUTFOrigin should check if the URI has the nsIURIWithPrincipal interface, r=bz
This commit is contained in:
parent
970fc0e8a3
commit
1b30cdcc5c
@ -239,17 +239,6 @@ URL::SetHref(const nsAString& aHref, ErrorResult& aRv)
|
||||
void
|
||||
URL::GetOrigin(nsString& aOrigin, ErrorResult& aRv) const
|
||||
{
|
||||
nsCOMPtr<nsIURIWithPrincipal> uriWithPrincipal = do_QueryInterface(mURI);
|
||||
if (uriWithPrincipal) {
|
||||
nsCOMPtr<nsIPrincipal> principal;
|
||||
uriWithPrincipal->GetPrincipal(getter_AddRefs(principal));
|
||||
|
||||
if (principal) {
|
||||
nsContentUtils::GetUTFOrigin(principal, aOrigin);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
nsContentUtils::GetUTFOrigin(mURI, aOrigin);
|
||||
}
|
||||
|
||||
|
@ -5751,6 +5751,20 @@ nsContentUtils::GetASCIIOrigin(nsIURI* aURI, nsCString& aOrigin)
|
||||
{
|
||||
NS_PRECONDITION(aURI, "missing uri");
|
||||
|
||||
nsCOMPtr<nsIURIWithPrincipal> uriWithPrincipal = do_QueryInterface(aURI);
|
||||
if (uriWithPrincipal) {
|
||||
nsCOMPtr<nsIPrincipal> principal;
|
||||
uriWithPrincipal->GetPrincipal(getter_AddRefs(principal));
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsresult rv = principal->GetURI(getter_AddRefs(uri));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (uri != aURI) {
|
||||
return GetASCIIOrigin(uri, aOrigin);
|
||||
}
|
||||
}
|
||||
|
||||
aOrigin.Truncate();
|
||||
|
||||
nsCOMPtr<nsIURI> uri = NS_GetInnermostURI(aURI);
|
||||
@ -5809,6 +5823,20 @@ nsContentUtils::GetUTFOrigin(nsIURI* aURI, nsString& aOrigin)
|
||||
{
|
||||
NS_PRECONDITION(aURI, "missing uri");
|
||||
|
||||
nsCOMPtr<nsIURIWithPrincipal> uriWithPrincipal = do_QueryInterface(aURI);
|
||||
if (uriWithPrincipal) {
|
||||
nsCOMPtr<nsIPrincipal> principal;
|
||||
uriWithPrincipal->GetPrincipal(getter_AddRefs(principal));
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsresult rv = principal->GetURI(getter_AddRefs(uri));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (uri != aURI) {
|
||||
return GetUTFOrigin(uri, aOrigin);
|
||||
}
|
||||
}
|
||||
|
||||
aOrigin.Truncate();
|
||||
|
||||
nsCOMPtr<nsIURI> uri = NS_GetInnermostURI(aURI);
|
||||
|
@ -327,5 +327,14 @@
|
||||
var u = new URL(url);
|
||||
ok(u.origin, 'http://mochi.test:8888', "The URL generated from a blob URI has an origin");
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var blob = new Blob(['a']);
|
||||
var url = URL.createObjectURL(blob);
|
||||
|
||||
var a = document.createElement('A');
|
||||
a.href = url;
|
||||
ok(a.origin, 'http://mochi.test:8888', "The 'a' element has the correct origin");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue
Block a user