Index: chrome/browser/extensions/lazy_background_page_apitest.cc |
diff --git a/chrome/browser/extensions/lazy_background_page_apitest.cc b/chrome/browser/extensions/lazy_background_page_apitest.cc |
index e0873193fa3cc5a65df03b653f0156919acf52b8..9f355a40eb50f523516bf2c968cd1a48875538a4 100644 |
--- a/chrome/browser/extensions/lazy_background_page_apitest.cc |
+++ b/chrome/browser/extensions/lazy_background_page_apitest.cc |
@@ -81,9 +81,9 @@ class LazyBackgroundPageApiTest : public ExtensionApiTest { |
ExtensionApiTest::SetUpCommandLine(command_line); |
// Set shorter delays to prevent test timeouts. |
command_line->AppendSwitchASCII( |
- extensions::switches::kEventPageIdleTime, "1"); |
+ extensions::switches::kEventPageIdleTime, "1000"); |
command_line->AppendSwitchASCII( |
- extensions::switches::kEventPageSuspendingTime, "1"); |
+ extensions::switches::kEventPageSuspendingTime, "1000"); |
} |
// Loads the extension, which temporarily starts the lazy background page |
@@ -411,6 +411,40 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Messaging) { |
EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
} |
+// Tests that a KeepaliveImpulse increments the keep alive count, but eventually |
+// times out and background page will still close. |
+IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, ImpulseAddsCount) { |
+ ASSERT_TRUE(StartEmbeddedTestServer()); |
+ const Extension* extension = LoadExtensionAndWait("messaging"); |
+ ASSERT_TRUE(extension); |
+ |
+ // Lazy Background Page doesn't exist yet. |
+ extensions::ProcessManager* pm = |
+ extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
+ EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
+ EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
+ |
+ // Navigate to a page that opens a message channel to the background page. |
+ ResultCatcher catcher; |
+ LazyBackgroundObserver lazybg; |
+ ui_test_utils::NavigateToURL( |
+ browser(), embedded_test_server()->GetURL("/extensions/test_file.html")); |
+ lazybg.WaitUntilLoaded(); |
+ |
+ // Add an impulse and the keep alive count increases. |
+ int previous_keep_alive_count = pm->GetLazyKeepaliveCount(extension); |
+ pm->KeepaliveImpulse(extension); |
+ EXPECT_EQ(previous_keep_alive_count + 1, |
+ pm->GetLazyKeepaliveCount(extension)); |
+ |
+ // Navigate away, closing the message channel and therefore the background |
+ // page after the impulse times out. |
+ ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); |
+ lazybg.WaitUntilClosed(); |
+ |
+ EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
+} |
+ |
// Tests that the lazy background page receives the unload event when we |
// close it, and that it can execute simple API calls that don't require an |
// asynchronous response. |