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

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: Fix lifetime on frame detach Created 7 years, 2 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
« no previous file with comments | « Source/web/tests/PageSerializerTest.cpp ('k') | Source/web/tests/ProgrammaticScrollTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 204 m_webViewHelper.reset();
212 m_webView->mainFrame()->collectGarbage();
213
214 m_webView->close();
215 m_webView = 0;
216 205
217 WebCache::clear(); 206 WebCache::clear();
218 } 207 }
219 208
220 WebElement console() 209 WebElement console()
221 { 210 {
222 WebElement console = m_webView->mainFrame()->document().getElementById(" console"); 211 WebElement console = m_webViewHelper.webView()->mainFrame()->document(). getElementById("console");
223 ASSERT(console.nodeName() == "UL"); 212 ASSERT(console.nodeName() == "UL");
224 return console; 213 return console;
225 } 214 }
226 215
227 unsigned consoleLength() 216 unsigned consoleLength()
228 { 217 {
229 return console().childNodes().length() - 1; 218 return console().childNodes().length() - 1;
230 } 219 }
231 220
232 std::string consoleAt(unsigned i) 221 std::string consoleAt(unsigned i)
233 { 222 {
234 ASSERT(consoleLength() > i); 223 ASSERT(consoleLength() > i);
235 224
236 WebNode consoleListItem = console().childNodes().item(1 + i); 225 WebNode consoleListItem = console().childNodes().item(1 + i);
237 ASSERT(consoleListItem.nodeName() == "LI"); 226 ASSERT(consoleListItem.nodeName() == "LI");
238 ASSERT(consoleListItem.hasChildNodes()); 227 ASSERT(consoleListItem.hasChildNodes());
239 228
240 WebNode textNode = consoleListItem.firstChild(); 229 WebNode textNode = consoleListItem.firstChild();
241 ASSERT(textNode.nodeName() == "#text"); 230 ASSERT(textNode.nodeName() == "#text");
242 231
243 return textNode.nodeValue().utf8().data(); 232 return textNode.nodeValue().utf8().data();
244 } 233 }
245 234
246 void executeScript(const char* code) 235 void executeScript(const char* code)
247 { 236 {
248 m_webView->mainFrame()->executeScript(WebScriptSource(WebString::fromUTF 8(code))); 237 m_webViewHelper.webView()->mainFrame()->executeScript(WebScriptSource(We bString::fromUTF8(code)));
249 } 238 }
250 239
251 TestPrerenderingSupport* prerenderingSupport() 240 TestPrerenderingSupport* prerenderingSupport()
252 { 241 {
253 return &m_prerenderingSupport; 242 return &m_prerenderingSupport;
254 } 243 }
255 244
256 TestPrerendererClient* prerendererClient() 245 TestPrerendererClient* prerendererClient()
257 { 246 {
258 return &m_prerendererClient; 247 return &m_prerendererClient;
259 } 248 }
260 249
261 private: 250 private:
262 TestPrerenderingSupport m_prerenderingSupport; 251 TestPrerenderingSupport m_prerenderingSupport;
263 TestPrerendererClient m_prerendererClient; 252 TestPrerendererClient m_prerendererClient;
264 253
265 WebView* m_webView; 254 FrameTestHelpers::WebViewHelper m_webViewHelper;
266 }; 255 };
267 256
268 TEST_F(PrerenderingTest, SinglePrerender) 257 TEST_F(PrerenderingTest, SinglePrerender)
269 { 258 {
270 initialize("http://www.foo.com/", "prerender/single_prerender.html"); 259 initialize("http://www.foo.com/", "prerender/single_prerender.html");
271 260
272 WebPrerender webPrerender = prerendererClient()->releaseWebPrerender(); 261 WebPrerender webPrerender = prerendererClient()->releaseWebPrerender();
273 EXPECT_FALSE(webPrerender.isNull()); 262 EXPECT_FALSE(webPrerender.isNull());
274 EXPECT_EQ(toWebURL("http://prerender.com/"), webPrerender.url()); 263 EXPECT_EQ(toWebURL("http://prerender.com/"), webPrerender.url());
275 264
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 EXPECT_EQ(0u, prerenderingSupport()->cancelCount(webPrerender)); 481 EXPECT_EQ(0u, prerenderingSupport()->cancelCount(webPrerender));
493 EXPECT_EQ(1u, prerenderingSupport()->totalCount()); 482 EXPECT_EQ(1u, prerenderingSupport()->totalCount());
494 483
495 // Change the rel of this prerender, make sure this is treated as a remove. 484 // Change the rel of this prerender, make sure this is treated as a remove.
496 executeScript("mutateRel()"); 485 executeScript("mutateRel()");
497 EXPECT_EQ(1u, prerenderingSupport()->cancelCount(webPrerender)); 486 EXPECT_EQ(1u, prerenderingSupport()->cancelCount(webPrerender));
498 EXPECT_EQ(2u, prerenderingSupport()->totalCount()); 487 EXPECT_EQ(2u, prerenderingSupport()->totalCount());
499 } 488 }
500 489
501 } // namespace 490 } // namespace
OLDNEW
« no previous file with comments | « Source/web/tests/PageSerializerTest.cpp ('k') | Source/web/tests/ProgrammaticScrollTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698