Bug 553359. Cache whether the PresContext is chrome or not. r=bzbarsky

This commit is contained in:
Timothy Nikkel 2010-04-10 13:03:40 -05:00
Родитель 3dc85cd318
Коммит b696838d2e
3 изменённых файлов: 30 добавлений и 4 удалений

Просмотреть файл

@ -2415,6 +2415,12 @@ nsDocShell::SetItemType(PRInt32 aItemType)
// disable auth prompting for anything but content
mAllowAuth = mItemType == typeContent;
nsRefPtr<nsPresContext> presContext = nsnull;
GetPresContext(getter_AddRefs(presContext));
if (presContext) {
presContext->UpdateIsChromeCache();
}
return NS_OK;
}

Просмотреть файл

@ -1335,6 +1335,7 @@ nsPresContext::SetContainer(nsISupports* aHandler)
if (mContainer) {
GetDocumentColorPreferences();
}
UpdateIsChromeCacheInternal();
}
already_AddRefed<nsISupports>
@ -1645,8 +1646,8 @@ nsPresContext::CountReflows(const char * aName, nsIFrame * aFrame)
}
#endif
PRBool
nsPresContext::IsChrome() const
void
nsPresContext::UpdateIsChromeCacheInternal()
{
PRBool isChrome = PR_FALSE;
nsCOMPtr<nsISupports> container = GetContainer();
@ -1661,7 +1662,13 @@ nsPresContext::IsChrome() const
}
}
}
return isChrome;
mIsChrome = isChrome;
}
void
nsPresContext::UpdateIsChromeCacheExternal()
{
UpdateIsChromeCacheInternal();
}
/* virtual */ PRBool

Просмотреть файл

@ -810,7 +810,17 @@ public:
mType == eContext_PrintPreview); }
// Is this presentation in a chrome docshell?
PRBool IsChrome() const;
PRBool IsChrome() const { return mIsChrome; }
virtual void UpdateIsChromeCacheExternal();
void UpdateIsChromeCacheInternal();
#ifdef _IMPL_NS_LAYOUT
void UpdateIsChromeCache()
{ UpdateIsChromeCacheInternal(); }
#else
void UpdateIsChromeCache()
{ UpdateIsChromeCacheExternal(); }
#endif
// Public API for native theme code to get style internals.
virtual PRBool HasAuthorSpecifiedRules(nsIFrame *aFrame, PRUint32 ruleTypeMask) const;
@ -1115,6 +1125,9 @@ protected:
unsigned mProcessingRestyles : 1;
unsigned mProcessingAnimationStyleChange : 1;
// Cache whether we are chrome or not because it is expensive.
unsigned mIsChrome : 1;
#ifdef DEBUG
PRBool mInitialized;
#endif