mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 22:05:44 +00:00
Bug 1294199: Part 1 - Add a docShell flag to allow legacy panels to skip inheriting origin attributes. r=ehsan
MozReview-Commit-ID: 1c6V0kv9E38 --HG-- extra : rebase_source : 9a9ab21a41a8a235378ff7a21dccbf9de37a5499
This commit is contained in:
parent
8805e85679
commit
afd82f6743
@ -794,6 +794,7 @@ nsDocShell::nsDocShell()
|
||||
, mDeviceSizeIsPageSize(false)
|
||||
, mWindowDraggingAllowed(false)
|
||||
, mInFrameSwap(false)
|
||||
, mInheritPrivateBrowsingId(true)
|
||||
, mCanExecuteScripts(false)
|
||||
, mFiredUnloadEvent(false)
|
||||
, mEODForCurrentDocument(false)
|
||||
@ -2487,6 +2488,20 @@ nsDocShell::SetAllowContentRetargetingOnChildren(
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDocShell::GetInheritPrivateBrowsingId(bool* aInheritPrivateBrowsingId)
|
||||
{
|
||||
*aInheritPrivateBrowsingId = mPrivateBrowsingId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDocShell::SetInheritPrivateBrowsingId(bool aInheritPrivateBrowsingId)
|
||||
{
|
||||
mInheritPrivateBrowsingId = aInheritPrivateBrowsingId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDocShell::GetFullscreenAllowed(bool* aFullscreenAllowed)
|
||||
{
|
||||
@ -3319,6 +3334,9 @@ nsresult
|
||||
nsDocShell::SetDocLoaderParent(nsDocLoader* aParent)
|
||||
{
|
||||
bool wasFrame = IsFrame();
|
||||
#ifdef DEBUG
|
||||
bool wasPrivate = UsePrivateBrowsing();
|
||||
#endif
|
||||
|
||||
nsresult rv = nsDocLoader::SetDocLoaderParent(aParent);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
@ -3373,8 +3391,10 @@ nsDocShell::SetDocLoaderParent(nsDocLoader* aParent)
|
||||
value = false;
|
||||
}
|
||||
SetAllowDNSPrefetch(mAllowDNSPrefetch && value);
|
||||
value = parentAsDocShell->GetAffectPrivateSessionLifetime();
|
||||
SetAffectPrivateSessionLifetime(value);
|
||||
if (mInheritPrivateBrowsingId) {
|
||||
value = parentAsDocShell->GetAffectPrivateSessionLifetime();
|
||||
SetAffectPrivateSessionLifetime(value);
|
||||
}
|
||||
uint32_t flags;
|
||||
if (NS_SUCCEEDED(parentAsDocShell->GetDefaultLoadFlags(&flags))) {
|
||||
SetDefaultLoadFlags(flags);
|
||||
@ -3386,7 +3406,7 @@ nsDocShell::SetDocLoaderParent(nsDocLoader* aParent)
|
||||
}
|
||||
|
||||
nsCOMPtr<nsILoadContext> parentAsLoadContext(do_QueryInterface(parent));
|
||||
if (parentAsLoadContext &&
|
||||
if (parentAsLoadContext && mInheritPrivateBrowsingId &&
|
||||
NS_SUCCEEDED(parentAsLoadContext->GetUsePrivateBrowsing(&value))) {
|
||||
SetPrivateBrowsing(value);
|
||||
}
|
||||
@ -3399,6 +3419,9 @@ nsDocShell::SetDocLoaderParent(nsDocLoader* aParent)
|
||||
// Our parent has changed. Recompute scriptability.
|
||||
RecomputeCanExecuteScripts();
|
||||
|
||||
NS_ASSERTION(mInheritPrivateBrowsingId || wasPrivate == UsePrivateBrowsing(),
|
||||
"Private browsing state changed while inheritance was disabled");
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -951,6 +951,7 @@ protected:
|
||||
bool mDeviceSizeIsPageSize : 1;
|
||||
bool mWindowDraggingAllowed : 1;
|
||||
bool mInFrameSwap : 1;
|
||||
bool mInheritPrivateBrowsingId : 1;
|
||||
|
||||
// Because scriptability depends on the mAllowJavascript values of our
|
||||
// ancestors, we cache the effective scriptability and recompute it when
|
||||
|
@ -300,6 +300,15 @@ interface nsIDocShell : nsIDocShellTreeItem
|
||||
*/
|
||||
[infallible] attribute boolean allowContentRetargetingOnChildren;
|
||||
|
||||
/**
|
||||
* True if this docShell should inherit the private browsing ID from
|
||||
* its parent when reparented.
|
||||
*
|
||||
* NOTE: This should *not* be set false in new code, or for docShells
|
||||
* inserted anywhere other than as children of panels.
|
||||
*/
|
||||
[infallible] attribute boolean inheritPrivateBrowsingId;
|
||||
|
||||
/**
|
||||
* Get an enumerator over this docShell and its children.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user