OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <deque> | 5 #include <deque> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
857 "receivedPrerenderStartEvents[%d]))", index); | 857 "receivedPrerenderStartEvents[%d]))", index); |
858 | 858 |
859 CHECK(content::ExecuteJavaScriptAndExtractBool( | 859 CHECK(content::ExecuteJavaScriptAndExtractBool( |
860 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(), | 860 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(), |
861 "", | 861 "", |
862 expression, | 862 expression, |
863 &received_prerender_started)); | 863 &received_prerender_started)); |
864 return received_prerender_started; | 864 return received_prerender_started; |
865 } | 865 } |
866 | 866 |
| 867 bool DidReceivePrerenderLoadEventForLinkNumber(int index) const { |
| 868 bool received_prerender_loaded; |
| 869 std::string expression = base::StringPrintf( |
| 870 "window.domAutomationController.send(Boolean(" |
| 871 "receivedPrerenderLoadEvents[%d]))", index); |
| 872 |
| 873 CHECK(content::ExecuteJavaScriptAndExtractBool( |
| 874 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(), |
| 875 "", expression, |
| 876 &received_prerender_loaded)); |
| 877 return received_prerender_loaded; |
| 878 } |
| 879 |
867 bool DidReceivePrerenderStopEventForLinkNumber(int index) const { | 880 bool DidReceivePrerenderStopEventForLinkNumber(int index) const { |
868 bool received_prerender_stopped; | 881 bool received_prerender_stopped; |
869 std::string expression = base::StringPrintf( | 882 std::string expression = base::StringPrintf( |
870 "window.domAutomationController.send(Boolean(" | 883 "window.domAutomationController.send(Boolean(" |
871 "receivedPrerenderStopEvents[%d]))", index); | 884 "receivedPrerenderStopEvents[%d]))", index); |
872 | 885 |
873 CHECK(content::ExecuteJavaScriptAndExtractBool( | 886 CHECK(content::ExecuteJavaScriptAndExtractBool( |
874 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(), | 887 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(), |
875 "", | 888 "", |
876 expression, | 889 expression, |
877 &received_prerender_stopped)); | 890 &received_prerender_stopped)); |
878 return received_prerender_stopped; | 891 return received_prerender_stopped; |
879 } | 892 } |
880 | 893 |
| 894 bool HadPrerenderEventErrors() const { |
| 895 bool had_prerender_event_errors; |
| 896 CHECK(content::ExecuteJavaScriptAndExtractBool( |
| 897 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(), |
| 898 "", "window.domAutomationController.send(Boolean(" |
| 899 "hadPrerenderEventErrors))", &had_prerender_event_errors)); |
| 900 return had_prerender_event_errors; |
| 901 } |
| 902 |
881 // Asserting on this can result in flaky tests. PrerenderHandles are | 903 // Asserting on this can result in flaky tests. PrerenderHandles are |
882 // removed from the PrerenderLinkManager when the prerender is canceled from | 904 // removed from the PrerenderLinkManager when the prerender is canceled from |
883 // the browser, when the prerenders are cancelled from the renderer process, | 905 // the browser, when the prerenders are cancelled from the renderer process, |
884 // or the channel for the renderer process is closed on the IO thread. In the | 906 // or the channel for the renderer process is closed on the IO thread. In the |
885 // last case, the code must be careful to wait for the channel to close, as it | 907 // last case, the code must be careful to wait for the channel to close, as it |
886 // is done asynchronously after swapping out the old process. See | 908 // is done asynchronously after swapping out the old process. See |
887 // ChannelDestructionWatcher. | 909 // ChannelDestructionWatcher. |
888 bool IsEmptyPrerenderLinkManager() const { | 910 bool IsEmptyPrerenderLinkManager() const { |
889 return GetPrerenderLinkManager()->IsEmpty(); | 911 return GetPrerenderLinkManager()->IsEmpty(); |
890 } | 912 } |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1176 first_channel_close_watcher.WatchChannel( | 1198 first_channel_close_watcher.WatchChannel( |
1177 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); | 1199 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); |
1178 NavigateToDestURL(); | 1200 NavigateToDestURL(); |
1179 // NavigateToDestURL doesn't run a message loop. Normally that's fine, but in | 1201 // NavigateToDestURL doesn't run a message loop. Normally that's fine, but in |
1180 // this case, we need the pending prerenders to start. | 1202 // this case, we need the pending prerenders to start. |
1181 content::RunMessageLoop(); | 1203 content::RunMessageLoop(); |
1182 first_channel_close_watcher.WaitForChannelClose(); | 1204 first_channel_close_watcher.WaitForChannelClose(); |
1183 | 1205 |
1184 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1206 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1185 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1207 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
| 1208 EXPECT_FALSE(HadPrerenderEventErrors()); |
1186 | 1209 |
1187 const GURL prerender_page_url = | 1210 const GURL prerender_page_url = |
1188 test_server()->GetURL("files/prerender/prerender_page.html"); | 1211 test_server()->GetURL("files/prerender/prerender_page.html"); |
1189 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 1212 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
1190 EXPECT_NE(static_cast<TestPrerenderContents*>(NULL), | 1213 EXPECT_NE(static_cast<TestPrerenderContents*>(NULL), |
1191 GetPrerenderContentsFor(prerender_page_url)); | 1214 GetPrerenderContentsFor(prerender_page_url)); |
1192 | 1215 |
1193 // Now navigate to our target page. | 1216 // Now navigate to our target page. |
1194 ChannelDestructionWatcher second_channel_close_watcher; | 1217 ChannelDestructionWatcher second_channel_close_watcher; |
1195 second_channel_close_watcher.WatchChannel( | 1218 second_channel_close_watcher.WatchChannel( |
(...skipping 13 matching lines...) Expand all Loading... |
1209 FINAL_STATUS_USED, 1); | 1232 FINAL_STATUS_USED, 1); |
1210 | 1233 |
1211 ChannelDestructionWatcher channel_close_watcher; | 1234 ChannelDestructionWatcher channel_close_watcher; |
1212 channel_close_watcher.WatchChannel( | 1235 channel_close_watcher.WatchChannel( |
1213 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); | 1236 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); |
1214 NavigateToDestURL(); | 1237 NavigateToDestURL(); |
1215 channel_close_watcher.WaitForChannelClose(); | 1238 channel_close_watcher.WaitForChannelClose(); |
1216 | 1239 |
1217 EXPECT_FALSE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1240 EXPECT_FALSE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1218 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1241 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
| 1242 EXPECT_FALSE(HadPrerenderEventErrors()); |
1219 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* | 1243 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* |
1220 // calls did a thread/process hop to the renderer which insured pending | 1244 // calls did a thread/process hop to the renderer which insured pending |
1221 // renderer events have arrived. | 1245 // renderer events have arrived. |
1222 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); | 1246 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
1223 } | 1247 } |
1224 | 1248 |
1225 // Flaky, http://crbug.com/167340. | 1249 // Flaky, http://crbug.com/167340. |
1226 IN_PROC_BROWSER_TEST_F( | 1250 IN_PROC_BROWSER_TEST_F( |
1227 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLink) { | 1251 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLink) { |
1228 set_loader_path("files/prerender/prerender_loader_removing_links.html"); | 1252 set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
1229 set_loader_query_and_fragment("?links_to_insert=1"); | 1253 set_loader_query_and_fragment("?links_to_insert=1"); |
1230 PrerenderTestURL("files/prerender/prerender_page.html", | 1254 PrerenderTestURL("files/prerender/prerender_page.html", |
1231 FINAL_STATUS_CANCELLED, 1); | 1255 FINAL_STATUS_CANCELLED, 1); |
1232 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1256 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1233 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1257 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1234 | 1258 |
1235 // No ChannelDestructionWatcher is needed here, since prerenders in the | 1259 // No ChannelDestructionWatcher is needed here, since prerenders in the |
1236 // PrerenderLinkManager should be deleted by removing the links, rather than | 1260 // PrerenderLinkManager should be deleted by removing the links, rather than |
1237 // shutting down the renderer process. | 1261 // shutting down the renderer process. |
1238 RemoveLinkElement(0); | 1262 RemoveLinkElement(0); |
1239 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1263 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1240 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1264 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
| 1265 EXPECT_FALSE(HadPrerenderEventErrors()); |
1241 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* | 1266 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* |
1242 // calls did a thread/process hop to the renderer which insured pending | 1267 // calls did a thread/process hop to the renderer which insured pending |
1243 // renderer events have arrived. | 1268 // renderer events have arrived. |
1244 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1269 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1245 } | 1270 } |
1246 | 1271 |
1247 // Flaky, http://crbug.com/167340. | 1272 // Flaky, http://crbug.com/167340. |
1248 IN_PROC_BROWSER_TEST_F( | 1273 IN_PROC_BROWSER_TEST_F( |
1249 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLinkWithTwoLinks) { | 1274 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLinkWithTwoLinks) { |
1250 GetPrerenderManager()->mutable_config().max_link_concurrency = 2; | 1275 GetPrerenderManager()->mutable_config().max_link_concurrency = 2; |
1251 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2; | 1276 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2; |
1252 | 1277 |
1253 set_loader_path("files/prerender/prerender_loader_removing_links.html"); | 1278 set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
1254 set_loader_query_and_fragment("?links_to_insert=2"); | 1279 set_loader_query_and_fragment("?links_to_insert=2"); |
1255 PrerenderTestURL("files/prerender/prerender_page.html", | 1280 PrerenderTestURL("files/prerender/prerender_page.html", |
1256 FINAL_STATUS_CANCELLED, 1); | 1281 FINAL_STATUS_CANCELLED, 1); |
1257 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1282 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1258 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1283 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1259 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1284 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1260 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1285 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1261 | 1286 |
1262 RemoveLinkElement(0); | 1287 RemoveLinkElement(0); |
1263 RemoveLinkElement(1); | 1288 RemoveLinkElement(1); |
1264 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1289 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1265 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1290 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1266 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1291 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1267 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1292 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
| 1293 EXPECT_FALSE(HadPrerenderEventErrors()); |
1268 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* | 1294 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* |
1269 // calls did a thread/process hop to the renderer which insured pending | 1295 // calls did a thread/process hop to the renderer which insured pending |
1270 // renderer events have arrived. | 1296 // renderer events have arrived. |
1271 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1297 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1272 } | 1298 } |
1273 | 1299 |
1274 #if defined(OS_WIN) | 1300 #if defined(OS_WIN) |
1275 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841 | 1301 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841 |
1276 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ | 1302 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ |
1277 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne | 1303 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne |
(...skipping 13 matching lines...) Expand all Loading... |
1291 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1317 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1292 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1318 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1293 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1319 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1294 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1320 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1295 | 1321 |
1296 RemoveLinkElement(0); | 1322 RemoveLinkElement(0); |
1297 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1323 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1298 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1324 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1299 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1325 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1300 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1326 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
| 1327 EXPECT_FALSE(HadPrerenderEventErrors()); |
1301 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* | 1328 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* |
1302 // calls did a thread/process hop to the renderer which insured pending | 1329 // calls did a thread/process hop to the renderer which insured pending |
1303 // renderer events have arrived. | 1330 // renderer events have arrived. |
1304 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 1331 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
1305 | 1332 |
1306 ChannelDestructionWatcher channel_close_watcher; | 1333 ChannelDestructionWatcher channel_close_watcher; |
1307 channel_close_watcher.WatchChannel( | 1334 channel_close_watcher.WatchChannel( |
1308 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); | 1335 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); |
1309 NavigateToDestURL(); | 1336 NavigateToDestURL(); |
1310 channel_close_watcher.WaitForChannelClose(); | 1337 channel_close_watcher.WaitForChannelClose(); |
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2402 MessageLoop::current()->PostTask( | 2429 MessageLoop::current()->PostTask( |
2403 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); | 2430 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); |
2404 content::RunMessageLoop(); | 2431 content::RunMessageLoop(); |
2405 EXPECT_TRUE(GetPrerenderContents() == NULL); | 2432 EXPECT_TRUE(GetPrerenderContents() == NULL); |
2406 } | 2433 } |
2407 | 2434 |
2408 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEvents) { | 2435 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEvents) { |
2409 PrerenderTestURL("files/prerender/prerender_page.html", | 2436 PrerenderTestURL("files/prerender/prerender_page.html", |
2410 FINAL_STATUS_CANCELLED, 1); | 2437 FINAL_STATUS_CANCELLED, 1); |
2411 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 2438 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
| 2439 EXPECT_TRUE(DidReceivePrerenderLoadEventForLinkNumber(0)); |
2412 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 2440 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
2413 | 2441 |
2414 MessageLoop::current()->PostTask( | 2442 MessageLoop::current()->PostTask( |
2415 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); | 2443 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); |
2416 content::RunMessageLoop(); | 2444 content::RunMessageLoop(); |
2417 | 2445 |
2418 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 2446 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
2419 EXPECT_TRUE(DidReceivePrerenderStopEventForLinkNumber(0)); | 2447 EXPECT_TRUE(DidReceivePrerenderStopEventForLinkNumber(0)); |
| 2448 EXPECT_FALSE(HadPrerenderEventErrors()); |
| 2449 } |
| 2450 |
| 2451 // PrerenderBrowserTest.PrerenderEventsNoLoad may pass flakily on regression, |
| 2452 // so please be aggressive about filing bugs when this test is failing. |
| 2453 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEventsNoLoad) { |
| 2454 // This should be canceled. |
| 2455 PrerenderTestURL("files/prerender/prerender_http_auth_container.html", |
| 2456 FINAL_STATUS_AUTH_NEEDED, |
| 2457 1); |
| 2458 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
| 2459 EXPECT_FALSE(DidReceivePrerenderLoadEventForLinkNumber(0)); |
| 2460 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
| 2461 EXPECT_FALSE(HadPrerenderEventErrors()); |
2420 } | 2462 } |
2421 | 2463 |
2422 // Prerendering and history tests. | 2464 // Prerendering and history tests. |
2423 // The prerendered page is navigated to in several ways [navigate via | 2465 // The prerendered page is navigated to in several ways [navigate via |
2424 // omnibox, click on link, key-modified click to open in background tab, etc], | 2466 // omnibox, click on link, key-modified click to open in background tab, etc], |
2425 // followed by a navigation to another page from the prerendered page, followed | 2467 // followed by a navigation to another page from the prerendered page, followed |
2426 // by a back navigation. | 2468 // by a back navigation. |
2427 | 2469 |
2428 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) { | 2470 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) { |
2429 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 2471 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2649 channel_close_watcher.WatchChannel( | 2691 channel_close_watcher.WatchChannel( |
2650 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); | 2692 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); |
2651 NavigateToDestURL(); | 2693 NavigateToDestURL(); |
2652 channel_close_watcher.WaitForChannelClose(); | 2694 channel_close_watcher.WaitForChannelClose(); |
2653 | 2695 |
2654 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); | 2696 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
2655 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); | 2697 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
2656 } | 2698 } |
2657 | 2699 |
2658 } // namespace prerender | 2700 } // namespace prerender |
OLD | NEW |