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

Side by Side Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 334743006: Support multiple files for AEC dump. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added missing new message file. Removed obsolete messages. Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/renderer_host/render_process_host_impl.h" 8 #include "content/browser/renderer_host/render_process_host_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 12 matching lines...) Expand all
23 #include "base/debug/trace_event.h" 23 #include "base/debug/trace_event.h"
24 #include "base/files/file.h" 24 #include "base/files/file.h"
25 #include "base/lazy_instance.h" 25 #include "base/lazy_instance.h"
26 #include "base/logging.h" 26 #include "base/logging.h"
27 #include "base/metrics/field_trial.h" 27 #include "base/metrics/field_trial.h"
28 #include "base/metrics/histogram.h" 28 #include "base/metrics/histogram.h"
29 #include "base/numerics/safe_math.h" 29 #include "base/numerics/safe_math.h"
30 #include "base/path_service.h" 30 #include "base/path_service.h"
31 #include "base/rand_util.h" 31 #include "base/rand_util.h"
32 #include "base/stl_util.h" 32 #include "base/stl_util.h"
33 #include "base/strings/string_number_conversions.h"
33 #include "base/strings/string_util.h" 34 #include "base/strings/string_util.h"
34 #include "base/supports_user_data.h" 35 #include "base/supports_user_data.h"
35 #include "base/sys_info.h" 36 #include "base/sys_info.h"
36 #include "base/threading/thread.h" 37 #include "base/threading/thread.h"
37 #include "base/threading/thread_restrictions.h" 38 #include "base/threading/thread_restrictions.h"
38 #include "base/tracked_objects.h" 39 #include "base/tracked_objects.h"
39 #include "cc/base/switches.h" 40 #include "cc/base/switches.h"
40 #include "content/browser/appcache/appcache_dispatcher_host.h" 41 #include "content/browser/appcache/appcache_dispatcher_host.h"
41 #include "content/browser/appcache/chrome_appcache_service.h" 42 #include "content/browser/appcache/chrome_appcache_service.h"
42 #include "content/browser/battery_status/battery_status_message_filter.h" 43 #include "content/browser/battery_status/battery_status_message_filter.h"
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 #include "base/win/scoped_com_initializer.h" 168 #include "base/win/scoped_com_initializer.h"
168 #include "content/common/font_cache_dispatcher_win.h" 169 #include "content/common/font_cache_dispatcher_win.h"
169 #include "content/common/sandbox_win.h" 170 #include "content/common/sandbox_win.h"
170 #include "ui/gfx/win/dpi.h" 171 #include "ui/gfx/win/dpi.h"
171 #endif 172 #endif
172 173
173 #if defined(ENABLE_WEBRTC) 174 #if defined(ENABLE_WEBRTC)
174 #include "content/browser/media/webrtc_internals.h" 175 #include "content/browser/media/webrtc_internals.h"
175 #include "content/browser/renderer_host/media/media_stream_track_metrics_host.h" 176 #include "content/browser/renderer_host/media/media_stream_track_metrics_host.h"
176 #include "content/browser/renderer_host/media/webrtc_identity_service_host.h" 177 #include "content/browser/renderer_host/media/webrtc_identity_service_host.h"
178 #include "content/common/media/aec_dump_messages.h"
177 #include "content/common/media/media_stream_messages.h" 179 #include "content/common/media/media_stream_messages.h"
178 #endif 180 #endif
179 181
180 extern bool g_exited_main_message_loop; 182 extern bool g_exited_main_message_loop;
181 183
182 static const char* kSiteProcessMapKeyName = "content_site_process_map"; 184 static const char* kSiteProcessMapKeyName = "content_site_process_map";
183 185
184 namespace content { 186 namespace content {
185 namespace { 187 namespace {
186 188
(...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 OnDumpHandlesDone) 1369 OnDumpHandlesDone)
1368 IPC_MESSAGE_HANDLER(ViewHostMsg_SuddenTerminationChanged, 1370 IPC_MESSAGE_HANDLER(ViewHostMsg_SuddenTerminationChanged,
1369 SuddenTerminationChanged) 1371 SuddenTerminationChanged)
1370 IPC_MESSAGE_HANDLER(ViewHostMsg_UserMetricsRecordAction, 1372 IPC_MESSAGE_HANDLER(ViewHostMsg_UserMetricsRecordAction,
1371 OnUserMetricsRecordAction) 1373 OnUserMetricsRecordAction)
1372 IPC_MESSAGE_HANDLER(ViewHostMsg_SavedPageAsMHTML, OnSavedPageAsMHTML) 1374 IPC_MESSAGE_HANDLER(ViewHostMsg_SavedPageAsMHTML, OnSavedPageAsMHTML)
1373 IPC_MESSAGE_HANDLER_DELAY_REPLY( 1375 IPC_MESSAGE_HANDLER_DELAY_REPLY(
1374 ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer, 1376 ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer,
1375 OnAllocateGpuMemoryBuffer) 1377 OnAllocateGpuMemoryBuffer)
1376 IPC_MESSAGE_HANDLER(ViewHostMsg_Close_ACK, OnCloseACK) 1378 IPC_MESSAGE_HANDLER(ViewHostMsg_Close_ACK, OnCloseACK)
1379 IPC_MESSAGE_HANDLER(AecDumpMsg_RegisterAecDumpConsumer,
1380 OnRegisterAecDumpConsumer)
1381 IPC_MESSAGE_HANDLER(AecDumpMsg_UnregisterAecDumpConsumer,
1382 OnUnregisterAecDumpConsumer)
1377 // Adding single handlers for your service here is fine, but once your 1383 // Adding single handlers for your service here is fine, but once your
1378 // service needs more than one handler, please extract them into a new 1384 // service needs more than one handler, please extract them into a new
1379 // message filter and add that filter to CreateMessageFilters(). 1385 // message filter and add that filter to CreateMessageFilters().
1380 IPC_END_MESSAGE_MAP() 1386 IPC_END_MESSAGE_MAP()
1381 1387
1382 return true; 1388 return true;
1383 } 1389 }
1384 1390
1385 // Dispatch incoming messages to the appropriate IPC::Listener. 1391 // Dispatch incoming messages to the appropriate IPC::Listener.
1386 IPC::Listener* listener = listeners_.Lookup(msg.routing_id()); 1392 IPC::Listener* listener = listeners_.Lookup(msg.routing_id());
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1538 widget_helper_->ResumeRequestsForView(route_id); 1544 widget_helper_->ResumeRequestsForView(route_id);
1539 } 1545 }
1540 1546
1541 void RenderProcessHostImpl::FilterURL(bool empty_allowed, GURL* url) { 1547 void RenderProcessHostImpl::FilterURL(bool empty_allowed, GURL* url) {
1542 FilterURL(this, empty_allowed, url); 1548 FilterURL(this, empty_allowed, url);
1543 } 1549 }
1544 1550
1545 #if defined(ENABLE_WEBRTC) 1551 #if defined(ENABLE_WEBRTC)
1546 void RenderProcessHostImpl::EnableAecDump(const base::FilePath& file) { 1552 void RenderProcessHostImpl::EnableAecDump(const base::FilePath& file) {
1547 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1553 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1548 BrowserThread::PostTaskAndReplyWithResult( 1554 // Enable AEC dump for each registered consumer.
1549 BrowserThread::FILE, FROM_HERE, 1555 for (std::vector<int>::iterator it = aec_dump_consumers_.begin();
1550 base::Bind(&CreateAecDumpFileForProcess, file, GetHandle()), 1556 it != aec_dump_consumers_.end(); ++it) {
1551 base::Bind(&RenderProcessHostImpl::SendAecDumpFileToRenderer, 1557 EnableAecDumpForId(file, *it);
1552 weak_factory_.GetWeakPtr())); 1558 }
1553 } 1559 }
1554 1560
1555 void RenderProcessHostImpl::DisableAecDump() { 1561 void RenderProcessHostImpl::DisableAecDump() {
1556 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1562 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1557 // Posting on the FILE thread and then replying back on the UI thread is only 1563 // Posting on the FILE thread and then replying back on the UI thread is only
1558 // for avoiding races between enable and disable. Nothing is done on the FILE 1564 // for avoiding races between enable and disable. Nothing is done on the FILE
1559 // thread. 1565 // thread.
1560 BrowserThread::PostTaskAndReply( 1566 BrowserThread::PostTaskAndReply(
1561 BrowserThread::FILE, FROM_HERE, 1567 BrowserThread::FILE, FROM_HERE,
1562 base::Bind(&DisableAecDumpOnFileThread), 1568 base::Bind(&DisableAecDumpOnFileThread),
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after
2160 // Skip widgets in other processes. 2166 // Skip widgets in other processes.
2161 if (widget->GetProcess()->GetID() != GetID()) 2167 if (widget->GetProcess()->GetID() != GetID())
2162 continue; 2168 continue;
2163 2169
2164 RenderViewHost* rvh = RenderViewHost::From(widget); 2170 RenderViewHost* rvh = RenderViewHost::From(widget);
2165 rvh->UpdateWebkitPreferences(rvh->GetWebkitPreferences()); 2171 rvh->UpdateWebkitPreferences(rvh->GetWebkitPreferences());
2166 } 2172 }
2167 } 2173 }
2168 2174
2169 #if defined(ENABLE_WEBRTC) 2175 #if defined(ENABLE_WEBRTC)
2176 void RenderProcessHostImpl::OnRegisterAecDumpConsumer(int id) {
2177 BrowserThread::PostTask(
2178 BrowserThread::UI,
2179 FROM_HERE,
2180 base::Bind(
2181 &RenderProcessHostImpl::RegisterAecDumpConsumerOnUIThread,
2182 weak_factory_.GetWeakPtr(),
2183 id));
2184 }
2185
2186 void RenderProcessHostImpl::OnUnregisterAecDumpConsumer(int id) {
2187 BrowserThread::PostTask(
2188 BrowserThread::UI,
2189 FROM_HERE,
2190 base::Bind(
2191 &RenderProcessHostImpl::UnregisterAecDumpConsumerOnUIThread,
2192 weak_factory_.GetWeakPtr(),
2193 id));
2194 }
2195
2196 void RenderProcessHostImpl::RegisterAecDumpConsumerOnUIThread(int id) {
2197 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2198 aec_dump_consumers_.push_back(id);
2199 if (WebRTCInternals::GetInstance()->aec_dump_enabled()) {
2200 EnableAecDumpForId(WebRTCInternals::GetInstance()->aec_dump_file_path(),
2201 id);
2202 }
2203 }
2204
2205 void RenderProcessHostImpl::UnregisterAecDumpConsumerOnUIThread(int id) {
2206 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2207 for (std::vector<int>::iterator it = aec_dump_consumers_.begin();
2208 it != aec_dump_consumers_.end(); ++it) {
2209 if (*it == id)
2210 aec_dump_consumers_.erase(it);
2211 break;
sky 2014/06/16 15:23:45 You're missing a {} on 2209 as this doesn't do wha
Henrik Grunell 2014/06/16 15:27:59 Oops. Fixed, thanks.
2212 }
2213 }
2214
2215 void RenderProcessHostImpl::EnableAecDumpForId(const base::FilePath& file,
2216 int id) {
2217 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2218 base::FilePath unique_file =
2219 file.AddExtension(base::IntToString(GetID()))
2220 .AddExtension(base::IntToString(id));
2221 BrowserThread::PostTaskAndReplyWithResult(
2222 BrowserThread::FILE, FROM_HERE,
2223 base::Bind(&CreateAecDumpFileForProcess, unique_file, GetHandle()),
2224 base::Bind(&RenderProcessHostImpl::SendAecDumpFileToRenderer,
2225 weak_factory_.GetWeakPtr(),
2226 id));
2227 }
2228
2170 void RenderProcessHostImpl::SendAecDumpFileToRenderer( 2229 void RenderProcessHostImpl::SendAecDumpFileToRenderer(
2230 int id,
2171 IPC::PlatformFileForTransit file_for_transit) { 2231 IPC::PlatformFileForTransit file_for_transit) {
2172 if (file_for_transit == IPC::InvalidPlatformFileForTransit()) 2232 if (file_for_transit == IPC::InvalidPlatformFileForTransit())
2173 return; 2233 return;
2174 Send(new MediaStreamMsg_EnableAecDump(file_for_transit)); 2234 Send(new AecDumpMsg_EnableAecDump(id, file_for_transit));
2175 } 2235 }
2176 2236
2177 void RenderProcessHostImpl::SendDisableAecDumpToRenderer() { 2237 void RenderProcessHostImpl::SendDisableAecDumpToRenderer() {
2178 Send(new MediaStreamMsg_DisableAecDump()); 2238 Send(new AecDumpMsg_DisableAecDump());
2179 } 2239 }
2180 #endif 2240 #endif
2181 2241
2182 void RenderProcessHostImpl::IncrementWorkerRefCount() { 2242 void RenderProcessHostImpl::IncrementWorkerRefCount() {
2183 DCHECK_CURRENTLY_ON(BrowserThread::UI); 2243 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2184 ++worker_ref_count_; 2244 ++worker_ref_count_;
2185 } 2245 }
2186 2246
2187 void RenderProcessHostImpl::DecrementWorkerRefCount() { 2247 void RenderProcessHostImpl::DecrementWorkerRefCount() {
2188 DCHECK_CURRENTLY_ON(BrowserThread::UI); 2248 DCHECK_CURRENTLY_ON(BrowserThread::UI);
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
2300 void RenderProcessHostImpl::GpuMemoryBufferAllocated( 2360 void RenderProcessHostImpl::GpuMemoryBufferAllocated(
2301 IPC::Message* reply, 2361 IPC::Message* reply,
2302 const gfx::GpuMemoryBufferHandle& handle) { 2362 const gfx::GpuMemoryBufferHandle& handle) {
2303 DCHECK_CURRENTLY_ON(BrowserThread::UI); 2363 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2304 ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer::WriteReplyParams(reply, 2364 ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer::WriteReplyParams(reply,
2305 handle); 2365 handle);
2306 Send(reply); 2366 Send(reply);
2307 } 2367 }
2308 2368
2309 } // namespace content 2369 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_process_host_impl.h ('k') | content/common/content_message_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698