Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1294)

Side by Side Diff: chrome/browser/renderer_host/browser_render_process_host.cc

Issue 20131: Create AudioRendererHost in BrowserRenderProcessHost and hook with ResourceMessageFilter (Closed)
Patch Set: mac project files Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "chrome/browser/renderer_host/browser_render_process_host.h" 8 #include "chrome/browser/renderer_host/browser_render_process_host.h"
9 9
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 } 148 }
149 149
150 BrowserRenderProcessHost::~BrowserRenderProcessHost() { 150 BrowserRenderProcessHost::~BrowserRenderProcessHost() {
151 // Some tests hold BrowserRenderProcessHost in a scoped_ptr, so we must call 151 // Some tests hold BrowserRenderProcessHost in a scoped_ptr, so we must call
152 // Unregister here as well as in response to Release(). 152 // Unregister here as well as in response to Release().
153 Unregister(); 153 Unregister();
154 154
155 // We may have some unsent messages at this point, but that's OK. 155 // We may have some unsent messages at this point, but that's OK.
156 channel_.reset(); 156 channel_.reset();
157 157
158 // Destroy the AudioRendererHost properly.
159 if (audio_renderer_host_.get())
160 audio_renderer_host_->Destroy();
161
158 if (process_.handle() && !run_renderer_in_process()) { 162 if (process_.handle() && !run_renderer_in_process()) {
159 ProcessWatcher::EnsureProcessTerminated(process_.handle()); 163 ProcessWatcher::EnsureProcessTerminated(process_.handle());
160 } 164 }
161 165
162 profile()->GetPrefs()->RemovePrefObserver(prefs::kBlockPopups, this); 166 profile()->GetPrefs()->RemovePrefObserver(prefs::kBlockPopups, this);
163 167
164 NotificationService::current()->RemoveObserver(this, 168 NotificationService::current()->RemoveObserver(this,
165 NotificationType::USER_SCRIPTS_LOADED, NotificationService::AllSources()); 169 NotificationType::USER_SCRIPTS_LOADED, NotificationService::AllSources());
166 } 170 }
167 171
(...skipping 20 matching lines...) Expand all
188 192
189 bool BrowserRenderProcessHost::Init() { 193 bool BrowserRenderProcessHost::Init() {
190 // calling Init() more than once does nothing, this makes it more convenient 194 // calling Init() more than once does nothing, this makes it more convenient
191 // for the view host which may not be sure in some cases 195 // for the view host which may not be sure in some cases
192 if (channel_.get()) 196 if (channel_.get())
193 return true; 197 return true;
194 198
195 // run the IPC channel on the shared IO thread. 199 // run the IPC channel on the shared IO thread.
196 base::Thread* io_thread = g_browser_process->io_thread(); 200 base::Thread* io_thread = g_browser_process->io_thread();
197 201
202 // Construct the AudioRendererHost with the IO thread.
203 audio_renderer_host_ =
204 new AudioRendererHost(io_thread->message_loop());
205
198 scoped_refptr<ResourceMessageFilter> resource_message_filter = 206 scoped_refptr<ResourceMessageFilter> resource_message_filter =
199 new ResourceMessageFilter(g_browser_process->resource_dispatcher_host(), 207 new ResourceMessageFilter(g_browser_process->resource_dispatcher_host(),
208 audio_renderer_host_.get(),
200 PluginService::GetInstance(), 209 PluginService::GetInstance(),
201 g_browser_process->print_job_manager(), 210 g_browser_process->print_job_manager(),
202 host_id(), 211 host_id(),
203 profile(), 212 profile(),
204 widget_helper_, 213 widget_helper_,
205 profile()->GetSpellChecker()); 214 profile()->GetSpellChecker());
206 215
207 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); 216 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
208 217
209 // setup IPC channel 218 // setup IPC channel
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 // child processes determine the pid of the parent. 818 // child processes determine the pid of the parent.
810 // Build the channel ID. This is composed of a unique identifier for the 819 // Build the channel ID. This is composed of a unique identifier for the
811 // parent browser process, an identifier for the renderer/plugin instance, 820 // parent browser process, an identifier for the renderer/plugin instance,
812 // and a random component. We use a random component so that a hacked child 821 // and a random component. We use a random component so that a hacked child
813 // process can't cause denial of service by causing future named pipe creation 822 // process can't cause denial of service by causing future named pipe creation
814 // to fail. 823 // to fail.
815 return StringPrintf(L"%d.%x.%d", 824 return StringPrintf(L"%d.%x.%d",
816 base::GetCurrentProcId(), instance, 825 base::GetCurrentProcId(), instance,
817 base::RandInt(0, std::numeric_limits<int>::max())); 826 base::RandInt(0, std::numeric_limits<int>::max()));
818 } 827 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/browser_render_process_host.h ('k') | chrome/browser/renderer_host/resource_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698