Index: content/public/test/mock_render_process_host.cc |
diff --git a/content/public/test/mock_render_process_host.cc b/content/public/test/mock_render_process_host.cc |
index 20f44cca3690ebfc4bf880aa373d32fdea50029e..50f863d5a5f95830bb7f32617d7730102c013368 100644 |
--- a/content/public/test/mock_render_process_host.cc |
+++ b/content/public/test/mock_render_process_host.cc |
@@ -19,15 +19,15 @@ |
namespace content { |
-MockRenderProcessHost::MockRenderProcessHost( |
- BrowserContext* browser_context) |
- : transport_dib_(NULL), |
- bad_msg_count_(0), |
- factory_(NULL), |
- id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), |
- browser_context_(browser_context), |
- prev_routing_id_(0), |
- fast_shutdown_started_(false) { |
+MockRenderProcessHost::MockRenderProcessHost(BrowserContext* browser_context) |
+ : transport_dib_(NULL), |
+ bad_msg_count_(0), |
+ factory_(NULL), |
+ id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), |
+ browser_context_(browser_context), |
+ prev_routing_id_(0), |
+ fast_shutdown_started_(false), |
+ deletion_callback_called_(false) { |
// Child process security operations can't be unit tested unless we add |
// ourselves as an existing child process. |
ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); |
@@ -36,6 +36,12 @@ MockRenderProcessHost::MockRenderProcessHost( |
} |
MockRenderProcessHost::~MockRenderProcessHost() { |
+ if (!deletion_callback_called_) { |
+ FOR_EACH_OBSERVER(RenderProcessHostObserver, |
+ observers_, |
+ RenderProcessHostDestroyed(this)); |
+ } |
+ |
ChildProcessSecurityPolicyImpl::GetInstance()->Remove(GetID()); |
delete transport_dib_; |
if (factory_) |
@@ -67,6 +73,15 @@ void MockRenderProcessHost::RemoveRoute(int32 routing_id) { |
Cleanup(); |
} |
+void MockRenderProcessHost::AddObserver(RenderProcessHostObserver* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void MockRenderProcessHost::RemoveObserver( |
+ RenderProcessHostObserver* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
bool MockRenderProcessHost::WaitForBackingStoreMsg( |
int render_widget_id, |
const base::TimeDelta& max_delay, |
@@ -169,6 +184,10 @@ bool MockRenderProcessHost::IgnoreInputEvents() const { |
void MockRenderProcessHost::Cleanup() { |
if (listeners_.IsEmpty()) { |
+ FOR_EACH_OBSERVER(RenderProcessHostObserver, |
+ observers_, |
+ RenderProcessHostDestroyed(this)); |
+ deletion_callback_called_ = true; |
NotificationService::current()->Notify( |
NOTIFICATION_RENDERER_PROCESS_TERMINATED, |
Source<RenderProcessHost>(this), |