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

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 10822030: Move ui_test_utils::RunMessageLoop to test_utils so that it can be reused by content_browsertests. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
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 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 string16 ready_title = ASCIIToUTF16(kReadyTitle); 261 string16 ready_title = ASCIIToUTF16(kReadyTitle);
262 ASSERT_EQ(ready_title, ready_title_watcher_->WaitAndGetTitle()); 262 ASSERT_EQ(ready_title, ready_title_watcher_->WaitAndGetTitle());
263 } 263 }
264 } 264 }
265 265
266 // Waits until the prerender has |expected_pending_prerenders| pending 266 // Waits until the prerender has |expected_pending_prerenders| pending
267 // prerenders. 267 // prerenders.
268 void WaitForPendingPrerenders(size_t expected_pending_prerenders) { 268 void WaitForPendingPrerenders(size_t expected_pending_prerenders) {
269 if (pending_prerenders().size() < expected_pending_prerenders) { 269 if (pending_prerenders().size() < expected_pending_prerenders) {
270 expected_pending_prerenders_ = expected_pending_prerenders; 270 expected_pending_prerenders_ = expected_pending_prerenders;
271 ui_test_utils::RunMessageLoop(); 271 content::RunMessageLoop();
272 expected_pending_prerenders_ = 0; 272 expected_pending_prerenders_ = 0;
273 } 273 }
274 274
275 EXPECT_EQ(expected_pending_prerenders, pending_prerenders().size()); 275 EXPECT_EQ(expected_pending_prerenders, pending_prerenders().size());
276 } 276 }
277 277
278 bool UrlIsPending(const GURL& url) const { 278 bool UrlIsPending(const GURL& url) const {
279 for (std::vector<PendingPrerenderInfo>::const_iterator 279 for (std::vector<PendingPrerenderInfo>::const_iterator
280 it = pending_prerenders().begin(), 280 it = pending_prerenders().begin(),
281 end = pending_prerenders().end(); 281 end = pending_prerenders().end();
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 &web_contents->GetController())); 903 &web_contents->GetController()));
904 904
905 // ui_test_utils::NavigateToURL uses its own observer and message loop. 905 // ui_test_utils::NavigateToURL uses its own observer and message loop.
906 // Since the test needs to wait until the prerendered page has stopped 906 // Since the test needs to wait until the prerendered page has stopped
907 // loading, rather than the page directly navigated to, need to 907 // loading, rather than the page directly navigated to, need to
908 // handle browser navigation directly. 908 // handle browser navigation directly.
909 current_browser()->OpenURL(OpenURLParams( 909 current_browser()->OpenURL(OpenURLParams(
910 loader_url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED, 910 loader_url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED,
911 false)); 911 false));
912 912
913 ui_test_utils::RunMessageLoop(); 913 content::RunMessageLoop();
914 // Now that we've run the prerender until it stopped loading, we can now 914 // Now that we've run the prerender until it stopped loading, we can now
915 // also make sure the launcher has finished loading. 915 // also make sure the launcher has finished loading.
916 loader_nav_observer.Wait(); 916 loader_nav_observer.Wait();
917 917
918 TestPrerenderContents* prerender_contents = GetPrerenderContents(); 918 TestPrerenderContents* prerender_contents = GetPrerenderContents();
919 919
920 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status)) { 920 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status)) {
921 ASSERT_TRUE(prerender_contents != NULL); 921 ASSERT_TRUE(prerender_contents != NULL);
922 EXPECT_EQ(FINAL_STATUS_MAX, prerender_contents->final_status()); 922 EXPECT_EQ(FINAL_STATUS_MAX, prerender_contents->final_status());
923 923
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 ASSERT_TRUE(prerender_contents != NULL); 1004 ASSERT_TRUE(prerender_contents != NULL);
1005 1005
1006 RenderViewHost* render_view_host = 1006 RenderViewHost* render_view_host =
1007 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(); 1007 chrome::GetActiveWebContents(current_browser())->GetRenderViewHost();
1008 1008
1009 render_view_host->ExecuteJavascriptInWebFrame( 1009 render_view_host->ExecuteJavascriptInWebFrame(
1010 string16(), ASCIIToUTF16(javascript_function_name)); 1010 string16(), ASCIIToUTF16(javascript_function_name));
1011 1011
1012 if (prerender_contents->quit_message_loop_on_destruction()) { 1012 if (prerender_contents->quit_message_loop_on_destruction()) {
1013 // Run message loop until the prerender contents is destroyed. 1013 // Run message loop until the prerender contents is destroyed.
1014 ui_test_utils::RunMessageLoop(); 1014 content::RunMessageLoop();
1015 } else { 1015 } else {
1016 // We don't expect to pick up a running prerender, so instead 1016 // We don't expect to pick up a running prerender, so instead
1017 // observe one navigation. 1017 // observe one navigation.
1018 content::TestNavigationObserver observer( 1018 content::TestNavigationObserver observer(
1019 content::NotificationService::AllSources(), NULL, 1); 1019 content::NotificationService::AllSources(), NULL, 1);
1020 base::RunLoop run_loop; 1020 base::RunLoop run_loop;
1021 observer.WaitForObservation( 1021 observer.WaitForObservation(
1022 base::Bind(&content::RunThisRunLoop, 1022 base::Bind(&content::RunThisRunLoop,
1023 base::Unretained(&run_loop)), 1023 base::Unretained(&run_loop)),
1024 content::GetQuitTaskForRunLoop(&run_loop)); 1024 content::GetQuitTaskForRunLoop(&run_loop));
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
1695 1695
1696 // Navigate to about:crash and then wait for the renderer to crash. 1696 // Navigate to about:crash and then wait for the renderer to crash.
1697 ASSERT_TRUE(GetPrerenderContents()); 1697 ASSERT_TRUE(GetPrerenderContents());
1698 ASSERT_TRUE(GetPrerenderContents()->prerender_contents()); 1698 ASSERT_TRUE(GetPrerenderContents()->prerender_contents());
1699 GetPrerenderContents()->prerender_contents()->web_contents()->GetController(). 1699 GetPrerenderContents()->prerender_contents()->web_contents()->GetController().
1700 LoadURL( 1700 LoadURL(
1701 GURL(chrome::kChromeUICrashURL), 1701 GURL(chrome::kChromeUICrashURL),
1702 content::Referrer(), 1702 content::Referrer(),
1703 content::PAGE_TRANSITION_TYPED, 1703 content::PAGE_TRANSITION_TYPED,
1704 std::string()); 1704 std::string());
1705 ui_test_utils::RunMessageLoop(); 1705 content::RunMessageLoop();
1706 } 1706 }
1707 1707
1708 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1708 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
1709 PrerenderPageWithFragment) { 1709 PrerenderPageWithFragment) {
1710 PrerenderTestURL("files/prerender/prerender_page.html#fragment", 1710 PrerenderTestURL("files/prerender/prerender_page.html#fragment",
1711 FINAL_STATUS_USED, 1711 FINAL_STATUS_USED,
1712 1); 1712 1);
1713 NavigateToDestURL(); 1713 NavigateToDestURL();
1714 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); 1714 ASSERT_TRUE(IsEmptyPrerenderLinkManager());
1715 } 1715 }
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
2127 PrerenderTestURL("files/prerender/prerender_page.html", 2127 PrerenderTestURL("files/prerender/prerender_page.html",
2128 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED, 2128 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED,
2129 1); 2129 1);
2130 2130
2131 // Post a task to clear the history, and run the message loop until it 2131 // Post a task to clear the history, and run the message loop until it
2132 // destroys the prerender. 2132 // destroys the prerender.
2133 MessageLoop::current()->PostTask( 2133 MessageLoop::current()->PostTask(
2134 FROM_HERE, 2134 FROM_HERE,
2135 base::Bind(&ClearBrowsingData, current_browser(), 2135 base::Bind(&ClearBrowsingData, current_browser(),
2136 BrowsingDataRemover::REMOVE_HISTORY)); 2136 BrowsingDataRemover::REMOVE_HISTORY));
2137 ui_test_utils::RunMessageLoop(); 2137 content::RunMessageLoop();
2138 2138
2139 // Make sure prerender history was cleared. 2139 // Make sure prerender history was cleared.
2140 EXPECT_EQ(0, GetHistoryLength()); 2140 EXPECT_EQ(0, GetHistoryLength());
2141 } 2141 }
2142 2142
2143 // Checks that when the cache is cleared, prerenders are cancelled but 2143 // Checks that when the cache is cleared, prerenders are cancelled but
2144 // prerendering history is not cleared. 2144 // prerendering history is not cleared.
2145 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearCache) { 2145 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearCache) {
2146 PrerenderTestURL("files/prerender/prerender_page.html", 2146 PrerenderTestURL("files/prerender/prerender_page.html",
2147 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED, 2147 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED,
2148 1); 2148 1);
2149 2149
2150 // Post a task to clear the cache, and run the message loop until it 2150 // Post a task to clear the cache, and run the message loop until it
2151 // destroys the prerender. 2151 // destroys the prerender.
2152 MessageLoop::current()->PostTask(FROM_HERE, 2152 MessageLoop::current()->PostTask(FROM_HERE,
2153 base::Bind(&ClearBrowsingData, current_browser(), 2153 base::Bind(&ClearBrowsingData, current_browser(),
2154 BrowsingDataRemover::REMOVE_CACHE)); 2154 BrowsingDataRemover::REMOVE_CACHE));
2155 ui_test_utils::RunMessageLoop(); 2155 content::RunMessageLoop();
2156 2156
2157 // Make sure prerender history was not cleared. Not a vital behavior, but 2157 // Make sure prerender history was not cleared. Not a vital behavior, but
2158 // used to compare with PrerenderClearHistory test. 2158 // used to compare with PrerenderClearHistory test.
2159 EXPECT_EQ(1, GetHistoryLength()); 2159 EXPECT_EQ(1, GetHistoryLength());
2160 } 2160 }
2161 2161
2162 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderCancelAll) { 2162 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderCancelAll) {
2163 PrerenderTestURL("files/prerender/prerender_page.html", 2163 PrerenderTestURL("files/prerender/prerender_page.html",
2164 FINAL_STATUS_CANCELLED, 2164 FINAL_STATUS_CANCELLED,
2165 1); 2165 1);
2166 // Post a task to cancel all the prerenders. 2166 // Post a task to cancel all the prerenders.
2167 MessageLoop::current()->PostTask( 2167 MessageLoop::current()->PostTask(
2168 FROM_HERE, 2168 FROM_HERE,
2169 base::Bind(&CancelAllPrerenders, GetPrerenderManager())); 2169 base::Bind(&CancelAllPrerenders, GetPrerenderManager()));
2170 ui_test_utils::RunMessageLoop(); 2170 content::RunMessageLoop();
2171 EXPECT_TRUE(GetPrerenderContents() == NULL); 2171 EXPECT_TRUE(GetPrerenderContents() == NULL);
2172 } 2172 }
2173 2173
2174 // Prerendering and history tests. 2174 // Prerendering and history tests.
2175 // The prerendered page is navigated to in several ways [navigate via 2175 // The prerendered page is navigated to in several ways [navigate via
2176 // omnibox, click on link, key-modified click to open in background tab, etc], 2176 // omnibox, click on link, key-modified click to open in background tab, etc],
2177 // followed by a navigation to another page from the prerendered page, followed 2177 // followed by a navigation to another page from the prerendered page, followed
2178 // by a back navigation. 2178 // by a back navigation.
2179 2179
2180 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) { 2180 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) {
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
2383 ResultCatcher catcher; 2383 ResultCatcher catcher;
2384 2384
2385 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); 2385 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
2386 NavigateToDestURL(); 2386 NavigateToDestURL();
2387 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); 2387 ASSERT_TRUE(IsEmptyPrerenderLinkManager());
2388 2388
2389 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); 2389 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
2390 } 2390 }
2391 2391
2392 } // namespace prerender 2392 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698