mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1165162 - Rework the nsIScriptSecurityManager principal-minting API to be originAttributes-centric. r=gabor,r=bholley,sr=sicking (269536132) - pointer style and mispatch (38b32b3bc) - more misspatch & pointer style (ff2bc3057) - Bug 1164014 - Fixing defaultShims. r=billm (bcf7f671a) - Bug 1164014 - Workaround for GC bug 1172193. r=gkrizsanits (b25cf4dea) - Bug 1158427 - r=roc (64037cb2c) - Bug 1157994 - Ensure AudioContext operations are started and resolved in the same order. r=roc (757de0f81) - Bug 1127188 - Properly handle AudioContext.close() calls right after the creation of an AudioContext. r=ehsan (88362873f) - Bug 1164011 - interposition for CPOWS. r=billm (24a8134f6) - Bug 1164014 - Shim optimization. r=billm (9a8498684) - Bug 1178581 - Interning does not and should not imply infinite lifetime; r=sfink (91dfc5b77) - Bug 1171053 - Remove JS_BindCallable. r=efaust (2e59b8c62) - Bug 1174372 - Initialize ExecutableAllocator static fields in JS_Init. r=luke (d02620196) - missing uid of 968334 (3c73a17db) - missing uuid of 1152577 (13d58364c) - add missing uuid of 1050500 (16c61b629) - Bug 110567 - Remove nsIDocShell::GetURLSearchParams(), r=smaug (5018a0936) - Bug 1132518, add a flag to nsIFrameTraversal to skip the popup checks, r=mats (8482fd8fd) - Bug 1132518, make document navigation with F6/Shift+F6 work in e10s. This combines the document and tab navigation mechanisms together, r=smaug (2085e999b) - Bug 1160307 - Capture async stack frames on Javascript timeline markers. r=fitzgen, r=smaug, r=Paolo (95c3e6b95)
This commit is contained in:
+39
-3
@@ -8,6 +8,10 @@
|
||||
|
||||
#include "nsIObjectInputStream.h"
|
||||
#include "nsIObjectOutputStream.h"
|
||||
|
||||
#include "nsPrincipal.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsNullPrincipal.h"
|
||||
#include "nsScriptSecurityManager.h"
|
||||
|
||||
#include "mozilla/dom/ToJSValue.h"
|
||||
@@ -15,7 +19,7 @@
|
||||
namespace mozilla {
|
||||
|
||||
void
|
||||
BasePrincipal::OriginAttributes::CreateSuffix(nsACString& aStr)
|
||||
OriginAttributes::CreateSuffix(nsACString& aStr)
|
||||
{
|
||||
aStr.Truncate();
|
||||
MOZ_RELEASE_ASSERT(mAppId != nsIScriptSecurityManager::UNKNOWN_APP_ID);
|
||||
@@ -32,14 +36,14 @@ BasePrincipal::OriginAttributes::CreateSuffix(nsACString& aStr)
|
||||
}
|
||||
|
||||
void
|
||||
BasePrincipal::OriginAttributes::Serialize(nsIObjectOutputStream* aStream) const
|
||||
OriginAttributes::Serialize(nsIObjectOutputStream* aStream) const
|
||||
{
|
||||
aStream->Write32(mAppId);
|
||||
aStream->WriteBoolean(mInBrowser);
|
||||
}
|
||||
|
||||
nsresult
|
||||
BasePrincipal::OriginAttributes::Deserialize(nsIObjectInputStream* aStream)
|
||||
OriginAttributes::Deserialize(nsIObjectInputStream* aStream)
|
||||
{
|
||||
nsresult rv = aStream->Read32(&mAppId);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
@@ -179,4 +183,36 @@ BasePrincipal::GetUnknownAppId(bool* aUnknownAppId)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
already_AddRefed<BasePrincipal>
|
||||
BasePrincipal::CreateCodebasePrincipal(nsIURI* aURI, OriginAttributes& aAttrs)
|
||||
{
|
||||
// If the URI is supposed to inherit the security context of whoever loads it,
|
||||
// we shouldn't make a codebase principal for it.
|
||||
bool inheritsPrincipal;
|
||||
nsresult rv = NS_URIChainHasFlags(aURI, nsIProtocolHandler::URI_INHERITS_SECURITY_CONTEXT,
|
||||
&inheritsPrincipal);
|
||||
nsCOMPtr<nsIPrincipal> principal;
|
||||
if (NS_FAILED(rv) || inheritsPrincipal) {
|
||||
return nsNullPrincipal::Create();
|
||||
}
|
||||
|
||||
// Check whether the URI knows what its principal is supposed to be.
|
||||
nsCOMPtr<nsIURIWithPrincipal> uriPrinc = do_QueryInterface(aURI);
|
||||
if (uriPrinc) {
|
||||
nsCOMPtr<nsIPrincipal> principal;
|
||||
uriPrinc->GetPrincipal(getter_AddRefs(principal));
|
||||
if (!principal) {
|
||||
return nsNullPrincipal::Create();
|
||||
}
|
||||
nsRefPtr<BasePrincipal> concrete = Cast(principal);
|
||||
return concrete.forget();
|
||||
}
|
||||
|
||||
// Mint a codebase principal.
|
||||
nsRefPtr<nsPrincipal> codebase = new nsPrincipal();
|
||||
rv = codebase->Init(aURI, aAttrs);
|
||||
NS_ENSURE_SUCCESS(rv, nullptr);
|
||||
return codebase.forget();
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
Reference in New Issue
Block a user