WebKit Bugzilla
Attachment 360152 Details for
Bug 193842
: Remove FrameView::m_significantRenderedTextMilestonePending
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193842-20190125132509.patch (text/plain), 7.00 KB, created by
zalan
on 2019-01-25 13:25:16 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2019-01-25 13:25:16 PST
Size:
7.00 KB
patch
obsolete
>Subversion Revision: 240497 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 949d6d16b9cf66150ddc066b09ef79582a598047..88d866969d4f32aebb5b42657f87139e405cf672 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,21 @@ >+2019-01-25 Zalan Bujtas <zalan@apple.com> >+ >+ Remove FrameView::m_significantRenderedTextMilestonePending >+ https://bugs.webkit.org/show_bug.cgi?id=193842 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ WIP. >+ >+ * page/FrameView.cpp: >+ (WebCore::FrameView::resetLayoutMilestones): >+ (WebCore::FrameView::incrementVisuallyNonEmptyCharacterCount): >+ (WebCore::FrameView::hasReachedSignificantRenderedTextThreashold): >+ (WebCore::FrameView::qualifiesAsSignificantRenderedText const): >+ (WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded): >+ (WebCore::FrameView::updateSignificantRenderedTextMilestoneIfNeeded): Deleted. >+ * page/FrameView.h: >+ > 2019-01-25 Zalan Bujtas <zalan@apple.com> > > Remove FrameView::m_firstVisuallyNonEmptyLayoutCallbackPending >diff --git a/Source/WebCore/page/FrameView.cpp b/Source/WebCore/page/FrameView.cpp >index 4e37baa5c9ed4311f42ff40ac43cb2bb4991f026..1da39420b871760d0aeccab659ddf849bac98982 100644 >--- a/Source/WebCore/page/FrameView.cpp >+++ b/Source/WebCore/page/FrameView.cpp >@@ -293,7 +293,7 @@ void FrameView::resetLayoutMilestones() > { > m_firstLayoutCallbackPending = false; > m_isVisuallyNonEmpty = false; >- m_significantRenderedTextMilestonePending = true; >+ m_hasReachedSignificantRenderedTextThreashold = false; > m_renderedSignificantAmountOfText = false; > m_visuallyNonEmptyCharacterCount = 0; > m_visuallyNonEmptyPixelCount = 0; >@@ -4387,11 +4387,9 @@ void FrameView::updateLayoutAndStyleIfNeededRecursive() > > void FrameView::incrementVisuallyNonEmptyCharacterCount(const String& inlineText) > { >- if (m_visuallyNonEmptyCharacterCount > visualCharacterThreshold && m_renderedSignificantAmountOfText) >+ if (m_visuallyNonEmptyCharacterCount > visualCharacterThreshold && m_hasReachedSignificantRenderedTextThreashold) > return; > >- ++m_textRendererCountForVisuallyNonEmptyCharacters; >- > auto nonWhitespaceLength = [](auto& inlineText) { > auto length = inlineText.length(); > for (unsigned i = 0; i < inlineText.length(); ++i) { >@@ -4402,9 +4400,7 @@ void FrameView::incrementVisuallyNonEmptyCharacterCount(const String& inlineText > return length; > }; > m_visuallyNonEmptyCharacterCount += nonWhitespaceLength(inlineText); >- >- if (!m_renderedSignificantAmountOfText) >- updateSignificantRenderedTextMilestoneIfNeeded(); >+ ++m_textRendererCountForVisuallyNonEmptyCharacters; > } > > static bool elementOverflowRectIsLargerThanThreshold(const Element& element) >@@ -4490,29 +4486,38 @@ bool FrameView::qualifiesAsVisuallyNonEmpty() const > return false; > } > >-void FrameView::updateSignificantRenderedTextMilestoneIfNeeded() >+bool FrameView::hasReachedSignificantRenderedTextThreashold() > { >- if (m_renderedSignificantAmountOfText) >- return; >+ if (m_hasReachedSignificantRenderedTextThreashold) >+ return true; >+ >+ if (!frame().document()) >+ return false; >+ auto& document = *frame().document(); >+ auto characterThreshold = document.hasMainArticleElement() ? mainArticleSignificantRenderedTextCharacterThreshold : defaultSignificantRenderedTextCharacterThreshold; >+ if (m_visuallyNonEmptyCharacterCount < characterThreshold) >+ return false; >+ >+ auto meanLength = document.hasMainArticleElement() ? mainArticleSignificantRenderedTextMeanLength : defaultSignificantRenderedTextMeanLength; >+ if (!m_textRendererCountForVisuallyNonEmptyCharacters || m_visuallyNonEmptyCharacterCount / static_cast<float>(m_textRendererCountForVisuallyNonEmptyCharacters) < meanLength) >+ return false; > >+ m_hasReachedSignificantRenderedTextThreashold = true; >+ return true; >+} >+ >+bool FrameView::qualifiesAsSignificantRenderedText() const >+{ >+ ASSERT(!m_renderedSignificantAmountOfText); > auto* document = frame().document(); > if (!document || document->styleScope().hasPendingSheetsBeforeBody()) >- return; >+ return false; > > auto* documentElement = document->documentElement(); > if (!documentElement || !elementOverflowRectIsLargerThanThreshold(*documentElement)) >- return; >- >- auto characterThreshold = document->hasMainArticleElement() ? mainArticleSignificantRenderedTextCharacterThreshold : defaultSignificantRenderedTextCharacterThreshold; >- auto meanLength = document->hasMainArticleElement() ? mainArticleSignificantRenderedTextMeanLength : defaultSignificantRenderedTextMeanLength; >- >- if (m_visuallyNonEmptyCharacterCount < characterThreshold) >- return; >- >- if (!m_textRendererCountForVisuallyNonEmptyCharacters || m_visuallyNonEmptyCharacterCount / static_cast<float>(m_textRendererCountForVisuallyNonEmptyCharacters) < meanLength) >- return; >+ return false; > >- m_renderedSignificantAmountOfText = true; >+ return m_hasReachedSignificantRenderedTextThreashold; > } > > bool FrameView::isViewForDocumentInFrame() const >@@ -5136,7 +5141,6 @@ void FrameView::fireLayoutRelatedMilestonesIfNeeded() > if (frame().isMainFrame()) > page->startCountingRelevantRepaintedObjects(); > } >- updateSignificantRenderedTextMilestoneIfNeeded(); > > if (!m_isVisuallyNonEmpty && qualifiesAsVisuallyNonEmpty()) { > m_isVisuallyNonEmpty = true; >@@ -5145,8 +5149,8 @@ void FrameView::fireLayoutRelatedMilestonesIfNeeded() > milestonesAchieved.add(DidFirstVisuallyNonEmptyLayout); > } > >- if (m_renderedSignificantAmountOfText && m_significantRenderedTextMilestonePending) { >- m_significantRenderedTextMilestonePending = false; >+ if (!m_renderedSignificantAmountOfText && qualifiesAsSignificantRenderedText()) { >+ m_renderedSignificantAmountOfText = true; > if (requestedMilestones & DidRenderSignificantAmountOfText) > milestonesAchieved.add(DidRenderSignificantAmountOfText); > } >diff --git a/Source/WebCore/page/FrameView.h b/Source/WebCore/page/FrameView.h >index e89bd8e97b2b786c558852583e684944ed64a4c4..38b8a7437bf5f694d64916b137dd8e0577531de1 100644 >--- a/Source/WebCore/page/FrameView.h >+++ b/Source/WebCore/page/FrameView.h >@@ -793,6 +793,9 @@ private: > void markRootOrBodyRendererDirty() const; > > bool qualifiesAsVisuallyNonEmpty() const; >+ bool qualifiesAsSignificantRenderedText() const; >+ bool hasReachedSignificantRenderedTextThreashold(); >+ > bool isViewForDocumentInFrame() const; > > AXObjectCache* axObjectCache() const; >@@ -883,8 +886,8 @@ private: > unsigned m_visuallyNonEmptyPixelCount { 0 }; > > unsigned m_textRendererCountForVisuallyNonEmptyCharacters { 0 }; >- bool m_renderedSignificantAmountOfText; >- bool m_significantRenderedTextMilestonePending; >+ bool m_renderedSignificantAmountOfText { false }; >+ bool m_hasReachedSignificantRenderedTextThreashold { false }; > > bool m_needsDeferredScrollbarsUpdate { false }; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193842
:
360152
|
360160
|
360164