Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1375)

Unified Diff: Source/web/tests/DocumentLoadingRenderingTest.cpp

Issue 1308043003: Add a bunch more tests for deferred commit handling. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: typos Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/web/tests/DocumentLoadingRenderingTest.cpp
diff --git a/Source/web/tests/DocumentLoadingRenderingTest.cpp b/Source/web/tests/DocumentLoadingRenderingTest.cpp
index 2283f8507e2d753268c77eae9cc0c9d69d6cb5ec..0f64c43a4e6c29fb8d459d5e6c755a7a834b3812 100644
--- a/Source/web/tests/DocumentLoadingRenderingTest.cpp
+++ b/Source/web/tests/DocumentLoadingRenderingTest.cpp
@@ -16,49 +16,148 @@
namespace blink {
class DocumentLoadingRenderingTest : public ::testing::Test {
- void SetUp() override
+protected:
+ DocumentLoadingRenderingTest()
+ : m_webViewClient(m_layerTreeView)
{
+ m_webViewHelper.initialize(true, nullptr, &m_webViewClient);
Document::setThreadedParsingEnabledForUnitTestsOnly(false);
}
- void TearDown() override
+ virtual ~DocumentLoadingRenderingTest()
{
Document::setThreadedParsingEnabledForUnitTestsOnly(true);
}
+
+ void loadURL(const String& url)
+ {
+ WebURLRequest request;
+ request.initialize();
+ request.setURL(KURL(ParsedURLString, url));
+ m_webViewHelper.webViewImpl()->mainFrameImpl()->loadRequest(request);
+ }
+
+ SimNetwork m_network;
+ SimLayerTreeView m_layerTreeView;
+ SimWebViewClient m_webViewClient;
+ FrameTestHelpers::WebViewHelper m_webViewHelper;
};
TEST_F(DocumentLoadingRenderingTest, ShouldResumeCommitsAfterBodyParsedWithoutSheets)
{
- SimLayerTreeView layerTreeView;
- SimWebViewClient webViewClient(layerTreeView);
- FrameTestHelpers::WebViewHelper webViewHelper;
- webViewHelper.initialize(true, nullptr, &webViewClient);
-
- SimNetwork network;
SimRequest mainResource("https://example.com/test.html", "text/html");
- WebURLRequest request;
- request.initialize();
- request.setURL(KURL(ParsedURLString, "https://example.com/test.html"));
-
- webViewHelper.webViewImpl()->mainFrameImpl()->loadRequest(request);
+ loadURL("https://example.com/test.html");
mainResource.start();
// Still in the head, should not resume commits.
mainResource.write("<!DOCTYPE html>");
- EXPECT_TRUE(layerTreeView.deferCommits());
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
mainResource.write("<title>Test</title><style>div { color red; }</style>");
- EXPECT_TRUE(layerTreeView.deferCommits());
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
// Implicitly inserts the body. Since there's no loading stylesheets we
// should resume commits.
mainResource.write("<p>Hello World</p>");
- EXPECT_FALSE(layerTreeView.deferCommits());
+ EXPECT_FALSE(m_layerTreeView.deferCommits());
+
+ // Finish the load, should stay resumed.
+ mainResource.finish();
+ EXPECT_FALSE(m_layerTreeView.deferCommits());
+}
+
+TEST_F(DocumentLoadingRenderingTest, ShouldResumeCommitsAfterBodyIfSheetsLoaded)
+{
+ SimRequest mainResource("https://example.com/test.html", "text/html");
+ SimRequest cssResource("https://example.com/test.css", "text/css");
+
+ loadURL("https://example.com/test.html");
+
+ mainResource.start();
+
+ // Still in the head, should not resume commits.
+ mainResource.write("<!DOCTYPE html><link rel=stylesheet href=test.css>");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Sheet is streaming in, but not ready yet.
+ cssResource.start();
+ cssResource.write("a { color: red; }");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Sheet finished, but no body yet, so don't resume.
+ cssResource.finish();
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Body inserted and sheet is loaded so resume commits.
+ mainResource.write("<body>");
+ EXPECT_FALSE(m_layerTreeView.deferCommits());
+
+ // Finish the load, should stay resumed.
+ mainResource.finish();
+ EXPECT_FALSE(m_layerTreeView.deferCommits());
+}
+
+TEST_F(DocumentLoadingRenderingTest, ShouldResumeCommitsAfterSheetsLoaded)
+{
+ SimRequest mainResource("https://example.com/test.html", "text/html");
+ SimRequest cssResource("https://example.com/test.css", "text/css");
+
+ loadURL("https://example.com/test.html");
+
+ mainResource.start();
+
+ // Still in the head, should not resume commits.
+ mainResource.write("<!DOCTYPE html><link rel=stylesheet href=test.css>");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Sheet is streaming in, but not ready yet.
+ cssResource.start();
+ cssResource.write("a { color: red; }");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Body inserted, but sheet is still loading so don't resume.
+ mainResource.write("<body>");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Sheet finished and there's a body so resume.
+ cssResource.finish();
+ EXPECT_FALSE(m_layerTreeView.deferCommits());
// Finish the load, should stay resumed.
mainResource.finish();
- EXPECT_FALSE(layerTreeView.deferCommits());
+ EXPECT_FALSE(m_layerTreeView.deferCommits());
+}
+
+TEST_F(DocumentLoadingRenderingTest, ShouldResumeCommitsAfterParsingSvg)
+{
+ SimRequest mainResource("https://example.com/test.svg", "image/svg+xml");
+ SimRequest cssResource("https://example.com/test.css", "text/css");
+
+ loadURL("https://example.com/test.svg");
+
+ mainResource.start();
+
+ // Not done parsing.
+ mainResource.write("<?xml-stylesheet type='text/css' href='test.css'?>");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Sheet is streaming in, but not ready yet.
+ cssResource.start();
+ cssResource.write("a { color: red; }");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Root inserted, but sheet is still loading so don't resume.
+ mainResource.write("<svg>");
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Sheet finished, but no body since it's svg so don't resume.
+ cssResource.finish();
+ EXPECT_TRUE(m_layerTreeView.deferCommits());
+
+ // Finish the load and resume.
+ mainResource.finish();
+ EXPECT_FALSE(m_layerTreeView.deferCommits());
}
} // namespace blink
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698