Bug 822367 - Use new nsIWebProgressListenerFlags for mixed active and mixed passive content in PSM. Also update the security state to STATE_IS_BROKEN if nsMixedContentBlocker has detected mixed content (even if PSM has not detected the mixed content). r=bsmith

This commit is contained in:
Tanvi Vyas 2013-01-30 00:04:43 -08:00
parent 291a1c1eaf
commit 79ca64e10b
2 changed files with 24 additions and 2 deletions

View File

@ -285,7 +285,29 @@ nsSecureBrowserUIImpl::MapInternalToExternalState(uint32_t* aState, lockIconStat
if (ev && (*aState & STATE_IS_SECURE))
*aState |= nsIWebProgressListener::STATE_IDENTITY_EV_TOPLEVEL;
nsCOMPtr<nsPIDOMWindow> piwin = do_QueryReferent(mWindow);
MOZ_ASSERT(piwin);
nsIDocShell* docShell = piwin->GetDocShell();
MOZ_ASSERT(docShell);
// Has a Mixed Content Load initiated in nsMixedContentBlocker?
// If so, the state should be broken; overriding the previous state
// set by the lock parameter.
if (docShell->GetHasMixedActiveContentLoaded())
*aState = STATE_IS_BROKEN | nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT;
if (docShell->GetHasMixedDisplayContentLoaded())
*aState = STATE_IS_BROKEN | nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT;
// Has Mixed Content Been Blocked in nsMixedContentBlocker?
if (docShell->GetHasMixedActiveContentBlocked())
*aState |= nsIWebProgressListener::STATE_BLOCKED_MIXED_ACTIVE_CONTENT;
if (docShell->GetHasMixedDisplayContentBlocked())
*aState |= nsIWebProgressListener::STATE_BLOCKED_MIXED_DISPLAY_CONTENT;
return NS_OK;
}

View File

@ -99,7 +99,7 @@ protected:
#endif
static already_AddRefed<nsISupports> ExtractSecurityInfo(nsIRequest* aRequest);
static nsresult MapInternalToExternalState(uint32_t* aState, lockIconState lock, bool ev);
nsresult MapInternalToExternalState(uint32_t* aState, lockIconState lock, bool ev);
nsresult UpdateSecurityState(nsIRequest* aRequest, bool withNewLocation,
bool withUpdateStatus, bool withUpdateTooltip);
bool UpdateMyFlags(lockIconState &warnSecurityState);