Index: chrome/browser/prerender/prerender_browsertest.cc |
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc |
index 8b5ac6200d2c48b431901baf5915ff073d70a3b7..8793754086e4bbba9220124867be3dd794b224c8 100644 |
--- a/chrome/browser/prerender/prerender_browsertest.cc |
+++ b/chrome/browser/prerender/prerender_browsertest.cc |
@@ -580,7 +580,8 @@ class RestorePrerenderMode { |
class PrerenderBrowserTest : virtual public InProcessBrowserTest { |
public: |
PrerenderBrowserTest() |
- : prerender_contents_factory_(NULL), |
+ : autostart_test_server_(true), |
+ prerender_contents_factory_(NULL), |
#if defined(FULL_SAFE_BROWSING) |
safe_browsing_factory_(new TestSafeBrowsingServiceFactory()), |
#endif |
@@ -624,7 +625,8 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest { |
current_browser()->profile()->GetPrefs()->SetBoolean( |
prefs::kPromptForDownload, false); |
IncreasePrerenderMemory(); |
- ASSERT_TRUE(test_server()->Start()); |
+ if (autostart_test_server_) |
+ ASSERT_TRUE(test_server()->Start()); |
} |
// Overload for a single expected final status |
@@ -977,6 +979,9 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest { |
GetPrerenderManager()->mutable_config().max_bytes = 1000 * 1024 * 1024; |
} |
+ protected: |
+ bool autostart_test_server_; |
+ |
private: |
void PrerenderTestURLImpl( |
const GURL& prerender_url, |
@@ -2642,11 +2647,13 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) { |
NavigateToDestURL(); |
} |
-// Test interaction of the webNavigation API with prerender. |
+// Test interaction of the webNavigation and tabs API with prerender. |
class PrerenderBrowserTestWithExtensions : public PrerenderBrowserTest, |
public ExtensionApiTest { |
public: |
- PrerenderBrowserTestWithExtensions() {} |
+ PrerenderBrowserTestWithExtensions() { |
+ autostart_test_server_ = false; |
+ } |
virtual ~PrerenderBrowserTestWithExtensions() {} |
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
@@ -2670,9 +2677,6 @@ class PrerenderBrowserTestWithExtensions : public PrerenderBrowserTest, |
}; |
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithExtensions, WebNavigation) { |
- // PrerenderBrowserTest automatically started a test server. Restart it, so |
- // ExtensionApiTest can register its test parameters. |
- test_server()->Stop(); |
gavinp
2013/01/07 20:36:26
Nice change. Thank you! I like making tests faster
|
ASSERT_TRUE(StartTestServer()); |
extensions::FrameNavigationState::set_allow_extension_scheme(true); |
@@ -2697,4 +2701,26 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithExtensions, WebNavigation) { |
ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
} |
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithExtensions, TabsApi) { |
+ ASSERT_TRUE(StartTestServer()); |
+ extensions::FrameNavigationState::set_allow_extension_scheme(true); |
+ |
+ // Wait for the extension to set itself up and return control to us. |
+ ASSERT_TRUE(RunExtensionSubtest("tabs/on_replaced", "on_replaced.html")) |
+ << message_; |
+ |
+ ResultCatcher catcher; |
+ |
+ PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
+ |
+ ChannelDestructionWatcher channel_close_watcher; |
+ channel_close_watcher.WatchChannel( |
+ chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); |
+ NavigateToDestURL(); |
+ channel_close_watcher.WaitForChannelClose(); |
+ |
+ ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
+ ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
+} |
+ |
} // namespace prerender |