Chromium Code Reviews| Index: chrome/browser/browser_uitest.cc |
| =================================================================== |
| --- chrome/browser/browser_uitest.cc (revision 9891) |
| +++ chrome/browser/browser_uitest.cc (working copy) |
| @@ -4,6 +4,7 @@ |
| #include "base/file_util.h" |
| #include "base/string_util.h" |
| +#include "base/sys_info.h" |
| #include "base/values.h" |
| #include "chrome/app/chrome_dll_resource.h" |
| #include "chrome/common/chrome_constants.h" |
| @@ -85,6 +86,35 @@ |
| EXPECT_EQ(test_title, GetActiveTabTitle()); |
| } |
| +// Create 34 tabs and verify that a lot of processes have been created. The |
| +// exact number of processes depends on the amount of memory. Previously we |
| +// had a hard limit of 31 processes and this test is mainly directed at |
| +// verifying that we don't crash when we pass this limit. |
| +TEST_F(BrowserTest, ThirtyFourTabs) { |
| + std::wstring test_file = test_data_directory_; |
| + file_util::AppendToPath(&test_file, L"title2.html"); |
| + GURL url(net::FilePathToFileURL(test_file)); |
| + scoped_ptr<BrowserProxy> window(automation()->GetBrowserWindow(0)); |
| + // There is one initial tab. |
| + for (int ix = 0; ix != 33; ++ix) { |
| + EXPECT_TRUE(window->AppendTab(url)); |
| + } |
| + int tab_count = 0; |
| + EXPECT_TRUE(window->GetTabCount(&tab_count)); |
| + EXPECT_EQ(34, tab_count); |
| + // Do not test the rest in single process mode. |
| + if (in_process_renderer()) |
| + return; |
|
M-A Ruel
2009/02/19 12:33:56
nit: Why not EXPECT_EQ(process_count, 0); ?
|
| + // See browser\renderer_host\render_process_host.cc for the algorithm to |
| + // decide how many processes to create. |
| + int process_count = GetBrowserProcessCount(); |
| + if (base::SysInfo::AmountOfPhysicalMemoryMB() >= 2048) { |
| + EXPECT_GE(process_count, 24); |
| + } else { |
| + EXPECT_LE(process_count, 22); |
| + } |
| +} |
| + |
| // The browser should quit quickly if it receives a WM_ENDSESSION message. |
| TEST_F(BrowserTest, WindowsSessionEnd) { |
| std::wstring test_file = test_data_directory_; |