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

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

Issue 23506013: Make the embedder responsible for creating the WebFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add WebViewHelper for unittests. Created 7 years, 3 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) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 m_abandonedPrerenders.push_back(prerender); 170 m_abandonedPrerenders.push_back(prerender);
171 } 171 }
172 172
173 std::vector<WebPrerender> m_addedPrerenders; 173 std::vector<WebPrerender> m_addedPrerenders;
174 std::vector<WebPrerender> m_canceledPrerenders; 174 std::vector<WebPrerender> m_canceledPrerenders;
175 std::vector<WebPrerender> m_abandonedPrerenders; 175 std::vector<WebPrerender> m_abandonedPrerenders;
176 }; 176 };
177 177
178 class PrerenderingTest : public testing::Test { 178 class PrerenderingTest : public testing::Test {
179 public: 179 public:
180 PrerenderingTest() : m_webView(0)
181 {
182 }
183
184 ~PrerenderingTest() 180 ~PrerenderingTest()
185 { 181 {
186 Platform::current()->unitTestSupport()->unregisterAllMockedURLs(); 182 Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
187 if (m_webView)
188 close();
189 } 183 }
190 184
191 void initialize(const char* baseURL, const char* fileName) 185 void initialize(const char* baseURL, const char* fileName)
192 { 186 {
193 ASSERT(!m_webView);
194 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL ), WebString::fromUTF8(fileName)); 187 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL ), WebString::fromUTF8(fileName));
195 const bool RunJavascript = true; 188 const bool RunJavascript = true;
196 m_webView = FrameTestHelpers::createWebView(RunJavascript); 189 m_webViewHelper.initialize(RunJavascript);
197 m_webView->setPrerendererClient(&m_prerendererClient); 190 m_webViewHelper.webView()->setPrerendererClient(&m_prerendererClient);
198 191
199 FrameTestHelpers::loadFrame(m_webView->mainFrame(), std::string(baseURL) + fileName); 192 FrameTestHelpers::loadFrame(m_webViewHelper.webView()->mainFrame(), std: :string(baseURL) + fileName);
200 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests( ); 193 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests( );
201 } 194 }
202 195
203 void navigateAway() 196 void navigateAway()
204 { 197 {
205 FrameTestHelpers::loadFrame(m_webView->mainFrame(), "about:blank"); 198 FrameTestHelpers::loadFrame(m_webViewHelper.webView()->mainFrame(), "abo ut:blank");
206 } 199 }
207 200
208 void close() 201 void close()
209 { 202 {
210 ASSERT(m_webView); 203 m_webViewHelper.webView()->mainFrame()->collectGarbage();
211
212 m_webView->mainFrame()->collectGarbage();
213
214 m_webView->close();
215 m_webView = 0;
216 204
217 WebCache::clear(); 205 WebCache::clear();
218 } 206 }
219 207
220 WebElement console() 208 WebElement console()
221 { 209 {
222 WebElement console = m_webView->mainFrame()->document().getElementById(" console"); 210 WebElement console = m_webViewHelper.webView()->mainFrame()->document(). getElementById("console");
223 ASSERT(console.nodeName() == "UL"); 211 ASSERT(console.nodeName() == "UL");
224 return console; 212 return console;
225 } 213 }
226 214
227 unsigned consoleLength() 215 unsigned consoleLength()
228 { 216 {
229 return console().childNodes().length() - 1; 217 return console().childNodes().length() - 1;
230 } 218 }
231 219
232 std::string consoleAt(unsigned i) 220 std::string consoleAt(unsigned i)
233 { 221 {
234 ASSERT(consoleLength() > i); 222 ASSERT(consoleLength() > i);
235 223
236 WebNode consoleListItem = console().childNodes().item(1 + i); 224 WebNode consoleListItem = console().childNodes().item(1 + i);
237 ASSERT(consoleListItem.nodeName() == "LI"); 225 ASSERT(consoleListItem.nodeName() == "LI");
238 ASSERT(consoleListItem.hasChildNodes()); 226 ASSERT(consoleListItem.hasChildNodes());
239 227
240 WebNode textNode = consoleListItem.firstChild(); 228 WebNode textNode = consoleListItem.firstChild();
241 ASSERT(textNode.nodeName() == "#text"); 229 ASSERT(textNode.nodeName() == "#text");
242 230
243 return textNode.nodeValue().utf8().data(); 231 return textNode.nodeValue().utf8().data();
244 } 232 }
245 233
246 void executeScript(const char* code) 234 void executeScript(const char* code)
247 { 235 {
248 m_webView->mainFrame()->executeScript(WebScriptSource(WebString::fromUTF 8(code))); 236 m_webViewHelper.webView()->mainFrame()->executeScript(WebScriptSource(We bString::fromUTF8(code)));
249 } 237 }
250 238
251 TestPrerenderingSupport* prerenderingSupport() 239 TestPrerenderingSupport* prerenderingSupport()
252 { 240 {
253 return &m_prerenderingSupport; 241 return &m_prerenderingSupport;
254 } 242 }
255 243
256 TestPrerendererClient* prerendererClient() 244 TestPrerendererClient* prerendererClient()
257 { 245 {
258 return &m_prerendererClient; 246 return &m_prerendererClient;
259 } 247 }
260 248
261 private: 249 private:
262 TestPrerenderingSupport m_prerenderingSupport; 250 TestPrerenderingSupport m_prerenderingSupport;
263 TestPrerendererClient m_prerendererClient; 251 TestPrerendererClient m_prerendererClient;
264 252
265 WebView* m_webView; 253 FrameTestHelpers::WebViewHelper m_webViewHelper;
266 }; 254 };
267 255
268 TEST_F(PrerenderingTest, SinglePrerender) 256 TEST_F(PrerenderingTest, SinglePrerender)
269 { 257 {
270 initialize("http://www.foo.com/", "prerender/single_prerender.html"); 258 initialize("http://www.foo.com/", "prerender/single_prerender.html");
271 259
272 WebPrerender webPrerender = prerendererClient()->releaseWebPrerender(); 260 WebPrerender webPrerender = prerendererClient()->releaseWebPrerender();
273 EXPECT_FALSE(webPrerender.isNull()); 261 EXPECT_FALSE(webPrerender.isNull());
274 EXPECT_EQ(toWebURL("http://prerender.com/"), webPrerender.url()); 262 EXPECT_EQ(toWebURL("http://prerender.com/"), webPrerender.url());
275 263
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 EXPECT_EQ(0u, prerenderingSupport()->cancelCount(webPrerender)); 480 EXPECT_EQ(0u, prerenderingSupport()->cancelCount(webPrerender));
493 EXPECT_EQ(1u, prerenderingSupport()->totalCount()); 481 EXPECT_EQ(1u, prerenderingSupport()->totalCount());
494 482
495 // Change the rel of this prerender, make sure this is treated as a remove. 483 // Change the rel of this prerender, make sure this is treated as a remove.
496 executeScript("mutateRel()"); 484 executeScript("mutateRel()");
497 EXPECT_EQ(1u, prerenderingSupport()->cancelCount(webPrerender)); 485 EXPECT_EQ(1u, prerenderingSupport()->cancelCount(webPrerender));
498 EXPECT_EQ(2u, prerenderingSupport()->totalCount()); 486 EXPECT_EQ(2u, prerenderingSupport()->totalCount());
499 } 487 }
500 488
501 } // namespace 489 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698