Index: extensions/browser/process_manager.cc |
diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc |
index a38f8bca0d1446f298d814ef5ecedc9620fb1370..fed3369a33083ec6e6392d88606c7cb053be6111 100644 |
--- a/extensions/browser/process_manager.cc |
+++ b/extensions/browser/process_manager.cc |
@@ -443,8 +443,11 @@ void ProcessManager::KeepaliveImpulse(const Extension* extension) { |
} |
} |
- if (!keepalive_impulse_callback_for_testing_.is_null()) |
- keepalive_impulse_callback_for_testing_.Run(extension->id()); |
+ if (!keepalive_impulse_callback_for_testing_.is_null()) { |
+ ImpulseCallbackForTesting callback_may_clear_callbacks_reentrantly = |
+ keepalive_impulse_callback_for_testing_; |
+ callback_may_clear_callbacks_reentrantly.Run(extension->id()); |
+ } |
} |
// DecrementLazyKeepaliveCount is called when no calls to KeepaliveImpulse |
@@ -459,8 +462,11 @@ void ProcessManager::OnKeepaliveImpulseCheck() { |
++i) { |
if (i->second.previous_keepalive_impulse && !i->second.keepalive_impulse) { |
DecrementLazyKeepaliveCount(i->first); |
- if (!keepalive_impulse_decrement_callback_for_testing_.is_null()) |
- keepalive_impulse_decrement_callback_for_testing_.Run(i->first); |
+ if (!keepalive_impulse_decrement_callback_for_testing_.is_null()) { |
+ ImpulseCallbackForTesting callback_may_clear_callbacks_reentrantly = |
+ keepalive_impulse_decrement_callback_for_testing_; |
+ callback_may_clear_callbacks_reentrantly.Run(i->first); |
+ } |
} |
i->second.previous_keepalive_impulse = i->second.keepalive_impulse; |