summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--webkit/data/dom_serializer/dummy.exe0
-rw-r--r--webkit/data/dom_serializer/iframe-src-is-exe.htm8
-rw-r--r--webkit/glue/dom_serializer_unittest.cc14
3 files changed, 22 insertions, 0 deletions
diff --git a/webkit/data/dom_serializer/dummy.exe b/webkit/data/dom_serializer/dummy.exe
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/webkit/data/dom_serializer/dummy.exe
diff --git a/webkit/data/dom_serializer/iframe-src-is-exe.htm b/webkit/data/dom_serializer/iframe-src-is-exe.htm
new file mode 100644
index 0000000..ed32b12
--- /dev/null
+++ b/webkit/data/dom_serializer/iframe-src-is-exe.htm
@@ -0,0 +1,8 @@
+<html>
+<body>
+This tests that we can serialize a page that has a downloaded url in an iframe without crashing.
+
+<iframe src="dummy.exe"></iframe>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webkit/glue/dom_serializer_unittest.cc b/webkit/glue/dom_serializer_unittest.cc
index ce5be4d..a38d82f 100644
--- a/webkit/glue/dom_serializer_unittest.cc
+++ b/webkit/glue/dom_serializer_unittest.cc
@@ -836,4 +836,18 @@ TEST_F(DomSerializerTests, SerializeHTMLDOMWithEmptyHead) {
ASSERT_TRUE(std::string(text_node_contents.utf8()) == "hello world");
}
+// Test that we don't crash when the page contains an iframe that
+// was handled as a download (http://crbug.com/42212).
+TEST_F(DomSerializerTests, SerializeDocumentWithDownloadedIFrame) {
+ FilePath page_file_path = data_dir_;
+ page_file_path = page_file_path.AppendASCII("dom_serializer");
+ page_file_path = page_file_path.AppendASCII("iframe-src-is-exe.htm");
+ GURL file_url = net::FilePathToFileURL(page_file_path);
+ ASSERT_TRUE(file_url.SchemeIsFile());
+ // Load the test file.
+ LoadPageFromURL(file_url);
+ // Do a recursive serialization. We pass if we don't crash.
+ SerializeDomForURL(file_url, true);
+}
+
} // namespace