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

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

Issue 275433011: Regression(r169412): Fix serialization of frame / iframe (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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 | « Source/core/html/HTMLFrameElementBase.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/web/tests/WebPageNewSerializerTest.cpp
diff --git a/Source/web/tests/WebPageNewSerializerTest.cpp b/Source/web/tests/WebPageNewSerializerTest.cpp
index 814b73b5871feef1aaafde631cfc96904536f46a..6b9488c73b5cc89ceaaeac908b74b34823991651 100644
--- a/Source/web/tests/WebPageNewSerializerTest.cpp
+++ b/Source/web/tests/WebPageNewSerializerTest.cpp
@@ -96,6 +96,26 @@ private:
size_t* m_counter;
};
+class FrameDataWebPageSerializerClient : public WebPageSerializerClient {
+public:
+ FrameDataWebPageSerializerClient(const WebURL& frameURL, WebString* serializationData)
+ : m_frameURL(frameURL)
+ , m_serializationData(serializationData)
+ {
+ }
+
+ virtual void didSerializeDataForFrame(const WebURL& frameURL, const WebCString& data, PageSerializationStatus status)
+ {
+ if (frameURL != m_frameURL)
+ return;
+ *m_serializationData = data.utf16();
+ }
+
+private:
+ WebURL m_frameURL;
+ WebString* m_serializationData;
+};
+
class WebPageNewSerializeTest : public testing::Test {
public:
WebPageNewSerializeTest()
@@ -414,6 +434,44 @@ TEST_F(WebPageNewSerializeTest, NamespaceElementsDontCrash)
EXPECT_GT(counter, 0U);
}
+TEST_F(WebPageNewSerializeTest, SubFrameSerialization)
+{
+ WebURL pageUrl = toKURL("http://www.test.com");
+ registerMockedURLLoad(pageUrl, WebString::fromUTF8("top_frame.html"), WebString::fromUTF8("pageserializer/"), htmlMimeType());
+ registerMockedURLLoad(toKURL("http://www.test.com/iframe.html"), WebString::fromUTF8("iframe.html"), WebString::fromUTF8("pageserializer/"), htmlMimeType());
+ registerMockedURLLoad(toKURL("http://www.test.com/iframe2.html"), WebString::fromUTF8("iframe2.html"), WebString::fromUTF8("pageserializer/"), htmlMimeType());
+ registerMockedURLLoad(toKURL("http://www.test.com/red_background.png"), WebString::fromUTF8("red_background.png"), WebString::fromUTF8("pageserializer/"), pngMimeType());
+ registerMockedURLLoad(toKURL("http://www.test.com/green_background.png"), WebString::fromUTF8("green_background.png"), WebString::fromUTF8("pageserializer/"), pngMimeType());
+ registerMockedURLLoad(toKURL("http://www.test.com/blue_background.png"), WebString::fromUTF8("blue_background.png"), WebString::fromUTF8("pageserializer/"), pngMimeType());
+
+ loadURLInTopFrame(pageUrl);
+
+ // OBJECT/EMBED have some delay to start to load their content. The first
+ // serveAsynchronousMockedRequests call in loadURLInTopFrame() finishes
+ // before the start.
+ RefPtrWillBeRawPtr<Document> document = static_cast<PassRefPtrWillBeRawPtr<Document> >(webView()->mainFrame()->document());
+ document->updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasksSynchronously);
+ Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
+
+ WebVector<WebURL> localLinks(static_cast<size_t>(2));
+ WebVector<WebString> localPaths(static_cast<size_t>(2));
+ localLinks[0] = pageUrl;
+ localPaths[0] = WebString("/");
+ localLinks[1] = toKURL("http://www.test.com/iframe.html");
+ localPaths[1] = WebString("SavedFiles/iframe.html");
+
+ WebString serializedData;
+ FrameDataWebPageSerializerClient client(pageUrl, &serializedData);
+
+ // We just want to make sure nothing crazy happens, namely that no
+ // assertions are hit. As a sanity check, we also make sure that some data
+ // was returned.
+ WebPageSerializer::serialize(webView()->mainFrame()->toWebLocalFrame(), true, &client, localLinks, localPaths, WebString(""));
+
+ // Subframe src
+ EXPECT_TRUE(static_cast<String>(serializedData).contains("src=\"SavedFiles/iframe.html\""));
+}
+
}
TEST_F(WebPageNewSerializeTest, TestMHTMLEncodingWithDataURL)
« no previous file with comments | « Source/core/html/HTMLFrameElementBase.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698