Bug 699857 - 'Workers: Allow data urls'. r=sicking.

This commit is contained in:
Ben Turner
2011-11-04 10:57:42 -07:00
parent 5f116b45c4
commit 0bb184ac55
4 changed files with 61 additions and 7 deletions

View File

@@ -329,10 +329,21 @@ public:
// If this script loader is being used to make a new worker then we need
// to do a same-origin check. Otherwise we need to clear the load with the
// security manager.
rv = mIsWorkerScript ?
principal->CheckMayLoad(uri, false):
secMan->CheckLoadURIWithPrincipal(principal, uri, 0);
NS_ENSURE_SUCCESS(rv, rv);
if (mIsWorkerScript) {
nsCString scheme;
rv = uri->GetScheme(scheme);
NS_ENSURE_SUCCESS(rv, rv);
// We exempt data URLs from the same origin check.
if (!scheme.EqualsLiteral("data")) {
rv = principal->CheckMayLoad(uri, false);
NS_ENSURE_SUCCESS(rv, rv);
}
}
else {
rv = secMan->CheckLoadURIWithPrincipal(principal, uri, 0);
NS_ENSURE_SUCCESS(rv, rv);
}
// We need to know which index we're on in OnStreamComplete so we know
// where to put the result.
@@ -505,8 +516,16 @@ public:
return NS_ERROR_DOM_BAD_URI;
}
}
else if (NS_FAILED(loadPrincipal->CheckMayLoad(finalURI, false))) {
return NS_ERROR_DOM_BAD_URI;
else {
nsCString scheme;
rv = finalURI->GetScheme(scheme);
NS_ENSURE_SUCCESS(rv, rv);
// We exempt data urls again.
if (!scheme.EqualsLiteral("data") &&
NS_FAILED(loadPrincipal->CheckMayLoad(finalURI, false))) {
return NS_ERROR_DOM_BAD_URI;
}
}
mWorkerPrivate->SetPrincipal(channelPrincipal);