Index: chrome/browser/browser_browsertest.cc |
diff --git a/chrome/browser/browser_browsertest.cc b/chrome/browser/browser_browsertest.cc |
index f2098378a90026f5c0fcda42de3132b2ff944098..21750e19453c4c3049d35cd6e18116b3de09d692 100644 |
--- a/chrome/browser/browser_browsertest.cc |
+++ b/chrome/browser/browser_browsertest.cc |
@@ -5,6 +5,7 @@ |
#include <string> |
#include "app/l10n_util.h" |
+#include "base/sys_info.h" |
#include "chrome/browser/app_modal_dialog.h" |
#include "chrome/browser/browser.h" |
#include "chrome/browser/browser_process.h" |
@@ -98,3 +99,26 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, JavascriptAlertActivatesTab) { |
EXPECT_EQ(2, browser()->tab_count()); |
EXPECT_EQ(1, browser()->selected_index()); |
} |
+ |
+// 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. |
+IN_PROC_BROWSER_TEST_F(BrowserTest, ThirtyFourTabs) { |
+ GURL url(ui_test_utils::GetTestUrl(L".", L"title2.html")); |
+ |
+ // There is one initial tab. |
+ for (int ix = 0; ix != 33; ++ix) { |
+ browser()->AddTabWithURL(url, GURL(), PageTransition::TYPED, |
+ true, 0, false, NULL); |
+ } |
+ EXPECT_EQ(34, browser()->tab_count()); |
+ |
+ // See browser\renderer_host\render_process_host.cc for the algorithm to |
+ // decide how many processes to create. |
+ if (base::SysInfo::AmountOfPhysicalMemoryMB() >= 2048) { |
+ EXPECT_GE(RenderProcessHost::size(), 24U); |
+ } else { |
+ EXPECT_LE(RenderProcessHost::size(), 23U); |
+ } |
+} |