mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1175685 - add OriginAttribute to LoadInfo. r=jonas, r=ckerschb, r=michal
This commit is contained in:
parent
d50532b568
commit
8b800510c1
@ -242,6 +242,7 @@ LoadInfoToLoadInfoArgs(nsILoadInfo *aLoadInfo,
|
||||
aLoadInfo->GetParentOuterWindowID(),
|
||||
aLoadInfo->GetEnforceSecurity(),
|
||||
aLoadInfo->GetInitialSecurityCheckDone(),
|
||||
aLoadInfo->GetOriginAttributes(),
|
||||
redirectChain);
|
||||
|
||||
return NS_OK;
|
||||
@ -286,6 +287,7 @@ LoadInfoArgsToLoadInfo(const OptionalLoadInfoArgs& aOptionalLoadInfoArgs,
|
||||
loadInfoArgs.parentOuterWindowID(),
|
||||
loadInfoArgs.enforceSecurity(),
|
||||
loadInfoArgs.initialSecurityCheckDone(),
|
||||
loadInfoArgs.originAttributes(),
|
||||
redirectChain);
|
||||
|
||||
loadInfo.forget(outLoadInfo);
|
||||
|
@ -81,6 +81,8 @@ LoadInfo::LoadInfo(nsIPrincipal* aLoadingPrincipal,
|
||||
|
||||
mUpgradeInsecureRequests = aLoadingContext->OwnerDoc()->GetUpgradeInsecureRequests();
|
||||
}
|
||||
|
||||
mOriginAttributes = BasePrincipal::Cast(mLoadingPrincipal)->OriginAttributesRef();
|
||||
}
|
||||
|
||||
LoadInfo::LoadInfo(const LoadInfo& rhs)
|
||||
@ -108,6 +110,7 @@ LoadInfo::LoadInfo(nsIPrincipal* aLoadingPrincipal,
|
||||
uint64_t aParentOuterWindowID,
|
||||
bool aEnforceSecurity,
|
||||
bool aInitialSecurityCheckDone,
|
||||
const OriginAttributes& aOriginAttributes,
|
||||
nsTArray<nsCOMPtr<nsIPrincipal>>& aRedirectChain)
|
||||
: mLoadingPrincipal(aLoadingPrincipal)
|
||||
, mTriggeringPrincipal(aTriggeringPrincipal)
|
||||
@ -119,6 +122,7 @@ LoadInfo::LoadInfo(nsIPrincipal* aLoadingPrincipal,
|
||||
, mParentOuterWindowID(aParentOuterWindowID)
|
||||
, mEnforceSecurity(aEnforceSecurity)
|
||||
, mInitialSecurityCheckDone(aInitialSecurityCheckDone)
|
||||
, mOriginAttributes(aOriginAttributes)
|
||||
{
|
||||
MOZ_ASSERT(mLoadingPrincipal);
|
||||
MOZ_ASSERT(mTriggeringPrincipal);
|
||||
@ -290,6 +294,44 @@ LoadInfo::GetParentOuterWindowID(uint64_t* aResult)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
LoadInfo::GetScriptableOriginAttributes(JSContext* aCx,
|
||||
JS::MutableHandle<JS::Value> aOriginAttributes)
|
||||
{
|
||||
if (NS_WARN_IF(!ToJSValue(aCx, mOriginAttributes, aOriginAttributes))) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
LoadInfo::SetScriptableOriginAttributes(JSContext* aCx,
|
||||
JS::Handle<JS::Value> aOriginAttributes)
|
||||
{
|
||||
OriginAttributes attrs;
|
||||
if (!aOriginAttributes.isObject() || !attrs.Init(aCx, aOriginAttributes)) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
mOriginAttributes = attrs;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
LoadInfo::GetOriginAttributes(mozilla::OriginAttributes* aOriginAttributes)
|
||||
{
|
||||
NS_ENSURE_ARG(aOriginAttributes);
|
||||
*aOriginAttributes = mOriginAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
LoadInfo::SetOriginAttributes(const mozilla::OriginAttributes& aOriginAttributes)
|
||||
{
|
||||
mOriginAttributes = aOriginAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
LoadInfo::SetEnforceSecurity(bool aEnforceSecurity)
|
||||
{
|
||||
|
@ -14,6 +14,8 @@
|
||||
#include "nsIURI.h"
|
||||
#include "nsTArray.h"
|
||||
|
||||
#include "mozilla/BasePrincipal.h"
|
||||
|
||||
class nsINode;
|
||||
class nsXMLHttpRequest;
|
||||
|
||||
@ -68,6 +70,7 @@ private:
|
||||
uint64_t aParentOuterWindowID,
|
||||
bool aEnforceSecurity,
|
||||
bool aInitialSecurityCheckDone,
|
||||
const OriginAttributes& aOriginAttributes,
|
||||
nsTArray<nsCOMPtr<nsIPrincipal>>& aRedirectChain);
|
||||
LoadInfo(const LoadInfo& rhs);
|
||||
|
||||
@ -95,6 +98,7 @@ private:
|
||||
uint64_t mParentOuterWindowID;
|
||||
bool mEnforceSecurity;
|
||||
bool mInitialSecurityCheckDone;
|
||||
OriginAttributes mOriginAttributes;
|
||||
nsTArray<nsCOMPtr<nsIPrincipal>> mRedirectChain;
|
||||
};
|
||||
|
||||
|
@ -13,16 +13,19 @@ interface nsIPrincipal;
|
||||
|
||||
%{C++
|
||||
#include "nsTArray.h"
|
||||
#include "mozilla/BasePrincipal.h"
|
||||
%}
|
||||
|
||||
[ref] native const_nsIPrincipalArray(const nsTArray<nsCOMPtr<nsIPrincipal>>);
|
||||
native OriginAttributes(mozilla::OriginAttributes);
|
||||
[ref] native const_OriginAttributesRef(const mozilla::OriginAttributes);
|
||||
|
||||
typedef unsigned long nsSecurityFlags;
|
||||
|
||||
/**
|
||||
* An nsILoadOwner represents per-load information about who started the load.
|
||||
*/
|
||||
[scriptable, builtinclass, uuid(c6dacd0c-7faf-4943-811f-03583591bc85)]
|
||||
[scriptable, builtinclass, uuid(51313616-163f-4be1-aba0-e3d471b7f7a2)]
|
||||
interface nsILoadInfo : nsISupports
|
||||
{
|
||||
/**
|
||||
@ -343,6 +346,29 @@ interface nsILoadInfo : nsISupports
|
||||
}
|
||||
%}
|
||||
|
||||
/**
|
||||
* Customized OriginAttributes within LoadInfo to allow overwriting of the
|
||||
* default originAttributes from the loadingPrincipal.
|
||||
*/
|
||||
[implicit_jscontext, binaryname(ScriptableOriginAttributes)]
|
||||
attribute jsval originAttributes;
|
||||
|
||||
[noscript, nostdcall, binaryname(GetOriginAttributes)]
|
||||
OriginAttributes binaryGetOriginAttributes();
|
||||
|
||||
[noscript, nostdcall, binaryname(SetOriginAttributes)]
|
||||
void binarySetOriginAttributes(in const_OriginAttributesRef aOriginAttrs);
|
||||
|
||||
%{ C++
|
||||
inline mozilla::OriginAttributes GetOriginAttributes()
|
||||
{
|
||||
mozilla::OriginAttributes result;
|
||||
mozilla::DebugOnly<nsresult> rv = GetOriginAttributes(&result);
|
||||
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
||||
return result;
|
||||
}
|
||||
%}
|
||||
|
||||
/**
|
||||
* Whenever a channel is openend by asyncOpen2() [or also open2()],
|
||||
* lets set this flag so that redirects of such channels are also
|
||||
|
@ -26,17 +26,18 @@ namespace net {
|
||||
|
||||
struct LoadInfoArgs
|
||||
{
|
||||
PrincipalInfo requestingPrincipalInfo;
|
||||
PrincipalInfo triggeringPrincipalInfo;
|
||||
uint32_t securityFlags;
|
||||
uint32_t contentPolicyType;
|
||||
bool upgradeInsecureRequests;
|
||||
uint64_t innerWindowID;
|
||||
uint64_t outerWindowID;
|
||||
uint64_t parentOuterWindowID;
|
||||
bool enforceSecurity;
|
||||
bool initialSecurityCheckDone;
|
||||
PrincipalInfo[] redirectChain;
|
||||
PrincipalInfo requestingPrincipalInfo;
|
||||
PrincipalInfo triggeringPrincipalInfo;
|
||||
uint32_t securityFlags;
|
||||
uint32_t contentPolicyType;
|
||||
bool upgradeInsecureRequests;
|
||||
uint64_t innerWindowID;
|
||||
uint64_t outerWindowID;
|
||||
uint64_t parentOuterWindowID;
|
||||
bool enforceSecurity;
|
||||
bool initialSecurityCheckDone;
|
||||
OriginAttributes originAttributes;
|
||||
PrincipalInfo[] redirectChain;
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user