зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1444580: Devirtualize autofocus and navigation timing stuff. r=smaug
MozReview-Commit-ID: K5Y9lxSJgOG
This commit is contained in:
Родитель
92ca1ace1b
Коммит
07907b44d5
|
@ -1490,6 +1490,10 @@ nsIDocument::nsIDocument()
|
|||
mStyleSetFilled(false),
|
||||
mSSApplicableStateNotificationPending(false),
|
||||
mMayHaveTitleElement(false),
|
||||
mDOMLoadingSet(false),
|
||||
mDOMInteractiveSet(false),
|
||||
mDOMCompleteSet(false),
|
||||
mAutoFocusFired(false),
|
||||
mIsScopedStyleEnabled(eScopedStyle_Unknown),
|
||||
mCompatMode(eCompatibility_FullStandards),
|
||||
mReadyState(ReadyState::READYSTATE_UNINITIALIZED),
|
||||
|
@ -1568,10 +1572,6 @@ nsDocument::nsDocument(const char* aContentType)
|
|||
#ifdef DEBUG
|
||||
, mWillReparent(false)
|
||||
#endif
|
||||
, mDOMLoadingSet(false)
|
||||
, mDOMInteractiveSet(false)
|
||||
, mDOMCompleteSet(false)
|
||||
, mAutoFocusFired(false)
|
||||
{
|
||||
SetContentTypeInternal(nsDependentCString(aContentType));
|
||||
|
||||
|
@ -8891,7 +8891,7 @@ nsDocument::CloneDocHelper(nsDocument* clone, bool aPreallocateChildren) const
|
|||
}
|
||||
|
||||
void
|
||||
nsDocument::SetReadyStateInternal(ReadyState rs)
|
||||
nsIDocument::SetReadyStateInternal(ReadyState rs)
|
||||
{
|
||||
mReadyState = rs;
|
||||
if (rs == READYSTATE_UNINITIALIZED) {
|
||||
|
@ -9413,7 +9413,7 @@ private:
|
|||
};
|
||||
|
||||
void
|
||||
nsDocument::SetAutoFocusElement(Element* aAutoFocusElement)
|
||||
nsIDocument::SetAutoFocusElement(Element* aAutoFocusElement)
|
||||
{
|
||||
if (mAutoFocusFired) {
|
||||
// Too late.
|
||||
|
@ -9431,7 +9431,7 @@ nsDocument::SetAutoFocusElement(Element* aAutoFocusElement)
|
|||
}
|
||||
|
||||
void
|
||||
nsDocument::TriggerAutoFocus()
|
||||
nsIDocument::TriggerAutoFocus()
|
||||
{
|
||||
if (mAutoFocusFired) {
|
||||
return;
|
||||
|
@ -9799,20 +9799,13 @@ nsDocument::GetStateObject(nsIVariant** aState)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsDOMNavigationTiming*
|
||||
nsDocument::GetNavigationTiming() const
|
||||
{
|
||||
return mTiming;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsDocument::SetNavigationTiming(nsDOMNavigationTiming* aTiming)
|
||||
void
|
||||
nsIDocument::SetNavigationTiming(nsDOMNavigationTiming* aTiming)
|
||||
{
|
||||
mTiming = aTiming;
|
||||
if (!mLoadingTimeStamp.IsNull() && mTiming) {
|
||||
mTiming->SetDOMLoadingTimeStamp(nsIDocument::GetDocumentURI(), mLoadingTimeStamp);
|
||||
mTiming->SetDOMLoadingTimeStamp(GetDocumentURI(), mLoadingTimeStamp);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
Element*
|
||||
|
@ -13408,7 +13401,7 @@ nsIDocument::GetSelection(ErrorResult& aRv)
|
|||
}
|
||||
|
||||
void
|
||||
nsDocument::RecordNavigationTiming(ReadyState aReadyState)
|
||||
nsIDocument::RecordNavigationTiming(ReadyState aReadyState)
|
||||
{
|
||||
if (!XRE_IsContentProcess()) {
|
||||
return;
|
||||
|
|
|
@ -406,8 +406,6 @@ public:
|
|||
virtual void BeginLoad() override;
|
||||
virtual void EndLoad() override;
|
||||
|
||||
virtual void SetReadyStateInternal(ReadyState rs) override;
|
||||
|
||||
virtual void FlushExternalResources(mozilla::FlushType aType) override;
|
||||
virtual void SetXMLDeclaration(const char16_t *aVersion,
|
||||
const char16_t *aEncoding,
|
||||
|
@ -659,9 +657,6 @@ public:
|
|||
// Only BlockOnload should call this!
|
||||
void AsyncBlockOnload();
|
||||
|
||||
virtual void SetAutoFocusElement(Element* aAutoFocusElement) override;
|
||||
virtual void TriggerAutoFocus() override;
|
||||
|
||||
virtual void SetScrollToRef(nsIURI *aDocumentURI) override;
|
||||
virtual void ScrollToRef() override;
|
||||
virtual void ResetScrolledToRefAlready() override;
|
||||
|
@ -689,9 +684,6 @@ public:
|
|||
|
||||
virtual nsresult GetStateObject(nsIVariant** aResult) override;
|
||||
|
||||
virtual nsDOMNavigationTiming* GetNavigationTiming() const override;
|
||||
virtual nsresult SetNavigationTiming(nsDOMNavigationTiming* aTiming) override;
|
||||
|
||||
virtual Element* FindImageMap(const nsAString& aNormalizedMapName) override;
|
||||
|
||||
virtual nsTArray<Element*> GetFullscreenStack() const override;
|
||||
|
@ -897,9 +889,6 @@ public:
|
|||
|
||||
nsClassHashtable<nsStringHashKey, nsRadioGroupStruct> mRadioGroups;
|
||||
|
||||
// Recorded time of change to 'loading' state.
|
||||
mozilla::TimeStamp mLoadingTimeStamp;
|
||||
|
||||
bool mHasWarnedAboutBoxObjects:1;
|
||||
|
||||
bool mDelayFrameLoaderInitialization:1;
|
||||
|
@ -942,8 +931,6 @@ public:
|
|||
nsCOMPtr<nsIApplicationCache> mApplicationCache;
|
||||
|
||||
nsCOMPtr<nsIContent> mFirstBaseNodeWithHref;
|
||||
|
||||
RefPtr<nsDOMNavigationTiming> mTiming;
|
||||
private:
|
||||
friend class nsUnblockOnloadEvent;
|
||||
// Recomputes the visibility state but doesn't set the new value.
|
||||
|
@ -1007,8 +994,6 @@ private:
|
|||
|
||||
RefPtr<nsContentList> mImageMaps;
|
||||
|
||||
nsWeakPtr mAutoFocusElement;
|
||||
|
||||
nsCString mScrollToRef;
|
||||
uint8_t mScrolledToRefAlready : 1;
|
||||
uint8_t mChangeScrollPosWhenScrollingToRef : 1;
|
||||
|
@ -1037,13 +1022,6 @@ private:
|
|||
public:
|
||||
bool mWillReparent;
|
||||
#endif
|
||||
|
||||
private:
|
||||
void RecordNavigationTiming(ReadyState aReadyState);
|
||||
bool mDOMLoadingSet : 1;
|
||||
bool mDOMInteractiveSet : 1;
|
||||
bool mDOMCompleteSet : 1;
|
||||
bool mAutoFocusFired : 1;
|
||||
};
|
||||
|
||||
class nsDocumentOnStack
|
||||
|
|
|
@ -1754,7 +1754,7 @@ public:
|
|||
virtual void EndLoad() = 0;
|
||||
|
||||
enum ReadyState { READYSTATE_UNINITIALIZED = 0, READYSTATE_LOADING = 1, READYSTATE_INTERACTIVE = 3, READYSTATE_COMPLETE = 4};
|
||||
virtual void SetReadyStateInternal(ReadyState rs) = 0;
|
||||
void SetReadyStateInternal(ReadyState rs);
|
||||
ReadyState GetReadyStateEnum()
|
||||
{
|
||||
return mReadyState;
|
||||
|
@ -2707,8 +2707,8 @@ public:
|
|||
|
||||
virtual nsISupports* GetCurrentContentSink() = 0;
|
||||
|
||||
virtual void SetAutoFocusElement(Element* aAutoFocusElement) = 0;
|
||||
virtual void TriggerAutoFocus() = 0;
|
||||
void SetAutoFocusElement(Element* aAutoFocusElement);
|
||||
void TriggerAutoFocus();
|
||||
|
||||
virtual void SetScrollToRef(nsIURI *aDocumentURI) = 0;
|
||||
virtual void ScrollToRef() = 0;
|
||||
|
@ -2770,9 +2770,12 @@ public:
|
|||
|
||||
virtual nsresult GetStateObject(nsIVariant** aResult) = 0;
|
||||
|
||||
virtual nsDOMNavigationTiming* GetNavigationTiming() const = 0;
|
||||
nsDOMNavigationTiming* GetNavigationTiming() const
|
||||
{
|
||||
return mTiming;
|
||||
}
|
||||
|
||||
virtual nsresult SetNavigationTiming(nsDOMNavigationTiming* aTiming) = 0;
|
||||
void SetNavigationTiming(nsDOMNavigationTiming* aTiming);
|
||||
|
||||
virtual Element* FindImageMap(const nsAString& aNormalizedMapName) = 0;
|
||||
|
||||
|
@ -3309,6 +3312,8 @@ protected:
|
|||
// the classification lists and the classification of parent documents.
|
||||
mozilla::dom::FlashClassification ComputeFlashClassification();
|
||||
|
||||
void RecordNavigationTiming(ReadyState aReadyState);
|
||||
|
||||
bool GetUseCounter(mozilla::UseCounter aUseCounter)
|
||||
{
|
||||
return mUseCounters[aUseCounter];
|
||||
|
@ -3737,6 +3742,11 @@ protected:
|
|||
// bound to it
|
||||
bool mMayHaveTitleElement: 1;
|
||||
|
||||
bool mDOMLoadingSet: 1;
|
||||
bool mDOMInteractiveSet: 1;
|
||||
bool mDOMCompleteSet: 1;
|
||||
bool mAutoFocusFired: 1;
|
||||
|
||||
// Whether <style scoped> support is enabled in this document.
|
||||
enum { eScopedStyle_Unknown, eScopedStyle_Disabled, eScopedStyle_Enabled };
|
||||
unsigned int mIsScopedStyleEnabled : 2;
|
||||
|
@ -3960,6 +3970,13 @@ protected:
|
|||
nsRevocableEventPtr<nsRunnableMethod<nsIDocument, void, false>>
|
||||
mPendingTitleChangeEvent;
|
||||
|
||||
RefPtr<nsDOMNavigationTiming> mTiming;
|
||||
|
||||
// Recorded time of change to 'loading' state.
|
||||
mozilla::TimeStamp mLoadingTimeStamp;
|
||||
|
||||
nsWeakPtr mAutoFocusElement;
|
||||
|
||||
nsTArray<RefPtr<mozilla::StyleSheet>> mOnDemandBuiltInUASheets;
|
||||
nsTArray<RefPtr<mozilla::StyleSheet>> mAdditionalSheets[AdditionalSheetTypeCount];
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче