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

Side by Side Diff: Source/web/tests/PageSerializerTest.cpp

Issue 1177733002: Merge page serializers [11/12] (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase + issues Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Opera Software ASA. All rights reserved. 2 * Copyright (c) 2013, Opera Software ASA. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 void TearDown() override 73 void TearDown() override
74 { 74 {
75 Platform::current()->unitTestSupport()->unregisterAllMockedURLs(); 75 Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
76 } 76 }
77 77
78 void setBaseFolder(const char* folder) 78 void setBaseFolder(const char* folder)
79 { 79 {
80 m_folder = WebString::fromUTF8(folder); 80 m_folder = WebString::fromUTF8(folder);
81 } 81 }
82 82
83 void setRewriteURLFolder(const char* folder)
84 {
85 m_rewriteFolder = folder;
86 }
87
83 void registerURL(const char* url, const char* file, const char* mimeType) 88 void registerURL(const char* url, const char* file, const char* mimeType)
84 { 89 {
85 registerMockedURLLoad(KURL(m_baseUrl, url), WebString::fromUTF8(file), m _folder, WebString::fromUTF8(mimeType)); 90 registerMockedURLLoad(KURL(m_baseUrl, url), WebString::fromUTF8(file), m _folder, WebString::fromUTF8(mimeType));
86 } 91 }
87 92
88 void registerURL(const char* file, const char* mimeType) 93 void registerURL(const char* file, const char* mimeType)
89 { 94 {
90 registerURL(file, file, mimeType); 95 registerURL(file, file, mimeType);
91 } 96 }
92 97
93 void registerErrorURL(const char* file, int statusCode) 98 void registerErrorURL(const char* file, int statusCode)
94 { 99 {
95 WebURLError error; 100 WebURLError error;
96 error.reason = 0xdead + statusCode; 101 error.reason = 0xdead + statusCode;
97 error.domain = "PageSerializerTest"; 102 error.domain = "PageSerializerTest";
98 103
99 WebURLResponse response; 104 WebURLResponse response;
100 response.initialize(); 105 response.initialize();
101 response.setMIMEType("text/html"); 106 response.setMIMEType("text/html");
102 response.setHTTPStatusCode(statusCode); 107 response.setHTTPStatusCode(statusCode);
103 108
104 Platform::current()->unitTestSupport()->registerMockedErrorURL(KURL(m_ba seUrl, file), response, error); 109 Platform::current()->unitTestSupport()->registerMockedErrorURL(KURL(m_ba seUrl, file), response, error);
105 } 110 }
106 111
112 void registerRewriteURL(const char* fromURL, const char* toURL)
113 {
114 m_rewriteURLs.add(fromURL, toURL);
115 }
116
107 void serialize(const char* url) 117 void serialize(const char* url)
108 { 118 {
109 FrameTestHelpers::loadFrame(m_helper.webView()->mainFrame(), KURL(m_base Url, url).string().utf8().data()); 119 FrameTestHelpers::loadFrame(m_helper.webView()->mainFrame(), KURL(m_base Url, url).string().utf8().data());
110 PageSerializer serializer(&m_resources, nullptr); 120 PageSerializer serializer(&m_resources, nullptr);
121
122 serializer.setRewriteURLFolder(m_rewriteFolder);
123 for (const auto& rewriteURL: m_rewriteURLs)
124 serializer.registerRewriteURL(rewriteURL.key, rewriteURL.value);
125
111 serializer.serialize(m_helper.webViewImpl()->mainFrameImpl()->frame()->p age()); 126 serializer.serialize(m_helper.webViewImpl()->mainFrameImpl()->frame()->p age());
112 } 127 }
113 128
114 Vector<SerializedResource>& getResources() 129 Vector<SerializedResource>& getResources()
115 { 130 {
116 return m_resources; 131 return m_resources;
117 } 132 }
118 133
119 134
120 const SerializedResource* getResource(const char* url, const char* mimeType) 135 const SerializedResource* getResource(const char* url, const char* mimeType)
(...skipping 27 matching lines...) Expand all
148 { 163 {
149 settings->setImagesEnabled(true); 164 settings->setImagesEnabled(true);
150 settings->setLoadsImagesAutomatically(true); 165 settings->setLoadsImagesAutomatically(true);
151 settings->setJavaScriptEnabled(true); 166 settings->setJavaScriptEnabled(true);
152 } 167 }
153 168
154 FrameTestHelpers::WebViewHelper m_helper; 169 FrameTestHelpers::WebViewHelper m_helper;
155 WebString m_folder; 170 WebString m_folder;
156 KURL m_baseUrl; 171 KURL m_baseUrl;
157 Vector<SerializedResource> m_resources; 172 Vector<SerializedResource> m_resources;
173 HashMap<String, String> m_rewriteURLs;
174 String m_rewriteFolder;
158 }; 175 };
159 176
160 TEST_F(PageSerializerTest, HTMLElements) 177 TEST_F(PageSerializerTest, HTMLElements)
161 { 178 {
162 setBaseFolder("pageserializer/elements/"); 179 setBaseFolder("pageserializer/elements/");
163 180
164 registerURL("elements.html", "text/html"); 181 registerURL("elements.html", "text/html");
165 registerURL("style.css", "style.css", "text/css"); 182 registerURL("style.css", "style.css", "text/css");
166 registerURL("copyright.html", "empty.txt", "text/html"); 183 registerURL("copyright.html", "empty.txt", "text/html");
167 registerURL("script.js", "empty.txt", "text/javascript"); 184 registerURL("script.js", "empty.txt", "text/javascript");
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 setBaseFolder("pageserializer/datauri/"); 400 setBaseFolder("pageserializer/datauri/");
384 401
385 registerURL("page_with_morphing_data.html", "text/html"); 402 registerURL("page_with_morphing_data.html", "text/html");
386 403
387 serialize("page_with_morphing_data.html"); 404 serialize("page_with_morphing_data.html");
388 405
389 EXPECT_EQ(2U, getResources().size()); 406 EXPECT_EQ(2U, getResources().size());
390 EXPECT_TRUE(isSerialized("page_with_morphing_data.html", "text/html")); 407 EXPECT_TRUE(isSerialized("page_with_morphing_data.html", "text/html"));
391 } 408 }
392 409
410 TEST_F(PageSerializerTest, RewriteLinksSimple)
411 {
412 setBaseFolder("pageserializer/rewritelinks/");
413 setRewriteURLFolder("folder");
414
415 registerURL("rewritelinks_simple.html", "text/html");
416 registerURL("absolute.png", "image.png", "image/png");
417 registerURL("relative.png", "image.png", "image/png");
418 registerRewriteURL("http://www.test.com/absolute.png", "a.png");
419 registerRewriteURL("http://www.test.com/relative.png", "b.png");
420
421 serialize("rewritelinks_simple.html");
422
423 EXPECT_EQ(3U, getResources().size());
424 EXPECT_NE(getSerializedData("rewritelinks_simple.html", "text/html").find("\ "folder/a.png\""), kNotFound);
425 EXPECT_NE(getSerializedData("rewritelinks_simple.html", "text/html").find("\ "folder/b.png\""), kNotFound);
426 }
427
428 TEST_F(PageSerializerTest, RewriteLinksBase)
429 {
430 setBaseFolder("pageserializer/rewritelinks/");
431 setRewriteURLFolder("folder");
432
433 registerURL("rewritelinks_base.html", "text/html");
434 registerURL("images/here/image.png", "image.png", "image/png");
435 registerURL("images/here/or/in/here/image.png", "image.png", "image/png");
436 registerURL("or/absolute.png", "image.png", "image/png");
437 registerRewriteURL("http://www.test.com/images/here/image.png", "a.png");
438 registerRewriteURL("http://www.test.com/images/here/or/in/here/image.png", " b.png");
439 registerRewriteURL("http://www.test.com/or/absolute.png", "c.png");
440
441 serialize("rewritelinks_base.html");
442
443 EXPECT_EQ(4U, getResources().size());
444 EXPECT_NE(getSerializedData("rewritelinks_base.html", "text/html").find("\"f older/a.png\""), kNotFound);
445 EXPECT_NE(getSerializedData("rewritelinks_base.html", "text/html").find("\"f older/b.png\""), kNotFound);
446 EXPECT_NE(getSerializedData("rewritelinks_base.html", "text/html").find("\"f older/c.png\""), kNotFound);
447 }
448
393 // Test that we don't regress https://bugs.webkit.org/show_bug.cgi?id=99105 449 // Test that we don't regress https://bugs.webkit.org/show_bug.cgi?id=99105
394 TEST_F(PageSerializerTest, SVGImageDontCrash) 450 TEST_F(PageSerializerTest, SVGImageDontCrash)
395 { 451 {
396 setBaseFolder("pageserializer/svg/"); 452 setBaseFolder("pageserializer/svg/");
397 453
398 registerURL("page_with_svg_image.html", "text/html"); 454 registerURL("page_with_svg_image.html", "text/html");
399 registerURL("green_rectangle.svg", "image/svg+xml"); 455 registerURL("green_rectangle.svg", "image/svg+xml");
400 456
401 serialize("page_with_svg_image.html"); 457 serialize("page_with_svg_image.html");
402 458
(...skipping 24 matching lines...) Expand all
427 registerURL("namespace_element.html", "text/html"); 483 registerURL("namespace_element.html", "text/html");
428 484
429 serialize("namespace_element.html"); 485 serialize("namespace_element.html");
430 486
431 EXPECT_EQ(1U, getResources().size()); 487 EXPECT_EQ(1U, getResources().size());
432 EXPECT_TRUE(isSerialized("namespace_element.html", "text/html")); 488 EXPECT_TRUE(isSerialized("namespace_element.html", "text/html"));
433 EXPECT_GT(getSerializedData("namespace_element.html", "text/html").length(), 0U); 489 EXPECT_GT(getSerializedData("namespace_element.html", "text/html").length(), 0U);
434 } 490 }
435 491
436 } // namespace blink 492 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698