Index: chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc |
diff --git a/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc b/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc |
index fb7606c94d438b97f882c9d0fcef1fe2a101cfca..24c58ef9a6acd950d566e73f5f62e0f5225ad8ed 100644 |
--- a/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc |
+++ b/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc |
@@ -3,9 +3,7 @@ |
// found in the LICENSE file. |
#include "base/command_line.h" |
-#include "base/path_service.h" |
#include "base/process/process.h" |
-#include "base/test/test_timeouts.h" |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/devtools/devtools_window.h" |
#include "chrome/browser/search/search.h" |
@@ -25,8 +23,6 @@ |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_contents_observer.h" |
#include "content/public/test/browser_test_utils.h" |
-#include "net/base/filename_util.h" |
-#include "net/test/embedded_test_server/embedded_test_server.h" |
using content::RenderViewHost; |
using content::RenderWidgetHost; |
@@ -71,7 +67,7 @@ |
base::ProcessHandle out_handle; |
if (!::DuplicateHandle(GetCurrentProcess(), handle, GetCurrentProcess(), |
- &out_handle, 0, FALSE, DUPLICATE_SAME_ACCESS)) { |
+ &out_handle, 0, FALSE, DUPLICATE_SAME_ACCESS)) { |
return base::Process(); |
} |
handle = out_handle; |
@@ -101,13 +97,12 @@ |
// Loads the given url in a new background tab and returns the handle of its |
// renderer. |
base::Process OpenBackgroundTab(const GURL& page) { |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), page, NEW_BACKGROUND_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ ui_test_utils::NavigateToURLWithDisposition(browser(), page, |
+ NEW_BACKGROUND_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
TabStripModel* tab_strip = browser()->tab_strip_model(); |
- WebContents* wc = |
- tab_strip->GetWebContentsAt(tab_strip->active_index() + 1); |
+ WebContents* wc = tab_strip->GetWebContentsAt( |
+ tab_strip->active_index() + 1); |
CHECK(wc->GetVisibleURL() == page); |
WaitForLauncherThread(); |
@@ -220,6 +215,7 @@ |
} |
}; |
+ |
class ChromeRenderProcessHostTestWithCommandLine |
: public ChromeRenderProcessHostTest { |
protected: |
@@ -482,7 +478,9 @@ |
class WindowDestroyer : public content::WebContentsObserver { |
public: |
WindowDestroyer(content::WebContents* web_contents, TabStripModel* model) |
- : content::WebContentsObserver(web_contents), tab_strip_model_(model) {} |
+ : content::WebContentsObserver(web_contents), |
+ tab_strip_model_(model) { |
+ } |
void RenderProcessGone(base::TerminationStatus status) override { |
// Wait for the window to be destroyed, which will ensure all other |
@@ -533,152 +531,3 @@ |
observer.Wait(); |
} |
- |
-// Sets up the browser in order to start the tests with two tabs open: one |
-// called "no audio" in foreground and another called "audio" in background with |
-// audio in playing state. Also sets up the variables containing the process |
-// associated with each tab, the urls of the two pages and the WebContents of |
-// the "audio" page. |
-class ChromeRenderProcessHostBackgroundingTest |
- : public ChromeRenderProcessHostTest { |
- public: |
- ChromeRenderProcessHostBackgroundingTest() {} |
- |
- void SetUpCommandLine(base::CommandLine* command_line) override { |
- command_line->AppendSwitch(switches::kProcessPerTab); |
- } |
- |
- void SetUpOnMainThread() override { |
- ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
- |
- // Set up the server and get the test pages. |
- base::FilePath test_data_dir; |
- ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir)); |
- embedded_test_server()->ServeFilesFromDirectory( |
- test_data_dir.AppendASCII("chrome/test/data/")); |
- audio_url_ = embedded_test_server()->GetURL("/extensions/loop_audio.html"); |
- no_audio_url_ = embedded_test_server()->GetURL("/title1.html"); |
- |
- // Open a browser, navigate to the audio page and get its WebContents. |
- ui_test_utils::NavigateToURL(browser(), audio_url_); |
- audio_tab_web_contents_ = |
- browser()->tab_strip_model()->GetActiveWebContents(); |
- |
- // Create a new tab for the no audio page and confirm that the process of |
- // each tab is different and that both are valid. |
- audio_process_ = ProcessFromHandle( |
- audio_tab_web_contents_->GetRenderProcessHost()->GetHandle()); |
- no_audio_process_ = ShowSingletonTab(no_audio_url_); |
- ASSERT_NE(audio_process_.Pid(), no_audio_process_.Pid()); |
- ASSERT_TRUE(no_audio_process_.IsValid()); |
- ASSERT_TRUE(audio_process_.IsValid()); |
- } |
- |
- protected: |
- GURL audio_url_; |
- GURL no_audio_url_; |
- |
- base::Process audio_process_; |
- base::Process no_audio_process_; |
- |
- content::WebContents* audio_tab_web_contents_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(ChromeRenderProcessHostBackgroundingTest); |
-}; |
- |
-// Test to make sure that a process is backgrounded when the audio stops playing |
-// from the active tab and there is an immediate tab switch. |
-IN_PROC_BROWSER_TEST_F(ChromeRenderProcessHostBackgroundingTest, |
- ProcessPriorityAfterStoppedAudio) { |
- // This test is invalid on platforms that can't background. |
- if (!base::Process::CanBackgroundProcesses()) |
- return; |
- |
- ShowSingletonTab(audio_url_); |
- |
- // Wait until the no audio page is backgrounded and the audio page is not |
- // backgrounded. |
- while (!no_audio_process_.IsProcessBackgrounded() || |
- audio_process_.IsProcessBackgrounded()) { |
- base::RunLoop().RunUntilIdle(); |
- base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
- } |
- |
- // Pause the audio and immediately switch to the no audio tab. |
- ASSERT_TRUE(content::ExecuteScript( |
- audio_tab_web_contents_, |
- "document.getElementById('audioPlayer').pause();")); |
- ShowSingletonTab(no_audio_url_); |
- |
- // Wait until the no audio page is not backgrounded and the audio page is |
- // backgrounded. |
- while (no_audio_process_.IsProcessBackgrounded() || |
- !audio_process_.IsProcessBackgrounded()) { |
- base::RunLoop().RunUntilIdle(); |
- base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
- } |
-} |
- |
-// Test to make sure that a process is backgrounded automatically when audio |
-// stops playing from a hidden tab. |
-IN_PROC_BROWSER_TEST_F(ChromeRenderProcessHostBackgroundingTest, |
- ProcessPriorityAfterAudioStopsOnNotVisibleTab) { |
- // This test is invalid on platforms that can't background. |
- if (!base::Process::CanBackgroundProcesses()) |
- return; |
- |
- // Wait until the two pages are not backgrounded. |
- while (no_audio_process_.IsProcessBackgrounded() || |
- audio_process_.IsProcessBackgrounded()) { |
- base::RunLoop().RunUntilIdle(); |
- base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
- } |
- |
- // Stop the audio. |
- ASSERT_TRUE(content::ExecuteScript( |
- audio_tab_web_contents_, |
- "document.getElementById('audioPlayer').pause();")); |
- |
- // Wait until the no audio page is not backgrounded and the audio page is |
- // backgrounded. |
- while (no_audio_process_.IsProcessBackgrounded() || |
- !audio_process_.IsProcessBackgrounded()) { |
- base::RunLoop().RunUntilIdle(); |
- base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
- } |
-} |
- |
-// Test to make sure that a process is un-backgrounded automatically when audio |
-// starts playing from a backgrounded tab. |
-IN_PROC_BROWSER_TEST_F(ChromeRenderProcessHostBackgroundingTest, |
- ProcessPriorityAfterAudioStartsFromBackgroundTab) { |
- // This test is invalid on platforms that can't background. |
- if (!base::Process::CanBackgroundProcesses()) |
- return; |
- |
- // Stop the audio. |
- ASSERT_TRUE(content::ExecuteScript( |
- audio_tab_web_contents_, |
- "document.getElementById('audioPlayer').pause();")); |
- |
- // Wait until the no audio page is not backgrounded and the audio page is |
- // backgrounded. |
- while (no_audio_process_.IsProcessBackgrounded() || |
- !audio_process_.IsProcessBackgrounded()) { |
- base::RunLoop().RunUntilIdle(); |
- base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
- } |
- |
- // Start the audio from the backgrounded tab. |
- ASSERT_TRUE( |
- content::ExecuteScript(audio_tab_web_contents_, |
- "document.getElementById('audioPlayer').play();")); |
- |
- // Wait until the two pages are not backgrounded. |
- while (no_audio_process_.IsProcessBackgrounded() || |
- audio_process_.IsProcessBackgrounded()) { |
- base::RunLoop().RunUntilIdle(); |
- base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
- } |
-} |