- Revision
- 233794
- Author
- [email protected]
- Date
- 2018-07-12 23:22:33 -0700 (Thu, 12 Jul 2018)
Log Message
Make it easier to hit the significant rendered text layout milestone on pages with main article elements
https://bugs.webkit.org/show_bug.cgi?id=187578
<rdar://problem/42104637>
Reviewed by Ryosuke Niwa.
Source/WebCore:
Our current heuristics for triggering the significant rendered text layout milestone are very conservative, with
the intention of avoiding false positives. In practice, we can relax some of these constraints when we've
detected the presence of a main article element on the page. (e.g. in New York Times articles). See per-method
changes below for more detail.
Test: RenderingProgressTests.DidRenderSignificantAmountOfText
* dom/Document.cpp:
(WebCore::Document::registerArticleElement):
(WebCore::Document::unregisterArticleElement):
(WebCore::Document::updateMainArticleElementAfterLayout):
As a post layout task, update the main article element by looping through the articles (up to a maximum limit of
10) in search of an article element that is several times larger than the second largest article element.
* dom/Document.h:
Store a set containing the article elements in the document, as well as the current main article on the page.
(WebCore::Document::hasMainArticleElement const):
* html/Element.cpp:
(WebCore::Element::insertedIntoAncestor):
(WebCore::Element::removedFromAncestor):
Keep track of the article elements that exist in the document whenever elements with the article tag are added
to or removed from the document.
* page/FrameView.cpp:
Add new minimum thresholds for firing the significant rendered text milestone when there exists a main article.
(WebCore::FrameView::performPostLayoutTasks):
(WebCore::FrameView::updateSignificantRenderedTextMilestoneIfNeeded):
Take the main article element into consideration when determining whether to fire the significant text
layout milestone.
Tools:
Tweak an existing layout test to additionally check that the significant text layout milestone is fired on a
page with an article element that is clearly the "main" content on the page (i.e. much taller than all other
articles).
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone-article.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html.
* TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html:
* TestWebKitAPI/Tests/ios/RenderingProgressTests.mm:
(TEST):
Modified Paths
Added Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (233793 => 233794)
--- trunk/Source/WebCore/ChangeLog 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Source/WebCore/ChangeLog 2018-07-13 06:22:33 UTC (rev 233794)
@@ -1,3 +1,48 @@
+2018-07-12 Wenson Hsieh <[email protected]>
+
+ Make it easier to hit the significant rendered text layout milestone on pages with main article elements
+ https://bugs.webkit.org/show_bug.cgi?id=187578
+ <rdar://problem/42104637>
+
+ Reviewed by Ryosuke Niwa.
+
+ Our current heuristics for triggering the significant rendered text layout milestone are very conservative, with
+ the intention of avoiding false positives. In practice, we can relax some of these constraints when we've
+ detected the presence of a main article element on the page. (e.g. in New York Times articles). See per-method
+ changes below for more detail.
+
+ Test: RenderingProgressTests.DidRenderSignificantAmountOfText
+
+ * dom/Document.cpp:
+ (WebCore::Document::registerArticleElement):
+ (WebCore::Document::unregisterArticleElement):
+ (WebCore::Document::updateMainArticleElementAfterLayout):
+
+ As a post layout task, update the main article element by looping through the articles (up to a maximum limit of
+ 10) in search of an article element that is several times larger than the second largest article element.
+
+ * dom/Document.h:
+
+ Store a set containing the article elements in the document, as well as the current main article on the page.
+
+ (WebCore::Document::hasMainArticleElement const):
+ * html/Element.cpp:
+ (WebCore::Element::insertedIntoAncestor):
+ (WebCore::Element::removedFromAncestor):
+
+ Keep track of the article elements that exist in the document whenever elements with the article tag are added
+ to or removed from the document.
+
+ * page/FrameView.cpp:
+
+ Add new minimum thresholds for firing the significant rendered text milestone when there exists a main article.
+
+ (WebCore::FrameView::performPostLayoutTasks):
+ (WebCore::FrameView::updateSignificantRenderedTextMilestoneIfNeeded):
+
+ Take the main article element into consideration when determining whether to fire the significant text
+ layout milestone.
+
2018-07-12 Daniel Bates <[email protected]>
_javascript_ URL gives incorrect result when frame is navigated
Modified: trunk/Source/WebCore/dom/Document.cpp (233793 => 233794)
--- trunk/Source/WebCore/dom/Document.cpp 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Source/WebCore/dom/Document.cpp 2018-07-13 06:22:33 UTC (rev 233794)
@@ -7697,6 +7697,70 @@
m_temporaryUserGesture = nullptr;
}
+void Document::registerArticleElement(Element& article)
+{
+ m_articleElements.add(&article);
+}
+
+void Document::unregisterArticleElement(Element& article)
+{
+ m_articleElements.remove(&article);
+ if (m_mainArticleElement == &article)
+ m_mainArticleElement = nullptr;
+}
+
+void Document::updateMainArticleElementAfterLayout()
+{
+ // If there are too many article elements on the page, don't consider any one of them to be "main content".
+ const unsigned maxNumberOfArticlesBeforeIgnoringMainContentArticle = 10;
+
+ // We consider an article to be main content if it is either:
+ // 1. The only article element in the document.
+ // 2. Much taller than the next tallest article, and also much larger than the viewport.
+ const float minimumSecondTallestArticleHeightFactor = 4;
+ const float minimumViewportAreaFactor = 5;
+
+ m_mainArticleElement = nullptr;
+
+ auto numberOfArticles = m_articleElements.size();
+ if (!numberOfArticles || numberOfArticles > maxNumberOfArticlesBeforeIgnoringMainContentArticle)
+ return;
+
+ Element* tallestArticle = nullptr;
+ float tallestArticleHeight = 0;
+ float tallestArticleWidth = 0;
+ float secondTallestArticleHeight = 0;
+
+ for (auto* article : m_articleElements) {
+ auto* box = article->renderBox();
+ float height = box ? box->height().toFloat() : 0;
+ if (height >= tallestArticleHeight) {
+ secondTallestArticleHeight = tallestArticleHeight;
+ tallestArticleHeight = height;
+ tallestArticleWidth = box ? box->width().toFloat() : 0;
+ tallestArticle = article;
+ } else if (height >= secondTallestArticleHeight)
+ secondTallestArticleHeight = height;
+ }
+
+ if (numberOfArticles == 1) {
+ m_mainArticleElement = tallestArticle;
+ return;
+ }
+
+ if (tallestArticleHeight < minimumSecondTallestArticleHeightFactor * secondTallestArticleHeight)
+ return;
+
+ if (!view())
+ return;
+
+ auto viewportSize = view()->layoutViewportRect().size();
+ if (tallestArticleWidth * tallestArticleHeight < minimumViewportAreaFactor * (viewportSize.width() * viewportSize.height()).toFloat())
+ return;
+
+ m_mainArticleElement = tallestArticle;
+}
+
#if HAVE(CFNETWORK_STORAGE_PARTITIONING)
bool Document::hasFrameSpecificStorageAccess() const
{
Modified: trunk/Source/WebCore/dom/Document.h (233793 => 233794)
--- trunk/Source/WebCore/dom/Document.h 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Source/WebCore/dom/Document.h 2018-07-13 06:22:33 UTC (rev 233794)
@@ -1446,6 +1446,11 @@
void consumeTemporaryTimeUserGesture();
+ void registerArticleElement(Element&);
+ void unregisterArticleElement(Element&);
+ void updateMainArticleElementAfterLayout();
+ bool hasMainArticleElement() const { return !!m_mainArticleElement; }
+
protected:
enum ConstructionFlags { Synthesized = 1, NonRenderedPlaceholder = 1 << 1 };
Document(Frame*, const URL&, unsigned = DefaultDocumentClass, unsigned constructionFlags = 0);
@@ -1687,6 +1692,9 @@
HashSet<Element*> m_captionPreferencesChangedElements;
#endif
+ Element* m_mainArticleElement { nullptr };
+ HashSet<Element*> m_articleElements;
+
#if ENABLE(MEDIA_CONTROLS_SCRIPT)
HashSet<HTMLMediaElement*> m_pageScaleFactorChangedElements;
HashSet<HTMLMediaElement*> m_userInterfaceLayoutDirectionChangedElements;
Modified: trunk/Source/WebCore/dom/Element.cpp (233793 => 233794)
--- trunk/Source/WebCore/dom/Element.cpp 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Source/WebCore/dom/Element.cpp 2018-07-13 06:22:33 UTC (rev 233794)
@@ -1753,6 +1753,9 @@
CustomElementReactionQueue::enqueueConnectedCallbackIfNeeded(*this);
}
+ if (UNLIKELY(hasTagName(articleTag) && newDocument))
+ newDocument->registerArticleElement(*this);
+
return InsertedIntoAncestorResult::Done;
}
@@ -1800,6 +1803,8 @@
if (oldDocument) {
if (oldDocument->cssTarget() == this)
oldDocument->setCSSTarget(nullptr);
+ if (UNLIKELY(hasTagName(articleTag)))
+ oldDocument->unregisterArticleElement(*this);
}
if (removalType.disconnectedFromDocument && UNLIKELY(isDefinedCustomElement()))
Modified: trunk/Source/WebCore/page/FrameView.cpp (233793 => 233794)
--- trunk/Source/WebCore/page/FrameView.cpp 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Source/WebCore/page/FrameView.cpp 2018-07-13 06:22:33 UTC (rev 233794)
@@ -129,8 +129,10 @@
// The maximum number of updateEmbeddedObjects iterations that should be done before returning.
static const unsigned maxUpdateEmbeddedObjectsIterations = 2;
-static constexpr unsigned significantRenderedTextCharacterThreshold = 3000;
-static constexpr float significantRenderedTextMeanLength = 50;
+static constexpr unsigned defaultSignificantRenderedTextCharacterThreshold = 3000;
+static constexpr float defaultSignificantRenderedTextMeanLength = 50;
+static constexpr unsigned mainArticleSignificantRenderedTextCharacterThreshold = 1500;
+static constexpr float mainArticleSignificantRenderedTextMeanLength = 25;
static RenderLayer::UpdateLayerPositionsFlags updateLayerPositionFlags(RenderLayer* layer, bool isRelayoutingSubtree, bool didFullRepaint)
{
@@ -3219,6 +3221,7 @@
// FIXME: We should not run any _javascript_ code in this function.
LOG(Layout, "FrameView %p performPostLayoutTasks", this);
+ frame().document()->updateMainArticleElementAfterLayout();
frame().selection().updateAppearanceAfterLayout();
flushPostLayoutTasksQueue();
@@ -4358,10 +4361,13 @@
if (!documentElement || !elementOverflowRectIsLargerThanThreshold(*documentElement))
return;
- if (m_visuallyNonEmptyCharacterCount < significantRenderedTextCharacterThreshold)
+ auto characterThreshold = document->hasMainArticleElement() ? mainArticleSignificantRenderedTextCharacterThreshold : defaultSignificantRenderedTextCharacterThreshold;
+ auto meanLength = document->hasMainArticleElement() ? mainArticleSignificantRenderedTextMeanLength : defaultSignificantRenderedTextMeanLength;
+
+ if (m_visuallyNonEmptyCharacterCount < characterThreshold)
return;
- if (!m_renderTextCountForVisuallyNonEmptyCharacters || m_visuallyNonEmptyCharacterCount / static_cast<float>(m_renderTextCountForVisuallyNonEmptyCharacters) < significantRenderedTextMeanLength)
+ if (!m_renderTextCountForVisuallyNonEmptyCharacters || m_visuallyNonEmptyCharacterCount / static_cast<float>(m_renderTextCountForVisuallyNonEmptyCharacters) < meanLength)
return;
m_renderedSignificantAmountOfText = true;
Modified: trunk/Tools/ChangeLog (233793 => 233794)
--- trunk/Tools/ChangeLog 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Tools/ChangeLog 2018-07-13 06:22:33 UTC (rev 233794)
@@ -1,3 +1,21 @@
+2018-07-12 Wenson Hsieh <[email protected]>
+
+ Make it easier to hit the significant rendered text layout milestone on pages with main article elements
+ https://bugs.webkit.org/show_bug.cgi?id=187578
+ <rdar://problem/42104637>
+
+ Reviewed by Ryosuke Niwa.
+
+ Tweak an existing layout test to additionally check that the significant text layout milestone is fired on a
+ page with an article element that is clearly the "main" content on the page (i.e. much taller than all other
+ articles).
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone-article.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html.
+ * TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html:
+ * TestWebKitAPI/Tests/ios/RenderingProgressTests.mm:
+ (TEST):
+
2018-07-12 Fujii Hironori <[email protected]>
Change my status to be a WebKit reviewer.
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (233793 => 233794)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2018-07-13 06:22:33 UTC (rev 233794)
@@ -818,6 +818,7 @@
F4D5E4E81F0C5D38008C1A49 /* dragstart-clear-selection.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4D5E4E71F0C5D27008C1A49 /* dragstart-clear-selection.html */; };
F4D65DA81F5E4704009D8C27 /* selected-text-image-link-and-editable.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4D65DA71F5E46C0009D8C27 /* selected-text-image-link-and-editable.html */; };
F4DEF6ED1E9B4DB60048EF61 /* image-in-link-and-input.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4DEF6EC1E9B4D950048EF61 /* image-in-link-and-input.html */; };
+ F4E3D80820F70BB9007B58C5 /* significant-text-milestone-article.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4E3D80720F708E4007B58C5 /* significant-text-milestone-article.html */; };
F4F137921D9B683E002BEC57 /* large-video-test-now-playing.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4F137911D9B6832002BEC57 /* large-video-test-now-playing.html */; };
F4F405BC1D4C0D1C007A9707 /* full-size-autoplaying-video-with-audio.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4F405BA1D4C0CF8007A9707 /* full-size-autoplaying-video-with-audio.html */; };
F4F405BD1D4C0D1C007A9707 /* skinny-autoplaying-video-with-audio.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4F405BB1D4C0CF8007A9707 /* skinny-autoplaying-video-with-audio.html */; };
@@ -1115,6 +1116,7 @@
CE6E81A420A933D500E2C80F /* set-timeout-function.html in Copy Resources */,
52B8CF9815868D9100281053 /* SetDocumentURI.html in Copy Resources */,
CEBABD491B71687C0051210A /* should-open-external-schemes.html in Copy Resources */,
+ F4E3D80820F70BB9007B58C5 /* significant-text-milestone-article.html in Copy Resources */,
F4FC077720F013B600CA043C /* significant-text-milestone.html in Copy Resources */,
C9B4AD2A1ECA6EBE00F5FEA0 /* silence-long.m4a in Copy Resources */,
1ADBEFE3130C6AA100D61D19 /* simple-accelerated-compositing.html in Copy Resources */,
@@ -2020,6 +2022,7 @@
F4D5E4E71F0C5D27008C1A49 /* dragstart-clear-selection.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "dragstart-clear-selection.html"; sourceTree = "<group>"; };
F4D65DA71F5E46C0009D8C27 /* selected-text-image-link-and-editable.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "selected-text-image-link-and-editable.html"; sourceTree = "<group>"; };
F4DEF6EC1E9B4D950048EF61 /* image-in-link-and-input.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "image-in-link-and-input.html"; sourceTree = "<group>"; };
+ F4E3D80720F708E4007B58C5 /* significant-text-milestone-article.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "significant-text-milestone-article.html"; sourceTree = "<group>"; };
F4F137911D9B6832002BEC57 /* large-video-test-now-playing.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "large-video-test-now-playing.html"; sourceTree = "<group>"; };
F4F405BA1D4C0CF8007A9707 /* full-size-autoplaying-video-with-audio.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "full-size-autoplaying-video-with-audio.html"; sourceTree = "<group>"; };
F4F405BB1D4C0CF8007A9707 /* skinny-autoplaying-video-with-audio.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "skinny-autoplaying-video-with-audio.html"; sourceTree = "<group>"; };
@@ -2635,6 +2638,7 @@
A12DDBFF1E8373C100CF6CAE /* rendered-image-excluding-overflow.html */,
F46849BF1EEF5EDC00B937FE /* rich-and-plain-text.html */,
F4D65DA71F5E46C0009D8C27 /* selected-text-image-link-and-editable.html */,
+ F4E3D80720F708E4007B58C5 /* significant-text-milestone-article.html */,
F4FC077620F0108100CA043C /* significant-text-milestone.html */,
C9B4AD291ECA6EA500F5FEA0 /* silence-long.m4a */,
51460E0F20D4216E005345F2 /* SimpleServiceWorkerRegistrations-2.sqlite3 */,
Copied: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone-article.html (from rev 233793, trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html) (0 => 233794)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone-article.html (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone-article.html 2018-07-13 06:22:33 UTC (rev 233794)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+</head>
+<body>
+ <article>
+ <h1 itemprop="title">A long sample article</h1>
+ <h2 itemprop="subheading">Containing lots of placeholder text</h2>
+ <h3 itemprop="author">Johnny Appleseed</h3>
+ <time itemprop="pubdate" datetime="2018-07-06">July 6, 2018</time>
+ <p>Lorem ipsum dolor sit amet, <a href="" adipiscing elit</a>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <a href="" id eu nisl nunc mi ipsum faucibus vitae.</a> Sed tempus urna et pharetra pharetra massa massa. Vitae tortor condimentum lacinia quis vel eros donec ac. <a href="" velit sed ullamcorper morbi</a> tincidunt ornare massa eget. Sit amet cursus sit amet dictum. Id eu nisl nunc mi ipsum faucibus vitae aliquet nec. Suscipit tellus mauris a diam maecenas sed. Consequat nisl vel pretium lectus quam id leo. <a href="" et malesuada fames ac turpis egestas integer.</a> Quam lacus suspendisse faucibus interdum posuere lorem ipsum. Sem integer vitae justo eget magna fermentum iaculis. A condimentum vitae sapien pellentesque habitant morbi tristique. V
arius duis at consectetur lorem. Ipsum faucibus vitae aliquet nec ullamcorper sit.</p>
+ <blockquote><p>Sed faucibus <a href="" in eu mi bibendum</a>. Donec enim diam vulputate ut pharetra sit amet aliquam. <img src="" Consequat id porta nibh venenatis cras sed felis eget velit. At lectus urna duis convallis convallis tellus id interdum velit. Id consectetur purus ut faucibus pulvinar elementum integer enim. Ipsum dolor sit amet consectetur adipiscing elit ut aliquam. At tellus at urna condimentum mattis. Faucibus pulvinar elementum integer enim. At elementum eu facilisis sed odio morbi. Fames ac turpis egestas integer eget aliquet. Consequat interdum varius sit amet mattis vulputate enim nulla. Lectus sit amet est placerat in egestas. Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Urna et pharetra pharetra massa massa ultricies mi.</p></blockquote>
+ <p>Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. <a href="" lacus suspendisse</a> faucibus interdum posuere lorem. Sagittis vitae et leo duis ut diam. Turpis massa sed elementum tempus. Aliquam sem fringilla ut morbi. <a href="" est ullamcorper</a> eget nulla facilisi etiam dignissim. Id velit ut tortor pretium. Bibendum at varius vel pharetra vel turpis nunc. Sit amet aliquam id diam maecenas. Lobortis feugiat vivamus at augue <a href="" arcu dictum</a> varius duis. Libero justo laoreet sit amet. Egestas tellus rutrum tellus pellentesque eu tincidunt tortor aliquam.</p>
+ </article>
+ <article>A small article</article>
+ <article>A small article</article>
+</body>
+</html>
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html (233793 => 233794)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/significant-text-milestone.html 2018-07-13 06:22:33 UTC (rev 233794)
@@ -4,17 +4,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
- <article>
- <h1 itemprop="title">A long sample article</h1>
- <h2 itemprop="subheading">Containing lots of placeholder text</h2>
- <h3 itemprop="author">Johnny Appleseed</h3>
- <time itemprop="pubdate" datetime="2018-07-06">July 6, 2018</time>
- <p>Lorem ipsum dolor sit amet, <a href="" adipiscing elit</a>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <a href="" id eu nisl nunc mi ipsum faucibus vitae.</a> Sed tempus urna et pharetra pharetra massa massa. Vitae tortor condimentum lacinia quis vel eros donec ac. <a href="" velit sed ullamcorper morbi</a> tincidunt ornare massa eget. Sit amet cursus sit amet dictum. Id eu nisl nunc mi ipsum faucibus vitae aliquet nec. Suscipit tellus mauris a diam maecenas sed. Consequat nisl vel pretium lectus quam id leo. <a href="" et malesuada fames ac turpis egestas integer.</a> Quam lacus suspendisse faucibus interdum posuere lorem ipsum. Sem integer vitae justo eget magna fermentum iaculis. A condimentum vitae sapien pellentesque habitant morbi tristique. V
arius duis at consectetur lorem. Ipsum faucibus vitae aliquet nec ullamcorper sit.</p>
- <p>Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. <a href="" lacus suspendisse</a> faucibus interdum posuere lorem. Sagittis vitae et leo duis ut diam. Turpis massa sed elementum tempus. Aliquam sem fringilla ut morbi. <a href="" est ullamcorper</a> eget nulla facilisi etiam dignissim. Id velit ut tortor pretium. Bibendum at varius vel pharetra vel turpis nunc. Sit amet aliquam id diam maecenas. Lobortis feugiat vivamus at augue <a href="" arcu dictum</a> varius duis. Libero justo laoreet sit amet. Egestas tellus rutrum tellus pellentesque eu tincidunt tortor aliquam.</p>
- <blockquote><p>Sed faucibus <a href="" in eu mi bibendum</a>. Donec enim diam vulputate ut pharetra sit amet aliquam. <img src="" Consequat id porta nibh venenatis cras sed felis eget velit. At lectus urna duis convallis convallis tellus id interdum velit. Id consectetur purus ut faucibus pulvinar elementum integer enim. Ipsum dolor sit amet consectetur adipiscing elit ut aliquam. At tellus at urna condimentum mattis. Faucibus pulvinar elementum integer enim. At elementum eu facilisis sed odio morbi. Fames ac turpis egestas integer eget aliquet. Consequat interdum varius sit amet mattis vulputate enim nulla. Lectus sit amet est placerat in egestas. Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Urna et pharetra pharetra massa massa ultricies mi. Sagittis eu volutpat odio facilisis mauris sit amet massa. Nec ullamcorper sit amet risus. Quis enim lobortis s
celerisque fermentum dui faucibus in ornare. In metus vulputate eu scelerisque felis.</p></blockquote>
- <p>Non sodales neque sodales ut etiam sit amet nisl purus. Lacus luctus accumsan tortor posuere ac ut. Pulvinar neque laoreet suspendisse interdum consectetur libero id. Porta non pulvinar neque laoreet suspendisse interdum consectetur libero. Mattis molestie a iaculis at. Sit amet consectetur adipiscing elit duis tristique sollicitudin. Posuere morbi leo urna molestie at elementum eu facilisis sed. Id volutpat lacus laoreet non. Tempus iaculis urna id volutpat lacus laoreet. Ullamcorper velit sed ullamcorper morbi tincidunt ornare.</p>
- <p>Sit amet massa vitae tortor condimentum lacinia quis. <img src="" Vitae turpis massa sed elementum tempus egestas. Faucibus in ornare quam viverra orci <a href="" eu. Scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis. In egestas erat imperdiet sed euismod nisi porta lorem. Varius vel pharetra vel turpis. Nec ullamcorper sit amet risus nullam eget felis eget nunc. Dignissim diam quis enim lobortis scelerisque fermentum dui faucibus in. Sagittis eu volutpat odio facilisis mauris sit amet. Ipsum a arcu cursus vitae congue mauris rhoncus aenean vel. Ornare lectus sit amet est placerat in. Malesuada pellentesque elit eget gravida cum sociis natoque penatibus et. Vitae purus faucibus ornare suspendisse sed nisi lacus sed viverra.</p>
- <p>Cursus vitae congue mauris rhoncus aenean vel elit. Donec ac odio tempor orci dapibus. Cursus in hac habitasse platea dictumst quisque. Mi sit amet mauris commodo quis. Morbi enim nunc faucibus a. Duis convallis convallis tellus id. <a href="" quisque non tellus</a> orci ac auctor augue mauris augue. A condimentum vitae sapien pellentesque habitant morbi. Ornare arcu odio ut sem nulla pharetra diam sit. Placerat in egestas erat imperdiet sed euismod nisi porta. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et netus et. <a href="" diam quam nulla</a> porttitor massa id neque aliquam vestibulum. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum odio. Libero justo laoreet sit amet. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae nunc.</p>
- </article>
+ <h1 itemprop="title">A long sample article</h1>
+ <h2 itemprop="subheading">Containing lots of placeholder text</h2>
+ <h3 itemprop="author">Johnny Appleseed</h3>
+ <time itemprop="pubdate" datetime="2018-07-06">July 6, 2018</time>
+ <p>Lorem ipsum dolor sit amet, <a href="" adipiscing elit</a>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <a href="" id eu nisl nunc mi ipsum faucibus vitae.</a> Sed tempus urna et pharetra pharetra massa massa. Vitae tortor condimentum lacinia quis vel eros donec ac. <a href="" velit sed ullamcorper morbi</a> tincidunt ornare massa eget. Sit amet cursus sit amet dictum. Id eu nisl nunc mi ipsum faucibus vitae aliquet nec. Suscipit tellus mauris a diam maecenas sed. Consequat nisl vel pretium lectus quam id leo. <a href="" et malesuada fames ac turpis egestas integer.</a> Quam lacus suspendisse faucibus interdum posuere lorem ipsum. Sem integer vitae justo eget magna fermentum iaculis. A condimentum vitae sapien pellentesque habitant morbi tristique. Variu
s duis at consectetur lorem. Ipsum faucibus vitae aliquet nec ullamcorper sit.</p>
+ <p>Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. <a href="" lacus suspendisse</a> faucibus interdum posuere lorem. Sagittis vitae et leo duis ut diam. Turpis massa sed elementum tempus. Aliquam sem fringilla ut morbi. <a href="" est ullamcorper</a> eget nulla facilisi etiam dignissim. Id velit ut tortor pretium. Bibendum at varius vel pharetra vel turpis nunc. Sit amet aliquam id diam maecenas. Lobortis feugiat vivamus at augue <a href="" arcu dictum</a> varius duis. Libero justo laoreet sit amet. Egestas tellus rutrum tellus pellentesque eu tincidunt tortor aliquam.</p>
+ <blockquote><p>Sed faucibus <a href="" in eu mi bibendum</a>. Donec enim diam vulputate ut pharetra sit amet aliquam. <img src="" Consequat id porta nibh venenatis cras sed felis eget velit. At lectus urna duis convallis convallis tellus id interdum velit. Id consectetur purus ut faucibus pulvinar elementum integer enim. Ipsum dolor sit amet consectetur adipiscing elit ut aliquam. At tellus at urna condimentum mattis. Faucibus pulvinar elementum integer enim. At elementum eu facilisis sed odio morbi. Fames ac turpis egestas integer eget aliquet. Consequat interdum varius sit amet mattis vulputate enim nulla. Lectus sit amet est placerat in egestas. Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Urna et pharetra pharetra massa massa ultricies mi. Sagittis eu volutpat odio facilisis mauris sit amet massa. Nec ullamcorper sit amet risus. Quis enim lobortis scele
risque fermentum dui faucibus in ornare. In metus vulputate eu scelerisque felis.</p></blockquote>
+ <p>Non sodales neque sodales ut etiam sit amet nisl purus. Lacus luctus accumsan tortor posuere ac ut. Pulvinar neque laoreet suspendisse interdum consectetur libero id. Porta non pulvinar neque laoreet suspendisse interdum consectetur libero. Mattis molestie a iaculis at. Sit amet consectetur adipiscing elit duis tristique sollicitudin. Posuere morbi leo urna molestie at elementum eu facilisis sed. Id volutpat lacus laoreet non. Tempus iaculis urna id volutpat lacus laoreet. Ullamcorper velit sed ullamcorper morbi tincidunt ornare.</p>
+ <p>Sit amet massa vitae tortor condimentum lacinia quis. <img src="" Vitae turpis massa sed elementum tempus egestas. Faucibus in ornare quam viverra orci <a href="" eu. Scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis. In egestas erat imperdiet sed euismod nisi porta lorem. Varius vel pharetra vel turpis. Nec ullamcorper sit amet risus nullam eget felis eget nunc. Dignissim diam quis enim lobortis scelerisque fermentum dui faucibus in. Sagittis eu volutpat odio facilisis mauris sit amet. Ipsum a arcu cursus vitae congue mauris rhoncus aenean vel. Ornare lectus sit amet est placerat in. Malesuada pellentesque elit eget gravida cum sociis natoque penatibus et. Vitae purus faucibus ornare suspendisse sed nisi lacus sed viverra.</p>
+ <p>Cursus vitae congue mauris rhoncus aenean vel elit. Donec ac odio tempor orci dapibus. Cursus in hac habitasse platea dictumst quisque. Mi sit amet mauris commodo quis. Morbi enim nunc faucibus a. Duis convallis convallis tellus id. <a href="" quisque non tellus</a> orci ac auctor augue mauris augue. A condimentum vitae sapien pellentesque habitant morbi. Ornare arcu odio ut sem nulla pharetra diam sit. Placerat in egestas erat imperdiet sed euismod nisi porta. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et netus et. <a href="" diam quam nulla</a> porttitor massa id neque aliquam vestibulum. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum odio. Libero justo laoreet sit amet. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae nunc.</p>
</body>
</html>
Modified: trunk/Tools/TestWebKitAPI/Tests/ios/RenderingProgressTests.mm (233793 => 233794)
--- trunk/Tools/TestWebKitAPI/Tests/ios/RenderingProgressTests.mm 2018-07-13 03:13:19 UTC (rev 233793)
+++ trunk/Tools/TestWebKitAPI/Tests/ios/RenderingProgressTests.mm 2018-07-13 06:22:33 UTC (rev 233794)
@@ -65,6 +65,10 @@
[webView setNavigationDelegate:navigationDelegate.get()];
[webView loadTestPageNamed:@"significant-text-milestone"];
TestWebKitAPI::Util::run(&observedSignificantRenderedText);
+
+ observedSignificantRenderedText = false;
+ [webView loadTestPageNamed:@"significant-text-milestone-article"];
+ TestWebKitAPI::Util::run(&observedSignificantRenderedText);
}
#endif // PLATFORM(IOS)