| Index: content/browser/media/webrtc_internals.cc
 | 
| diff --git a/content/browser/media/webrtc_internals.cc b/content/browser/media/webrtc_internals.cc
 | 
| index ce5028af256fa952376d227ea84395f9cc12e62f..34703f5ac52491779a4746bff16d4a1e1da4551a 100644
 | 
| --- a/content/browser/media/webrtc_internals.cc
 | 
| +++ b/content/browser/media/webrtc_internals.cc
 | 
| @@ -35,11 +35,12 @@ static ListValue* EnsureLogList(DictionaryValue* dict) {
 | 
|  WebRTCInternals::WebRTCInternals() {
 | 
|    registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_TERMINATED,
 | 
|                   NotificationService::AllBrowserContextsAndSources());
 | 
| -  registrar_.Add(this, NOTIFICATION_CHILD_PROCESS_CRASHED,
 | 
| -                 NotificationService::AllBrowserContextsAndSources());
 | 
| +
 | 
| +  BrowserChildProcessObserver::Add(this);
 | 
|  }
 | 
|  
 | 
|  WebRTCInternals::~WebRTCInternals() {
 | 
| +  BrowserChildProcessObserver::Remove(this);
 | 
|  }
 | 
|  
 | 
|  WebRTCInternals* WebRTCInternals::GetInstance() {
 | 
| @@ -178,24 +179,21 @@ void WebRTCInternals::SendUpdate(const string& command, Value* value) {
 | 
|                      OnUpdate(command, value));
 | 
|  }
 | 
|  
 | 
| +void WebRTCInternals::BrowserChildProcessCrashed(
 | 
| +    const ChildProcessData& data) {
 | 
| +  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
 | 
| +  OnRendererExit(data.id);
 | 
| +}
 | 
| +
 | 
|  void WebRTCInternals::Observe(int type,
 | 
|                                const NotificationSource& source,
 | 
|                                const NotificationDetails& details) {
 | 
|    DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
 | 
| -  int render_process_id = -1;
 | 
| -
 | 
| -  switch (type) {
 | 
| -    case NOTIFICATION_RENDERER_PROCESS_TERMINATED:
 | 
| -      render_process_id = Source<RenderProcessHost>(source)->GetID();
 | 
| -      break;
 | 
| -    case NOTIFICATION_CHILD_PROCESS_CRASHED:
 | 
| -      render_process_id = Details<ChildProcessData>(details).ptr()->id;
 | 
| -      break;
 | 
| -    default:
 | 
| -      NOTREACHED();
 | 
| -      break;
 | 
| -  }
 | 
| +  DCHECK_EQ(type, NOTIFICATION_RENDERER_PROCESS_TERMINATED);
 | 
| +  OnRendererExit(Source<RenderProcessHost>(source)->GetID());
 | 
| +}
 | 
|  
 | 
| +void WebRTCInternals::OnRendererExit(int render_process_id) {
 | 
|    // Iterates from the end of the list to remove the PeerConnections created
 | 
|    // by the exitting renderer.
 | 
|    for (int i = peer_connection_data_.GetSize() - 1; i >= 0; --i) {
 | 
| 
 |