forked from mirrors/gecko-dev
Bug 1635365: Move field mixed content IsSecure from BrowsingContext to WindowContext. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D74269
This commit is contained in:
parent
62b809186b
commit
1470386f05
7 changed files with 22 additions and 21 deletions
|
|
@ -1921,11 +1921,6 @@ bool BrowsingContext::CanSet(FieldIndex<IDX_AllowPlugins>,
|
||||||
return CheckOnlyOwningProcessCanSet(aSource);
|
return CheckOnlyOwningProcessCanSet(aSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BrowsingContext::CanSet(FieldIndex<IDX_IsSecure>, const bool& aIsSecure,
|
|
||||||
ContentParent* aSource) {
|
|
||||||
return CheckOnlyOwningProcessCanSet(aSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool BrowsingContext::CanSet(FieldIndex<IDX_WatchedByDevtools>,
|
bool BrowsingContext::CanSet(FieldIndex<IDX_WatchedByDevtools>,
|
||||||
const bool& aWatchedByDevtools,
|
const bool& aWatchedByDevtools,
|
||||||
ContentParent* aSource) {
|
ContentParent* aSource) {
|
||||||
|
|
|
||||||
|
|
@ -133,10 +133,7 @@ class WindowProxyHolder;
|
||||||
FIELD(WatchedByDevtools, bool) \
|
FIELD(WatchedByDevtools, bool) \
|
||||||
FIELD(TextZoom, float) \
|
FIELD(TextZoom, float) \
|
||||||
/* See nsIRequest for possible flags. */ \
|
/* See nsIRequest for possible flags. */ \
|
||||||
FIELD(DefaultLoadFlags, uint32_t) \
|
FIELD(DefaultLoadFlags, uint32_t)
|
||||||
/* Mixed-Content: If the corresponding documentURI is https, \
|
|
||||||
* then this flag is true. */ \
|
|
||||||
FIELD(IsSecure, bool)
|
|
||||||
|
|
||||||
// BrowsingContext, in this context, is the cross process replicated
|
// BrowsingContext, in this context, is the cross process replicated
|
||||||
// environment in which information about documents is stored. In
|
// environment in which information about documents is stored. In
|
||||||
|
|
@ -728,8 +725,6 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache {
|
||||||
ContentParent* aSource);
|
ContentParent* aSource);
|
||||||
bool CanSet(FieldIndex<IDX_AllowPlugins>, const bool& aAllowPlugins,
|
bool CanSet(FieldIndex<IDX_AllowPlugins>, const bool& aAllowPlugins,
|
||||||
ContentParent* aSource);
|
ContentParent* aSource);
|
||||||
bool CanSet(FieldIndex<IDX_IsSecure>, const bool& aIsSecure,
|
|
||||||
ContentParent* aSource);
|
|
||||||
bool CanSet(FieldIndex<IDX_WatchedByDevtools>, const bool& aWatchedByDevtools,
|
bool CanSet(FieldIndex<IDX_WatchedByDevtools>, const bool& aWatchedByDevtools,
|
||||||
ContentParent* aSource);
|
ContentParent* aSource);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,15 @@ bool WindowContext::CheckOnlyOwningProcessCanSet(ContentParent* aSource) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool WindowContext::CanSet(FieldIndex<IDX_IsSecure>, const bool& aIsSecure,
|
||||||
|
ContentParent* aSource) {
|
||||||
|
// reject attempts to set isSecure for mixed content from a content process
|
||||||
|
if (XRE_IsContentProcess() || aSource) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool WindowContext::CanSet(FieldIndex<IDX_AllowMixedContent>,
|
bool WindowContext::CanSet(FieldIndex<IDX_AllowMixedContent>,
|
||||||
const bool& aAllowMixedContent,
|
const bool& aAllowMixedContent,
|
||||||
ContentParent* aSource) {
|
ContentParent* aSource) {
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,9 @@ class WindowGlobalParent;
|
||||||
/* Whether this window's channel has been marked as a third-party \
|
/* Whether this window's channel has been marked as a third-party \
|
||||||
* tracking resource */ \
|
* tracking resource */ \
|
||||||
FIELD(IsThirdPartyTrackingResourceWindow, bool) \
|
FIELD(IsThirdPartyTrackingResourceWindow, bool) \
|
||||||
|
/* Mixed-Content: If the corresponding documentURI is https, \
|
||||||
|
* then this flag is true. */ \
|
||||||
|
FIELD(IsSecure, bool) \
|
||||||
/* Whether the user has overriden the mixed content blocker to allow \
|
/* Whether the user has overriden the mixed content blocker to allow \
|
||||||
* mixed content loads to happen */ \
|
* mixed content loads to happen */ \
|
||||||
FIELD(AllowMixedContent, bool)
|
FIELD(AllowMixedContent, bool)
|
||||||
|
|
@ -113,6 +116,8 @@ class WindowContext : public nsISupports, public nsWrapperCache {
|
||||||
return GetOuterWindowId() == 0 && aValue != 0;
|
return GetOuterWindowId() == 0 && aValue != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CanSet(FieldIndex<IDX_IsSecure>, const bool& aIsSecure,
|
||||||
|
ContentParent* aSource);
|
||||||
bool CanSet(FieldIndex<IDX_AllowMixedContent>, const bool& aAllowMixedContent,
|
bool CanSet(FieldIndex<IDX_AllowMixedContent>, const bool& aAllowMixedContent,
|
||||||
ContentParent* aSource);
|
ContentParent* aSource);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3607,14 +3607,6 @@ void Document::SetDocumentURI(nsIURI* aURI) {
|
||||||
if (inner && inner->GetWindowGlobalChild()) {
|
if (inner && inner->GetWindowGlobalChild()) {
|
||||||
inner->GetWindowGlobalChild()->SetDocumentURI(mDocumentURI);
|
inner->GetWindowGlobalChild()->SetDocumentURI(mDocumentURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* browsingContext = GetBrowsingContext();
|
|
||||||
if (browsingContext) {
|
|
||||||
nsCOMPtr<nsIURI> innerDocURI = NS_GetInnermostURI(mDocumentURI);
|
|
||||||
if (innerDocURI) {
|
|
||||||
browsingContext->SetIsSecure(innerDocURI->SchemeIs("https"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GetFormattedTimeString(PRTime aTime,
|
static void GetFormattedTimeString(PRTime aTime,
|
||||||
|
|
|
||||||
|
|
@ -250,6 +250,11 @@ IPCResult WindowGlobalParent::RecvUpdateDocumentURI(nsIURI* aURI) {
|
||||||
// XXX(nika): Assert that the URI change was one which makes sense (either
|
// XXX(nika): Assert that the URI change was one which makes sense (either
|
||||||
// about:blank -> a real URI, or a legal push/popstate URI change?)
|
// about:blank -> a real URI, or a legal push/popstate URI change?)
|
||||||
mDocumentURI = aURI;
|
mDocumentURI = aURI;
|
||||||
|
// Update Mixed Content fields
|
||||||
|
nsCOMPtr<nsIURI> innerDocURI = NS_GetInnermostURI(mDocumentURI);
|
||||||
|
if (innerDocURI) {
|
||||||
|
WindowContext::SetIsSecure(innerDocURI->SchemeIs("https"));
|
||||||
|
}
|
||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -837,7 +837,7 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
|
||||||
// Determine if the rootDoc is https and if the user decided to allow Mixed
|
// Determine if the rootDoc is https and if the user decided to allow Mixed
|
||||||
// Content
|
// Content
|
||||||
WindowContext* topWC = requestingWindow->TopWindowContext();
|
WindowContext* topWC = requestingWindow->TopWindowContext();
|
||||||
bool rootHasSecureConnection = topWC->GetBrowsingContext()->GetIsSecure();
|
bool rootHasSecureConnection = topWC->GetIsSecure();
|
||||||
bool allowMixedContent = topWC->GetAllowMixedContent();
|
bool allowMixedContent = topWC->GetAllowMixedContent();
|
||||||
|
|
||||||
// When navigating an iframe, the iframe may be https
|
// When navigating an iframe, the iframe may be https
|
||||||
|
|
@ -848,7 +848,7 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
|
||||||
|
|
||||||
RefPtr<WindowContext> curWindow = requestingWindow;
|
RefPtr<WindowContext> curWindow = requestingWindow;
|
||||||
while (!httpsParentExists && curWindow) {
|
while (!httpsParentExists && curWindow) {
|
||||||
httpsParentExists = curWindow->GetBrowsingContext()->GetIsSecure();
|
httpsParentExists = curWindow->GetIsSecure();
|
||||||
curWindow = curWindow->GetParentWindowContext();
|
curWindow = curWindow->GetParentWindowContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue