diff options
Diffstat (limited to 'layout')
-rw-r--r-- | layout/base/RestyleTracker.cpp | 18 | ||||
-rw-r--r-- | layout/base/RestyleTracker.h | 12 | ||||
-rw-r--r-- | layout/base/nsDocumentViewer.cpp | 15 | ||||
-rw-r--r-- | layout/base/nsPresContext.cpp | 13 | ||||
-rw-r--r-- | layout/base/nsPresShell.cpp | 17 |
5 files changed, 23 insertions, 52 deletions
diff --git a/layout/base/RestyleTracker.cpp b/layout/base/RestyleTracker.cpp index 7d68058d1..a954fda1a 100644 --- a/layout/base/RestyleTracker.cpp +++ b/layout/base/RestyleTracker.cpp @@ -61,9 +61,6 @@ RestyleTracker::Document() const { struct RestyleEnumerateData : RestyleTracker::Hints { RefPtr<dom::Element> mElement; -#if defined(MOZ_ENABLE_PROFILER_SPS) - UniquePtr<ProfilerBacktrace> mBacktrace; -#endif }; inline void @@ -257,12 +254,6 @@ RestyleTracker::DoProcessRestyles() data->mRestyleHint, MarkerTracingType::START))); } -#if defined(MOZ_ENABLE_PROFILER_SPS) - Maybe<GeckoProfilerTracingRAII> profilerRAII; - if (profiler_feature_active("restyle")) { - profilerRAII.emplace("Paint", "Styles", Move(data->mBacktrace)); - } -#endif ProcessOneRestyle(element, data->mRestyleHint, data->mChangeHint, data->mRestyleHintData); AddRestyleRootsIfAwaitingRestyle(data->mDescendants); @@ -337,9 +328,6 @@ RestyleTracker::DoProcessRestyles() // We can move data since we'll be clearing mPendingRestyles after // we finish enumerating it. restyle->mRestyleHintData = Move(data->mRestyleHintData); -#if defined(MOZ_ENABLE_PROFILER_SPS) - restyle->mBacktrace = Move(data->mBacktrace); -#endif #ifdef RESTYLE_LOGGING count++; @@ -365,12 +353,6 @@ RestyleTracker::DoProcessRestyles() index++, count); LOG_RESTYLE_INDENT(); -#if defined(MOZ_ENABLE_PROFILER_SPS) - Maybe<GeckoProfilerTracingRAII> profilerRAII; - if (profiler_feature_active("restyle")) { - profilerRAII.emplace("Paint", "Styles", Move(currentRestyle->mBacktrace)); - } -#endif if (isTimelineRecording) { timelines->AddMarkerForDocShell(docShell, Move( MakeUnique<RestyleTimelineMarker>( diff --git a/layout/base/RestyleTracker.h b/layout/base/RestyleTracker.h index 10a653cdb..5eb393e16 100644 --- a/layout/base/RestyleTracker.h +++ b/layout/base/RestyleTracker.h @@ -22,10 +22,6 @@ #include "GeckoProfiler.h" #include "mozilla/Maybe.h" -#if defined(MOZ_ENABLE_PROFILER_SPS) -#include "ProfilerBacktrace.h" -#endif - namespace mozilla { class RestyleManager; @@ -128,9 +124,6 @@ public: // that we called AddPendingRestyle for and found the element this is // the RestyleData for as its nearest restyle root. nsTArray<RefPtr<Element>> mDescendants; -#if defined(MOZ_ENABLE_PROFILER_SPS) - UniquePtr<ProfilerBacktrace> mBacktrace; -#endif }; /** @@ -265,11 +258,6 @@ RestyleTracker::AddPendingRestyleToTable(Element* aElement, if (!existingData) { RestyleData* rd = new RestyleData(aRestyleHint, aMinChangeHint, aRestyleHintData); -#if defined(MOZ_ENABLE_PROFILER_SPS) - if (profiler_feature_active("restyle")) { - rd->mBacktrace.reset(profiler_get_backtrace()); - } -#endif mPendingRestyles.Put(aElement, rd); return false; } diff --git a/layout/base/nsDocumentViewer.cpp b/layout/base/nsDocumentViewer.cpp index 137efb3cd..7b8734928 100644 --- a/layout/base/nsDocumentViewer.cpp +++ b/layout/base/nsDocumentViewer.cpp @@ -1012,7 +1012,13 @@ nsDocumentViewer::LoadComplete(nsresult aStatus) nsIDocShell *docShell = window->GetDocShell(); NS_ENSURE_TRUE(docShell, NS_ERROR_UNEXPECTED); - docShell->GetRestoringDocument(&restoring); + // Unfortunately, docShell->GetRestoringDocument() might no longer be set + // correctly. In particular, it can be false by now if someone took it upon + // themselves to block onload from inside restoration and unblock it later. + // But we can detect the restoring case very simply: by whether our + // document's readyState is COMPLETE. + restoring = (mDocument->GetReadyStateEnum() == + nsIDocument::READYSTATE_COMPLETE); if (!restoring) { NS_ASSERTION(mDocument->IsXULDocument() || // readyState for XUL is bogus mDocument->GetReadyStateEnum() == @@ -1023,6 +1029,13 @@ nsDocumentViewer::LoadComplete(nsresult aStatus) nsIDocument::READYSTATE_UNINITIALIZED && NS_IsAboutBlank(mDocument->GetDocumentURI())), "Bad readystate"); +#ifdef DEBUG + bool docShellThinksWeAreRestoring; + docShell->GetRestoringDocument(&docShellThinksWeAreRestoring); + MOZ_ASSERT(!docShellThinksWeAreRestoring, + "How can docshell think we are restoring if we don't have a " + "READYSTATE_COMPLETE document?"); +#endif // DEBUG nsCOMPtr<nsIDocument> d = mDocument; mDocument->SetReadyStateInternal(nsIDocument::READYSTATE_COMPLETE); diff --git a/layout/base/nsPresContext.cpp b/layout/base/nsPresContext.cpp index 4a54a8432..3106ff386 100644 --- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -1307,10 +1307,15 @@ nsPresContext::SetFullZoom(float aZoom) void nsPresContext::SetOverrideDPPX(float aDPPX) { - mOverrideDPPX = aDPPX; - - if (HasCachedStyleData()) { - MediaFeatureValuesChanged(nsRestyleHint(0), nsChangeHint(0)); + // SetOverrideDPPX is called during navigations, including history + // traversals. In that case, it's typically called with our current value, + // and we don't need to actually do anything. + if (aDPPX != mOverrideDPPX) { + mOverrideDPPX = aDPPX; + + if (HasCachedStyleData()) { + MediaFeatureValuesChanged(nsRestyleHint(0), nsChangeHint(0)); + } } } diff --git a/layout/base/nsPresShell.cpp b/layout/base/nsPresShell.cpp index 0b88948c3..3e5320c22 100644 --- a/layout/base/nsPresShell.cpp +++ b/layout/base/nsPresShell.cpp @@ -4064,23 +4064,6 @@ PresShell::FlushPendingNotifications(mozilla::ChangesToFlush aFlush) */ mozFlushType flushType = aFlush.mFlushType; -#ifdef MOZ_ENABLE_PROFILER_SPS - static const char flushTypeNames[][20] = { - "Content", - "ContentAndNotify", - "Style", - "InterruptibleLayout", - "Layout", - "Display" - }; - - // Make sure that we don't miss things added to mozFlushType! - MOZ_ASSERT(static_cast<uint32_t>(flushType) <= ArrayLength(flushTypeNames)); - - PROFILER_LABEL_PRINTF("PresShell", "Flush", - js::ProfileEntry::Category::GRAPHICS, "(Flush_%s)", flushTypeNames[flushType - 1]); -#endif - #ifdef ACCESSIBILITY #ifdef DEBUG nsAccessibilityService* accService = GetAccService(); |