| Index: chrome/browser/renderer_host/render_message_filter.cc | 
| =================================================================== | 
| --- chrome/browser/renderer_host/render_message_filter.cc	(revision 69229) | 
| +++ chrome/browser/renderer_host/render_message_filter.cc	(working copy) | 
| @@ -192,7 +192,7 @@ | 
| } | 
|  | 
| virtual int ID() { | 
| -    return filter_->id(); | 
| +    return filter_->render_process_id(); | 
| } | 
|  | 
| virtual bool OffTheRecord() { | 
| @@ -228,21 +228,16 @@ | 
| }  // namespace | 
|  | 
| RenderMessageFilter::RenderMessageFilter( | 
| -    ResourceDispatcherHost* resource_dispatcher_host, | 
| -    int child_id, | 
| +    int render_process_id, | 
| PluginService* plugin_service, | 
| -    printing::PrintJobManager* print_job_manager, | 
| Profile* profile, | 
| RenderWidgetHelper* render_widget_helper) | 
| -    : Receiver(RENDER_PROCESS, child_id), | 
| -      channel_(NULL), | 
| -      resource_dispatcher_host_(resource_dispatcher_host), | 
| +    : resource_dispatcher_host_(g_browser_process->resource_dispatcher_host()), | 
| plugin_service_(plugin_service), | 
| -      print_job_manager_(print_job_manager), | 
| +      print_job_manager_(g_browser_process->print_job_manager()), | 
| profile_(profile), | 
| content_settings_(profile->GetHostContentSettingsMap()), | 
| ALLOW_THIS_IN_INITIALIZER_LIST(resolve_proxy_msg_helper_(this, NULL)), | 
| -      media_request_context_(profile->GetRequestContextForMedia()), | 
| extensions_request_context_(profile->GetRequestContextForExtensions()), | 
| render_widget_helper_(render_widget_helper), | 
| notification_prefs_( | 
| @@ -251,12 +246,12 @@ | 
| off_the_record_(profile->IsOffTheRecord()), | 
| next_route_id_callback_(NewCallbackWithReturnValue( | 
| render_widget_helper, &RenderWidgetHelper::GetNextRoutingID)), | 
| -      webkit_context_(profile->GetWebKitContext()) { | 
| +      webkit_context_(profile->GetWebKitContext()), | 
| +      render_process_id_(render_process_id) { | 
| request_context_ = profile_->GetRequestContext(); | 
| DCHECK(request_context_); | 
| -  DCHECK(media_request_context_); | 
|  | 
| -  render_widget_helper_->Init(id(), resource_dispatcher_host_); | 
| +  render_widget_helper_->Init(render_process_id_, resource_dispatcher_host_); | 
| #if defined(OS_CHROMEOS) | 
| cloud_print_enabled_ = true; | 
| #else | 
| @@ -274,31 +269,18 @@ | 
| NotificationType::RESOURCE_MESSAGE_FILTER_SHUTDOWN, | 
| Source<RenderMessageFilter>(this), | 
| NotificationService::NoDetails()); | 
| - | 
| -  if (handle()) | 
| -    base::CloseProcessHandle(handle()); | 
| } | 
|  | 
| // Called on the IPC thread: | 
| -void RenderMessageFilter::OnFilterAdded(IPC::Channel* channel) { | 
| -  channel_ = channel; | 
| -} | 
| - | 
| -// Called on the IPC thread: | 
| void RenderMessageFilter::OnChannelConnected(int32 peer_pid) { | 
| -  DCHECK(!handle()) << " " << handle(); | 
| -  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| +  BrowserMessageFilter::OnChannelConnected(peer_pid); | 
|  | 
| -  base::ProcessHandle peer_handle; | 
| -  if (!base::OpenProcessHandle(peer_pid, &peer_handle)) { | 
| -    NOTREACHED(); | 
| -  } | 
| -  set_handle(peer_handle); | 
| - | 
| WorkerService::GetInstance()->Initialize(resource_dispatcher_host_); | 
| } | 
|  | 
| void RenderMessageFilter::OnChannelError() { | 
| +  BrowserMessageFilter::OnChannelError(); | 
| + | 
| NotificationService::current()->Notify( | 
| NotificationType::RESOURCE_MESSAGE_FILTER_SHUTDOWN, | 
| Source<RenderMessageFilter>(this), | 
| @@ -306,27 +288,15 @@ | 
| } | 
|  | 
| // Called on the IPC thread: | 
| -void RenderMessageFilter::OnChannelClosing() { | 
| -  channel_ = NULL; | 
| - | 
| -  // Unhook us from all pending network requests so they don't get sent to a | 
| -  // deleted object. | 
| -  resource_dispatcher_host_->CancelRequestsForProcess(id()); | 
| -} | 
| - | 
| -// Called on the IPC thread: | 
| -bool RenderMessageFilter::OnMessageReceived(const IPC::Message& msg) { | 
| +bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message, | 
| +                                            bool* message_was_ok) { | 
| MessagePortDispatcher* mp_dispatcher = MessagePortDispatcher::GetInstance(); | 
| -  bool msg_is_ok = true; | 
| -  bool handled = | 
| -      resource_dispatcher_host_->OnMessageReceived(msg, this, &msg_is_ok) || | 
| -      mp_dispatcher->OnMessageReceived( | 
| -          msg, this, next_route_id_callback(), &msg_is_ok); | 
| +  bool handled = mp_dispatcher->OnMessageReceived( | 
| +      message, this, next_route_id_callback(), message_was_ok); | 
|  | 
| if (!handled) { | 
| -    DCHECK(msg_is_ok);  // It should have been marked handled if it wasn't OK. | 
| handled = true; | 
| -    IPC_BEGIN_MESSAGE_MAP_EX(RenderMessageFilter, msg, msg_is_ok) | 
| +    IPC_BEGIN_MESSAGE_MAP_EX(RenderMessageFilter, message, *message_was_ok) | 
| // On Linux we need to dispatch these messages to the UI2 thread | 
| // because we cannot make X calls from the IO thread.  Mac | 
| // doesn't have windowed plug-ins so we handle the messages in | 
| @@ -363,7 +333,7 @@ | 
| OnGetPluginInfo) | 
| IPC_MESSAGE_HANDLER(ViewHostMsg_DownloadUrl, OnDownloadUrl) | 
| IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_ContextMenu, | 
| -                                  OnReceiveContextMenuMsg(msg)) | 
| +                                  OnReceiveContextMenuMsg(message)) | 
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_OpenChannelToPlugin, | 
| OnOpenChannelToPlugin) | 
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_OpenChannelToPepperPlugin, | 
| @@ -391,7 +361,7 @@ | 
| IPC_MESSAGE_HANDLER(ViewHostMsg_RendererHistograms, | 
| OnRendererHistograms) | 
| IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_UpdateRect, | 
| -          render_widget_helper_->DidReceiveUpdateMsg(msg)) | 
| +          render_widget_helper_->DidReceiveUpdateMsg(message)) | 
| IPC_MESSAGE_HANDLER(ViewHostMsg_ClipboardWriteObjectsAsync, | 
| OnClipboardWriteObjectsAsync) | 
| IPC_MESSAGE_HANDLER(ViewHostMsg_ClipboardWriteObjectsSync, | 
| @@ -471,14 +441,10 @@ | 
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_SynchronizeGpu, | 
| OnSynchronizeGpu) | 
| IPC_MESSAGE_HANDLER(ViewHostMsg_AsyncOpenFile, OnAsyncOpenFile) | 
| -      IPC_MESSAGE_UNHANDLED( | 
| -          handled = false) | 
| +      IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP_EX() | 
| } | 
|  | 
| -  if (!msg_is_ok) | 
| -    BrowserRenderProcessHost::BadMessageTerminateProcess(msg.type(), handle()); | 
| - | 
| return handled; | 
| } | 
|  | 
| @@ -490,11 +456,13 @@ | 
| #endif | 
| if (!BrowserThread::CurrentlyOn(kThreadID)) { | 
| // Only honor the request if appropriate persmissions are granted. | 
| -    if (ChildProcessSecurityPolicy::GetInstance()->CanReadFile(id(), path)) | 
| +    if (ChildProcessSecurityPolicy::GetInstance()->CanReadFile( | 
| +          render_process_id_, path)) { | 
| BrowserThread::PostTask( | 
| kThreadID, FROM_HERE, | 
| NewRunnableMethod( | 
| this, &RenderMessageFilter::OnRevealFolderInOS, path)); | 
| +    } | 
| return; | 
| } | 
|  | 
| @@ -516,31 +484,10 @@ | 
| const ViewHostMsg_ContextMenu context_menu_message(msg.routing_id(), params); | 
| BrowserThread::PostTask( | 
| BrowserThread::UI, FROM_HERE, | 
| -      new ContextMenuMessageDispatcher(id(), context_menu_message)); | 
| +      new ContextMenuMessageDispatcher( | 
| +          render_process_id_, context_menu_message)); | 
| } | 
|  | 
| -// Called on the IPC thread: | 
| -bool RenderMessageFilter::Send(IPC::Message* message) { | 
| -  if (!channel_) { | 
| -    delete message; | 
| -    return false; | 
| -  } | 
| - | 
| -  return channel_->Send(message); | 
| -} | 
| - | 
| -URLRequestContext* RenderMessageFilter::GetRequestContext( | 
| -    uint32 request_id, | 
| -    const ViewHostMsg_Resource_Request& request_data) { | 
| -  URLRequestContextGetter* request_context = request_context_; | 
| -  // If the request has resource type of ResourceType::MEDIA, we use a request | 
| -  // context specific to media for handling it because these resources have | 
| -  // specific needs for caching. | 
| -  if (request_data.resource_type == ResourceType::MEDIA) | 
| -    request_context = media_request_context_; | 
| -  return request_context->GetURLRequestContext(); | 
| -} | 
| - | 
| void RenderMessageFilter::OnMsgCreateWindow( | 
| const ViewHostMsg_CreateWindow_Params& params, | 
| int* route_id, int64* cloned_session_storage_namespace_id) { | 
| @@ -551,7 +498,7 @@ | 
| params.user_gesture, | 
| params.window_container_type, | 
| params.frame_name, | 
| -                                         handle(), | 
| +                                         peer_handle(), | 
| route_id); | 
| } | 
|  | 
| @@ -573,9 +520,8 @@ | 
| const std::string& cookie) { | 
| ChromeURLRequestContext* context = GetRequestContextForURL(url); | 
|  | 
| -  SetCookieCompletion* callback = | 
| -      new SetCookieCompletion(id(), message.routing_id(), url, cookie, | 
| -                              context); | 
| +  SetCookieCompletion* callback = new SetCookieCompletion( | 
| +      render_process_id_, message.routing_id(), url, cookie, context); | 
|  | 
| // If this render view is associated with an automation channel, aka | 
| // ChromeFrame then we need to set cookies in the external host. | 
| @@ -598,9 +544,9 @@ | 
| IPC::Message* reply_msg) { | 
| ChromeURLRequestContext* context = GetRequestContextForURL(url); | 
|  | 
| -  GetCookiesCompletion* callback = | 
| -      new GetCookiesCompletion(id(), reply_msg->routing_id(), url, reply_msg, | 
| -                               this, context, false); | 
| +  GetCookiesCompletion* callback = new GetCookiesCompletion( | 
| +      render_process_id_, reply_msg->routing_id(), url, reply_msg, this, | 
| +      context, false); | 
|  | 
| // If this render view is associated with an automation channel, aka | 
| // ChromeFrame then we need to retrieve cookies from the external host. | 
| @@ -629,8 +575,8 @@ | 
| // not targeted to an an external host like ChromeFrame. | 
| // TODO(ananta) We need to support retreiving raw cookies from external | 
| // hosts. | 
| -  if (!ChildProcessSecurityPolicy::GetInstance()->CanReadRawCookies(id()) || | 
| -      context->IsExternal()) { | 
| +  if (!ChildProcessSecurityPolicy::GetInstance()->CanReadRawCookies( | 
| +          render_process_id_) || context->IsExternal()) { | 
| ViewHostMsg_GetRawCookies::WriteReplyParams( | 
| reply_msg, | 
| std::vector<webkit_glue::WebCookie>()); | 
| @@ -638,9 +584,9 @@ | 
| return; | 
| } | 
|  | 
| -  GetCookiesCompletion* callback = | 
| -      new GetCookiesCompletion(id(), reply_msg->routing_id(), url, | 
| -                               reply_msg, this, context, true); | 
| +  GetCookiesCompletion* callback = new GetCookiesCompletion( | 
| +      render_process_id_, reply_msg->routing_id(), url, reply_msg, this, | 
| +      context, true); | 
|  | 
| // We check policy here to avoid sending back cookies that would not normally | 
| // be applied to outbound requests for the given URL.  Since this cookie info | 
| @@ -833,15 +779,15 @@ | 
| if (params.is_shared) | 
| WorkerService::GetInstance()->CreateSharedWorker( | 
| params.url, off_the_record(), params.name, | 
| -        params.document_id, id(), params.render_view_route_id, this, *route_id, | 
| -        params.script_resource_appcache_id, | 
| +        params.document_id, render_process_id_, params.render_view_route_id, | 
| +        this, *route_id, params.script_resource_appcache_id, | 
| static_cast<ChromeURLRequestContext*>( | 
| request_context_->GetURLRequestContext())); | 
| else | 
| WorkerService::GetInstance()->CreateDedicatedWorker( | 
| params.url, off_the_record(), | 
| -        params.document_id, id(), params.render_view_route_id, this, *route_id, | 
| -        id(), params.parent_appcache_host_id, | 
| +        params.document_id, render_process_id_, params.render_view_route_id, | 
| +        this, *route_id, render_process_id_, params.parent_appcache_host_id, | 
| static_cast<ChromeURLRequestContext*>( | 
| request_context_->GetURLRequestContext())); | 
| } | 
| @@ -851,8 +797,9 @@ | 
| bool* url_mismatch) { | 
| *route_id = render_widget_helper_->GetNextRoutingID(); | 
| *exists = WorkerService::GetInstance()->LookupSharedWorker( | 
| -      params.url, params.name, off_the_record(), params.document_id, id(), | 
| -      params.render_view_route_id, this, *route_id, url_mismatch); | 
| +      params.url, params.name, off_the_record(), params.document_id, | 
| +      render_process_id_, params.render_view_route_id, this, *route_id, | 
| +      url_mismatch); | 
| } | 
|  | 
| void RenderMessageFilter::OnDocumentDetached(unsigned long long document_id) { | 
| @@ -880,7 +827,7 @@ | 
| referrer, | 
| DownloadSaveInfo(), | 
| prompt_for_save_location, | 
| -                                           id(), | 
| +                                           render_process_id_, | 
| message.routing_id(), | 
| context); | 
| } | 
| @@ -898,7 +845,7 @@ | 
|  | 
| // Splice the shared memory handle into the clipboard data. | 
| Clipboard::ReplaceSharedMemHandle(long_living_objects, bitmap_handle, | 
| -                                    handle()); | 
| +                                    peer_handle()); | 
|  | 
| BrowserThread::PostTask( | 
| BrowserThread::UI, | 
| @@ -1031,7 +978,7 @@ | 
| base::SharedMemoryHandle* browser_handle) { | 
| // Duplicate the handle in this process right now so the memory is kept alive | 
| // (even if it is not mapped) | 
| -  base::SharedMemory shared_buf(renderer_handle, true, handle()); | 
| +  base::SharedMemory shared_buf(renderer_handle, true, peer_handle()); | 
| shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), browser_handle); | 
| } | 
| #endif | 
| @@ -1069,7 +1016,7 @@ | 
| NewRunnableFunction( | 
| &RenderMessageFilter::OnResourceTypeStatsOnUIThread, | 
| stats, | 
| -          base::GetProcId(handle()))); | 
| +          base::GetProcId(peer_handle()))); | 
| } | 
|  | 
| void RenderMessageFilter::OnResourceTypeStatsOnUIThread( | 
| @@ -1087,7 +1034,7 @@ | 
| NewRunnableFunction(&RenderMessageFilter::OnV8HeapStatsOnUIThread, | 
| v8_memory_allocated, | 
| v8_memory_used, | 
| -                          base::GetProcId(handle()))); | 
| +                          base::GetProcId(peer_handle()))); | 
| } | 
|  | 
| // static | 
| @@ -1106,7 +1053,7 @@ | 
| const GURL& url) { | 
| Task* task = NewRunnableMethod(this, | 
| &RenderMessageFilter::UpdateHostZoomLevelsOnUIThread, zoom_level, | 
| -      remember, url, id(), message.routing_id()); | 
| +      remember, url, render_process_id_, message.routing_id()); | 
| #if defined(OS_MACOSX) | 
| cocoa_utils::PostTaskInEventTrackingRunLoopMode(FROM_HERE, task); | 
| #else | 
| @@ -1338,7 +1285,7 @@ | 
| BrowserThread::UI, FROM_HERE, | 
| NewRunnableMethod( | 
| this, &RenderMessageFilter::OpenChannelToExtensionOnUIThread, | 
| -          id(), routing_id, port2_id, source_extension_id, | 
| +          render_process_id_, routing_id, port2_id, source_extension_id, | 
| target_extension_id, channel_name)); | 
| } | 
|  | 
| @@ -1364,7 +1311,8 @@ | 
| BrowserThread::UI, FROM_HERE, | 
| NewRunnableMethod( | 
| this, &RenderMessageFilter::OpenChannelToTabOnUIThread, | 
| -          id(), routing_id, port2_id, tab_id, extension_id, channel_name)); | 
| +          render_process_id_, routing_id, port2_id, tab_id, extension_id, | 
| +          channel_name)); | 
| } | 
|  | 
| void RenderMessageFilter::OpenChannelToTabOnUIThread( | 
| @@ -1538,7 +1486,7 @@ | 
| #endif | 
|  | 
| void RenderMessageFilter::OnEstablishGpuChannel() { | 
| -  GpuProcessHost::Get()->EstablishGpuChannel(id(), this); | 
| +  GpuProcessHost::Get()->EstablishGpuChannel(render_process_id_, this); | 
| } | 
|  | 
| void RenderMessageFilter::OnSynchronizeGpu(IPC::Message* reply) { | 
| @@ -1606,10 +1554,9 @@ | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
|  | 
| if (!ChildProcessSecurityPolicy::GetInstance()->HasPermissionsForFile( | 
| -          id(), path, flags)) { | 
| +          render_process_id_, path, flags)) { | 
| DLOG(ERROR) << "Bad flags in ViewMsgHost_AsyncOpenFile message: " << flags; | 
| -    BrowserRenderProcessHost::BadMessageTerminateProcess( | 
| -        ViewHostMsg_AsyncOpenFile::ID, handle()); | 
| +    BadMessageReceived(ViewHostMsg_AsyncOpenFile::ID); | 
| return; | 
| } | 
|  | 
| @@ -1631,7 +1578,7 @@ | 
| IPC::InvalidPlatformFileForTransit(); | 
| if (file != base::kInvalidPlatformFileValue) { | 
| #if defined(OS_WIN) | 
| -    ::DuplicateHandle(::GetCurrentProcess(), file, handle(), | 
| +    ::DuplicateHandle(::GetCurrentProcess(), file, peer_handle(), | 
| &file_for_transit, 0, false, DUPLICATE_SAME_ACCESS); | 
| #else | 
| file_for_transit = base::FileDescriptor(file, true); | 
|  |