| Index: content/browser/mach_broker_mac.cc
|
| diff --git a/content/browser/mach_broker_mac.cc b/content/browser/mach_broker_mac.cc
|
| index 466c84d971b65154132d310ac162e07d14bc4dbf..325db759be48c88e4d5a3606eb77300cda45c828 100644
|
| --- a/content/browser/mach_broker_mac.cc
|
| +++ b/content/browser/mach_broker_mac.cc
|
| @@ -172,6 +172,15 @@ mach_port_t MachBroker::TaskForPid(base::ProcessHandle pid) const {
|
| return it->second.mach_task_;
|
| }
|
|
|
| +void MachBroker::BrowserChildProcessHostDisconnected(
|
| + const ChildProcessData& data) {
|
| + InvalidatePid(data.handle);
|
| +}
|
| +
|
| +void MachBroker::BrowserChildProcessCrashed(const ChildProcessData& data) {
|
| + InvalidatePid(data.handle);
|
| +}
|
| +
|
| void MachBroker::Observe(int type,
|
| const NotificationSource& source,
|
| const NotificationDetails& details) {
|
| @@ -187,10 +196,6 @@ void MachBroker::Observe(int type,
|
| case NOTIFICATION_RENDERER_PROCESS_TERMINATED:
|
| handle = Source<RenderProcessHost>(source)->GetHandle();
|
| break;
|
| - case NOTIFICATION_CHILD_PROCESS_CRASHED:
|
| - case NOTIFICATION_CHILD_PROCESS_HOST_DISCONNECTED:
|
| - handle = Details<ChildProcessData>(details)->handle;
|
| - break;
|
| default:
|
| NOTREACHED() << "Unexpected notification";
|
| break;
|
| @@ -218,10 +223,10 @@ void MachBroker::RegisterNotifications() {
|
| NotificationService::AllBrowserContextsAndSources());
|
| registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_TERMINATED,
|
| NotificationService::AllBrowserContextsAndSources());
|
| - registrar_.Add(this, NOTIFICATION_CHILD_PROCESS_CRASHED,
|
| - NotificationService::AllBrowserContextsAndSources());
|
| - registrar_.Add(this, NOTIFICATION_CHILD_PROCESS_HOST_DISCONNECTED,
|
| - NotificationService::AllBrowserContextsAndSources());
|
| +
|
| + // No corresponding StopObservingBrowserChildProcesses,
|
| + // we leak this singleton.
|
| + BrowserChildProcessObserver::Add(this);
|
| }
|
|
|
| } // namespace content
|
|
|