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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebPageSerializerTest.cpp

Issue 1415123002: Avoid image resource leaks in frame-related unit tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove redundant #include Created 5 years, 1 month 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) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 m_string += data; 61 m_string += data;
62 } 62 }
63 63
64 std::string m_string; 64 std::string m_string;
65 }; 65 };
66 66
67 } // namespace 67 } // namespace
68 68
69 class WebPageSerializerTest : public testing::Test { 69 class WebPageSerializerTest : public testing::Test {
70 public: 70 public:
71 WebPageSerializerTest() : m_supportedSchemes(static_cast<size_t>(3)) 71 WebPageSerializerTest()
72 : m_supportedSchemes(static_cast<size_t>(3))
72 { 73 {
73 m_supportedSchemes[0] = "http"; 74 m_supportedSchemes[0] = "http";
74 m_supportedSchemes[1] = "https"; 75 m_supportedSchemes[1] = "https";
75 m_supportedSchemes[2] = "file"; 76 m_supportedSchemes[2] = "file";
77
78 registerMockedImageURL("http://www.test.com/awesome.png");
76 } 79 }
77 80
78 protected: 81 protected:
79 void SetUp() override 82 void SetUp() override
80 { 83 {
81 m_helper.initialize(); 84 m_helper.initialize();
82 } 85 }
83 86
84 void TearDown() override 87 void TearDown() override
85 { 88 {
86 Platform::current()->unitTestSupport()->unregisterAllMockedURLs(); 89 Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
87 } 90 }
88 91
89 void registerMockedURLLoad(const std::string& url, const WebString& fileName ) 92 void registerMockedURLLoad(const std::string& url, const WebString& fileName )
90 { 93 {
91 URLTestHelpers::registerMockedURLLoad(toKURL(url), fileName, WebString:: fromUTF8("pageserialization/"), WebString::fromUTF8("text/html")); 94 URLTestHelpers::registerMockedURLLoad(toKURL(url), fileName, WebString:: fromUTF8("pageserialization/"), WebString::fromUTF8("text/html"));
92 } 95 }
93 96
97 void registerMockedImageURL(const std::string& url)
98 {
99 // Image resources need to be mocked, but irrelevant here what image the y map to.
100 URLTestHelpers::registerMockedURLLoad(toKURL(url), "pageserialization/aw esome.png");
101 }
102
94 void loadURLInTopFrame(const WebURL& url) 103 void loadURLInTopFrame(const WebURL& url)
95 { 104 {
96 FrameTestHelpers::loadFrame(m_helper.webView()->mainFrame(), url.string( ).utf8()); 105 FrameTestHelpers::loadFrame(m_helper.webView()->mainFrame(), url.string( ).utf8());
97 } 106 }
98 107
99 static bool webVectorContains(const WebVector<WebURL>& vector, const char* u rl) 108 static bool webVectorContains(const WebVector<WebURL>& vector, const char* u rl)
100 { 109 {
101 return vector.contains(WebURL(toKURL(std::string(url)))); 110 return vector.contains(WebURL(toKURL(std::string(url))));
102 } 111 }
103 112
(...skipping 11 matching lines...) Expand all
115 private: 124 private:
116 FrameTestHelpers::WebViewHelper m_helper; 125 FrameTestHelpers::WebViewHelper m_helper;
117 }; 126 };
118 127
119 TEST_F(WebPageSerializerTest, HTMLNodes) 128 TEST_F(WebPageSerializerTest, HTMLNodes)
120 { 129 {
121 // Register the mocked frame and load it. 130 // Register the mocked frame and load it.
122 WebURL topFrameURL = toKURL("http://www.test.com"); 131 WebURL topFrameURL = toKURL("http://www.test.com");
123 registerMockedURLLoad("http://www.test.com", WebString::fromUTF8("simple_pag e.html")); 132 registerMockedURLLoad("http://www.test.com", WebString::fromUTF8("simple_pag e.html"));
124 registerMockedURLLoad("http://www.example.com/beautifull.css", WebString::fr omUTF8("beautifull.css")); 133 registerMockedURLLoad("http://www.example.com/beautifull.css", WebString::fr omUTF8("beautifull.css"));
134
135 registerMockedImageURL("http://www.test.com/imageButton.png");
136 registerMockedImageURL("http://www.test.com/tableBackground.png");
137 registerMockedImageURL("http://www.test.com/trBackground.png");
138 registerMockedImageURL("http://www.test.com/tdBackground.png");
139 registerMockedImageURL("http://www.test.com/innerFrame.png");
140 registerMockedImageURL("http://www.test.com/bodyBackground.jpg");
141 registerMockedImageURL("https://www.secure.com/https.gif");
142 registerMockedImageURL("ftp://ftp.com/ftp.gif");
143 registerMockedImageURL("unknown://unkown.com/unknown.gif");
144
125 loadURLInTopFrame(topFrameURL); 145 loadURLInTopFrame(topFrameURL);
126 146
127 // Retrieve all resources. 147 // Retrieve all resources.
128 WebVector<WebURL> frames; 148 WebVector<WebURL> frames;
129 WebVector<WebURL> resources; 149 WebVector<WebURL> resources;
130 ASSERT_TRUE(WebPageSerializer::retrieveAllResources( 150 ASSERT_TRUE(WebPageSerializer::retrieveAllResources(
131 webView(), m_supportedSchemes, &resources, &frames)); 151 webView(), m_supportedSchemes, &resources, &frames));
132 152
133 // Tests that all resources from the frame have been retrieved. 153 // Tests that all resources from the frame have been retrieved.
134 EXPECT_EQ(1U, frames.size()); // There should be no duplicates. 154 EXPECT_EQ(1U, frames.size()); // There should be no duplicates.
(...skipping 13 matching lines...) Expand all
148 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/why_deleted.ht ml")); 168 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/why_deleted.ht ml"));
149 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/why_inserted.h tml")); 169 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/why_inserted.h tml"));
150 EXPECT_TRUE(webVectorContains(resources, "https://www.secure.com/https.gif") ); 170 EXPECT_TRUE(webVectorContains(resources, "https://www.secure.com/https.gif") );
151 EXPECT_TRUE(webVectorContains(resources, "file://c/my_folder/file.gif")); 171 EXPECT_TRUE(webVectorContains(resources, "file://c/my_folder/file.gif"));
152 } 172 }
153 173
154 TEST_F(WebPageSerializerTest, URLAttributeValues) 174 TEST_F(WebPageSerializerTest, URLAttributeValues)
155 { 175 {
156 WebURL topFrameURL = toKURL("http://www.test.com"); 176 WebURL topFrameURL = toKURL("http://www.test.com");
157 registerMockedURLLoad(topFrameURL.spec(), WebString::fromUTF8("url_attribute _values.html")); 177 registerMockedURLLoad(topFrameURL.spec(), WebString::fromUTF8("url_attribute _values.html"));
178 registerMockedImageURL("javascript:\"");
179
158 loadURLInTopFrame(topFrameURL); 180 loadURLInTopFrame(topFrameURL);
159 181
160 SimpleWebPageSerializerClient serializerClient; 182 SimpleWebPageSerializerClient serializerClient;
161 WebVector<WebURL> links(&topFrameURL, 1); 183 WebVector<WebURL> links(&topFrameURL, 1);
162 WebVector<WebString> localPaths(&"local", 1); 184 WebVector<WebString> localPaths(&"local", 1);
163 WebPageSerializer::serialize(webView()->mainFrame()->toWebLocalFrame(), &ser ializerClient, links, localPaths, ""); 185 WebPageSerializer::serialize(webView()->mainFrame()->toWebLocalFrame(), &ser ializerClient, links, localPaths, "");
164 186
165 const char* expectedHTML = 187 const char* expectedHTML =
166 "\n<!-- saved from url=(0020)http://www.test.com/ -->\n" 188 "\n<!-- saved from url=(0020)http://www.test.com/ -->\n"
167 "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; char set=UTF-8\"><meta charset=\"utf8\">\n" 189 "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; char set=UTF-8\"><meta charset=\"utf8\">\n"
(...skipping 22 matching lines...) Expand all
190 { 212 {
191 // Register the mocked frames. 213 // Register the mocked frames.
192 WebURL topFrameURL = toKURL("http://www.test.com"); 214 WebURL topFrameURL = toKURL("http://www.test.com");
193 registerMockedURLLoad("http://www.test.com", WebString::fromUTF8("top_frame. html")); 215 registerMockedURLLoad("http://www.test.com", WebString::fromUTF8("top_frame. html"));
194 registerMockedURLLoad("http://www.test.com/simple_iframe.html", 216 registerMockedURLLoad("http://www.test.com/simple_iframe.html",
195 WebString::fromUTF8("simple_iframe.html")); 217 WebString::fromUTF8("simple_iframe.html"));
196 registerMockedURLLoad("http://www.test.com/object_iframe.html", 218 registerMockedURLLoad("http://www.test.com/object_iframe.html",
197 WebString::fromUTF8("object_iframe.html")); 219 WebString::fromUTF8("object_iframe.html"));
198 registerMockedURLLoad("http://www.test.com/embed_iframe.html", 220 registerMockedURLLoad("http://www.test.com/embed_iframe.html",
199 WebString::fromUTF8("embed_iframe.html")); 221 WebString::fromUTF8("embed_iframe.html"));
200 // If we don't register a mocked resource for awesome.png, it causes the 222 registerMockedImageURL("http://www.test.com/innerFrame.png");
201 // document loader of the iframe that has it as its src to assert on close, 223 registerMockedImageURL("http://www.test.com/embed.png");
202 // not sure why. 224 registerMockedImageURL("http://www.test.com/object.png");
203 registerMockedURLLoad("http://www.test.com/awesome.png",
204 WebString::fromUTF8("awesome.png"));
205 225
206 loadURLInTopFrame(topFrameURL); 226 loadURLInTopFrame(topFrameURL);
207 227
208 // Retrieve all resources. 228 // Retrieve all resources.
209 WebVector<WebURL> frames; 229 WebVector<WebURL> frames;
210 WebVector<WebURL> resources; 230 WebVector<WebURL> resources;
211 ASSERT_TRUE(WebPageSerializer::retrieveAllResources( 231 ASSERT_TRUE(WebPageSerializer::retrieveAllResources(
212 webView(), m_supportedSchemes, &resources, &frames)); 232 webView(), m_supportedSchemes, &resources, &frames));
213 233
214 // Tests that all resources from the frame have been retrieved. 234 // Tests that all resources from the frame have been retrieved.
215 EXPECT_EQ(4U, frames.size()); // There should be no duplicates. 235 EXPECT_EQ(4U, frames.size()); // There should be no duplicates.
216 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com")); 236 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com"));
217 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com/simple_iframe.htm l")); 237 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com/simple_iframe.htm l"));
218 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com/object_iframe.htm l")); 238 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com/object_iframe.htm l"));
219 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com/embed_iframe.html ")); 239 EXPECT_TRUE(webVectorContains(frames, "http://www.test.com/embed_iframe.html "));
220 240
221 EXPECT_EQ(5U, resources.size()); // There should be no duplicates. 241 EXPECT_EQ(5U, resources.size()); // There should be no duplicates.
222 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/awesome.png")) ; 242 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/awesome.png")) ;
223 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/innerFrame.png ")); 243 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/innerFrame.png "));
224 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/flash.swf")); 244 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/flash.swf"));
225 // FIXME: for some reason the following resources is missing on one of the b ot 245 // FIXME: for some reason the following resources is missing on one of the b ot
226 // causing the test to fail. Probably a plugin issue. 246 // causing the test to fail. Probably a plugin issue.
227 // EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/music.mid") ); 247 // EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/music.mid") );
228 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/object.png")); 248 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/object.png"));
229 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/embed.png")); 249 EXPECT_TRUE(webVectorContains(resources, "http://www.test.com/embed.png"));
230 } 250 }
231 251
232 } // namespace blink 252 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/tests/WebFrameTest.cpp ('k') | third_party/WebKit/Source/web/tests/WebViewTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698