| Index: chrome/browser/extensions/app_background_page_apitest.cc
|
| diff --git a/chrome/browser/extensions/app_background_page_apitest.cc b/chrome/browser/extensions/app_background_page_apitest.cc
|
| index 824c46a51b94a5195d9e26da35ce96a495cb26ed..9af06a26e1e0c046b17ca70afcbb3432771852da 100644
|
| --- a/chrome/browser/extensions/app_background_page_apitest.cc
|
| +++ b/chrome/browser/extensions/app_background_page_apitest.cc
|
| @@ -156,9 +156,11 @@ class AppBackgroundPageNaClTest : public AppBackgroundPageApiTest {
|
| // that will match a specified goal and can be waited on.
|
| class ImpulseCallbackCounter {
|
| public:
|
| - explicit ImpulseCallbackCounter(const std::string& extension_id)
|
| + explicit ImpulseCallbackCounter(extensions::ProcessManager* manager,
|
| + const std::string& extension_id)
|
| : observed_(0),
|
| goal_(0),
|
| + manager_(manager),
|
| extension_id_(extension_id) {
|
| }
|
|
|
| @@ -183,6 +185,11 @@ class ImpulseCallbackCounter {
|
| const std::string& extension_id_from_manager) {
|
| if (extension_id_from_test == extension_id_from_manager) {
|
| if (++observed_ >= goal_) {
|
| + // Clear callback to free reference to message loop.
|
| + manager_->SetKeepaliveImpulseCallbackForTesting(
|
| + extensions::ProcessManager::ImpulseCallbackForTesting());
|
| + manager_->SetKeepaliveImpulseDecrementCallbackForTesting(
|
| + extensions::ProcessManager::ImpulseCallbackForTesting());
|
| quit_callback.Run();
|
| }
|
| }
|
| @@ -190,6 +197,7 @@ class ImpulseCallbackCounter {
|
|
|
| int observed_;
|
| int goal_;
|
| + extensions::ProcessManager* manager_;
|
| const std::string extension_id_;
|
| scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
|
| };
|
| @@ -597,17 +605,13 @@ IN_PROC_BROWSER_TEST_F(AppBackgroundPageNaClTest, BackgroundKeepaliveActive) {
|
| LaunchTestingApp();
|
| extensions::ProcessManager* manager =
|
| extensions::ExtensionSystem::Get(browser()->profile())->process_manager();
|
| - ImpulseCallbackCounter active_impulse_counter(extension()->id());
|
| + ImpulseCallbackCounter active_impulse_counter(manager, extension()->id());
|
| EXPECT_TRUE(nacl_modules_loaded.WaitUntilSatisfied());
|
|
|
| // Target .5 seconds: .5 seconds / 50ms throttle * 2 embeds == 20 impulses.
|
| manager->SetKeepaliveImpulseCallbackForTesting(
|
| active_impulse_counter.SetGoalAndGetCallback(20));
|
| active_impulse_counter.Wait();
|
| -
|
| - // Clear callback to free reference to message loop in ImpulseCallbackCounter.
|
| - manager->SetKeepaliveImpulseCallbackForTesting(
|
| - extensions::ProcessManager::ImpulseCallbackForTesting());
|
| }
|
|
|
| // Verify that nacl modules that go idle will not send keepalive impulses.
|
| @@ -624,16 +628,12 @@ IN_PROC_BROWSER_TEST_F(AppBackgroundPageNaClTest,
|
| LaunchTestingApp();
|
| extensions::ProcessManager* manager =
|
| extensions::ExtensionSystem::Get(browser()->profile())->process_manager();
|
| - ImpulseCallbackCounter idle_impulse_counter(extension()->id());
|
| + ImpulseCallbackCounter idle_impulse_counter(manager, extension()->id());
|
| EXPECT_TRUE(nacl_modules_loaded.WaitUntilSatisfied());
|
|
|
| manager->SetKeepaliveImpulseDecrementCallbackForTesting(
|
| idle_impulse_counter.SetGoalAndGetCallback(1));
|
| nacl_modules_loaded.Reply("be idle");
|
| idle_impulse_counter.Wait();
|
| -
|
| - // Clear callback to free reference to message loop in ImpulseCallbackCounter.
|
| - manager->SetKeepaliveImpulseDecrementCallbackForTesting(
|
| - extensions::ProcessManager::ImpulseCallbackForTesting());
|
| }
|
|
|
|
|