| Index: content/browser/gpu/gpu_process_host.cc | 
| diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc | 
| index 4160c89023f3cc4f58b3794be398f58b04842127..04d1e2e6d6c2509ded7e39314799ef0ae82f708a 100644 | 
| --- a/content/browser/gpu/gpu_process_host.cc | 
| +++ b/content/browser/gpu/gpu_process_host.cc | 
| @@ -34,8 +34,6 @@ | 
| #include "content/browser/gpu/gpu_main_thread_factory.h" | 
| #include "content/browser/gpu/gpu_process_host_ui_shim.h" | 
| #include "content/browser/gpu/shader_cache_factory.h" | 
| -#include "content/browser/renderer_host/render_widget_host_impl.h" | 
| -#include "content/browser/renderer_host/render_widget_host_view_frame_subscriber.h" | 
| #include "content/browser/service_manager/service_manager_context.h" | 
| #include "content/common/child_process_host_impl.h" | 
| #include "content/common/in_process_child_thread_params.h" | 
| @@ -44,8 +42,6 @@ | 
| #include "content/public/browser/browser_thread.h" | 
| #include "content/public/browser/content_browser_client.h" | 
| #include "content/public/browser/gpu_utils.h" | 
| -#include "content/public/browser/render_process_host.h" | 
| -#include "content/public/browser/render_widget_host_view.h" | 
| #include "content/public/common/connection_filter.h" | 
| #include "content/public/common/content_client.h" | 
| #include "content/public/common/content_switches.h" | 
| @@ -198,15 +194,14 @@ void RunCallbackOnIO(GpuProcessHost::GpuProcessKind kind, | 
| } | 
|  | 
| #if defined(USE_OZONE) | 
| -void SendGpuProcessMessageByHostId(int host_id, IPC::Message* message) { | 
| -  GpuProcessHost* host = GpuProcessHost::FromID(host_id); | 
| -  if (host) { | 
| +void SendGpuProcessMessage(base::WeakPtr<GpuProcessHost> host, | 
| +                           IPC::Message* message) { | 
| +  if (host) | 
| host->Send(message); | 
| -  } else { | 
| +  else | 
| delete message; | 
| -  } | 
| } | 
| -#endif | 
| +#endif  // defined(USE_OZONE) | 
|  | 
| // NOTE: changes to this class need to be reviewed by the security team. | 
| class GpuSandboxedProcessLauncherDelegate | 
| @@ -311,14 +306,6 @@ class GpuSandboxedProcessLauncherDelegate | 
| #endif  // OS_WIN | 
| }; | 
|  | 
| -void HostLoadedShader(int host_id, | 
| -                      const std::string& key, | 
| -                      const std::string& data) { | 
| -  GpuProcessHost* host = GpuProcessHost::FromID(host_id); | 
| -  if (host) | 
| -    host->LoadedShader(key, data); | 
| -} | 
| - | 
| }  // anonymous namespace | 
|  | 
| class GpuProcessHost::ConnectionFilterImpl : public ConnectionFilter { | 
| @@ -631,8 +618,8 @@ bool GpuProcessHost::Init() { | 
| ui::OzonePlatform::GetInstance() | 
| ->GetGpuPlatformSupportHost() | 
| ->OnGpuProcessLaunched( | 
| -          host_id_, BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), | 
| -          base::Bind(&SendGpuProcessMessageByHostId, host_id_)); | 
| +          host_id_, base::ThreadTaskRunnerHandle::Get(), | 
| +          base::Bind(&SendGpuProcessMessage, weak_ptr_factory_.GetWeakPtr())); | 
| #endif | 
|  | 
| return true; | 
| @@ -662,11 +649,6 @@ bool GpuProcessHost::Send(IPC::Message* msg) { | 
| return result; | 
| } | 
|  | 
| -void GpuProcessHost::AddFilter(IPC::MessageFilter* filter) { | 
| -  DCHECK(CalledOnValidThread()); | 
| -  process_->GetHost()->AddFilter(filter); | 
| -} | 
| - | 
| bool GpuProcessHost::OnMessageReceived(const IPC::Message& message) { | 
| DCHECK(CalledOnValidThread()); | 
| RouteOnUIThread(message); | 
| @@ -1193,7 +1175,8 @@ void GpuProcessHost::CreateChannelCache(int32_t client_id) { | 
| if (!cache.get()) | 
| return; | 
|  | 
| -  cache->set_shader_loaded_callback(base::Bind(&HostLoadedShader, host_id_)); | 
| +  cache->set_shader_loaded_callback(base::Bind(&GpuProcessHost::LoadedShader, | 
| +                                               weak_ptr_factory_.GetWeakPtr())); | 
|  | 
| client_id_to_shader_cache_[client_id] = cache; | 
| } | 
|  |