| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 #endif | 241 #endif |
| 242 | 242 |
| 243 namespace content { | 243 namespace content { |
| 244 namespace { | 244 namespace { |
| 245 | 245 |
| 246 const char kSiteProcessMapKeyName[] = "content_site_process_map"; | 246 const char kSiteProcessMapKeyName[] = "content_site_process_map"; |
| 247 | 247 |
| 248 #ifdef ENABLE_WEBRTC | 248 #ifdef ENABLE_WEBRTC |
| 249 const base::FilePath::CharType kAecDumpFileNameAddition[] = | 249 const base::FilePath::CharType kAecDumpFileNameAddition[] = |
| 250 FILE_PATH_LITERAL("aec_dump"); | 250 FILE_PATH_LITERAL("aec_dump"); |
| 251 const base::FilePath::CharType kEventLogFileNameAddition[] = | |
| 252 FILE_PATH_LITERAL("event_log"); | |
| 253 #endif | 251 #endif |
| 254 | 252 |
| 255 void CacheShaderInfo(int32_t id, base::FilePath path) { | 253 void CacheShaderInfo(int32_t id, base::FilePath path) { |
| 256 ShaderCacheFactory::GetInstance()->SetCacheInfo(id, path); | 254 ShaderCacheFactory::GetInstance()->SetCacheInfo(id, path); |
| 257 } | 255 } |
| 258 | 256 |
| 259 void RemoveShaderInfo(int32_t id) { | 257 void RemoveShaderInfo(int32_t id) { |
| 260 ShaderCacheFactory::GetInstance()->RemoveCacheInfo(id); | 258 ShaderCacheFactory::GetInstance()->RemoveCacheInfo(id); |
| 261 } | 259 } |
| 262 | 260 |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), | 544 id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), |
| 547 browser_context_(browser_context), | 545 browser_context_(browser_context), |
| 548 storage_partition_impl_(storage_partition_impl), | 546 storage_partition_impl_(storage_partition_impl), |
| 549 sudden_termination_allowed_(true), | 547 sudden_termination_allowed_(true), |
| 550 ignore_input_events_(false), | 548 ignore_input_events_(false), |
| 551 is_for_guests_only_(is_for_guests_only), | 549 is_for_guests_only_(is_for_guests_only), |
| 552 gpu_observer_registered_(false), | 550 gpu_observer_registered_(false), |
| 553 delayed_cleanup_needed_(false), | 551 delayed_cleanup_needed_(false), |
| 554 within_process_died_observer_(false), | 552 within_process_died_observer_(false), |
| 555 power_monitor_broadcaster_(this), | 553 power_monitor_broadcaster_(this), |
| 554 #if defined(ENABLE_WEBRTC) |
| 555 webrtc_eventlog_host_(id_), |
| 556 #endif |
| 556 worker_ref_count_(0), | 557 worker_ref_count_(0), |
| 557 max_worker_count_(0), | 558 max_worker_count_(0), |
| 558 permission_service_context_(new PermissionServiceContext(this)), | 559 permission_service_context_(new PermissionServiceContext(this)), |
| 559 channel_connected_(false), | 560 channel_connected_(false), |
| 560 sent_render_process_ready_(false), | 561 sent_render_process_ready_(false), |
| 561 #if defined(OS_ANDROID) | 562 #if defined(OS_ANDROID) |
| 562 never_signaled_(base::WaitableEvent::ResetPolicy::MANUAL, | 563 never_signaled_(base::WaitableEvent::ResetPolicy::MANUAL, |
| 563 base::WaitableEvent::InitialState::NOT_SIGNALED), | 564 base::WaitableEvent::InitialState::NOT_SIGNALED), |
| 564 #endif | 565 #endif |
| 565 weak_factory_(this) { | 566 weak_factory_(this) { |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 storage_partition_impl_->GetAppCacheService(), GetID())); | 926 storage_partition_impl_->GetAppCacheService(), GetID())); |
| 926 AddFilter(new ClipboardMessageFilter(blob_storage_context)); | 927 AddFilter(new ClipboardMessageFilter(blob_storage_context)); |
| 927 AddFilter(new DOMStorageMessageFilter( | 928 AddFilter(new DOMStorageMessageFilter( |
| 928 storage_partition_impl_->GetDOMStorageContext())); | 929 storage_partition_impl_->GetDOMStorageContext())); |
| 929 AddFilter(new IndexedDBDispatcherHost( | 930 AddFilter(new IndexedDBDispatcherHost( |
| 930 GetID(), storage_partition_impl_->GetURLRequestContext(), | 931 GetID(), storage_partition_impl_->GetURLRequestContext(), |
| 931 storage_partition_impl_->GetIndexedDBContext(), | 932 storage_partition_impl_->GetIndexedDBContext(), |
| 932 blob_storage_context.get())); | 933 blob_storage_context.get())); |
| 933 | 934 |
| 934 #if defined(ENABLE_WEBRTC) | 935 #if defined(ENABLE_WEBRTC) |
| 935 peer_connection_tracker_host_ = new PeerConnectionTrackerHost(GetID()); | 936 peer_connection_tracker_host_ = |
| 937 new PeerConnectionTrackerHost(GetID(), &webrtc_eventlog_host_); |
| 936 AddFilter(peer_connection_tracker_host_.get()); | 938 AddFilter(peer_connection_tracker_host_.get()); |
| 937 AddFilter(new MediaStreamDispatcherHost( | 939 AddFilter(new MediaStreamDispatcherHost( |
| 938 GetID(), browser_context->GetResourceContext()->GetMediaDeviceIDSalt(), | 940 GetID(), browser_context->GetResourceContext()->GetMediaDeviceIDSalt(), |
| 939 media_stream_manager)); | 941 media_stream_manager)); |
| 940 AddFilter(new MediaStreamTrackMetricsHost()); | 942 AddFilter(new MediaStreamTrackMetricsHost()); |
| 941 #endif | 943 #endif |
| 942 #if defined(ENABLE_PLUGINS) | 944 #if defined(ENABLE_PLUGINS) |
| 943 AddFilter(new PepperRendererConnection(GetID())); | 945 AddFilter(new PepperRendererConnection(GetID())); |
| 944 #endif | 946 #endif |
| 945 AddFilter(new SpeechRecognitionDispatcherHost( | 947 AddFilter(new SpeechRecognitionDispatcherHost( |
| (...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1750 IPC_MESSAGE_HANDLER(ChildProcessHostMsg_ShutdownRequest, | 1752 IPC_MESSAGE_HANDLER(ChildProcessHostMsg_ShutdownRequest, |
| 1751 OnShutdownRequest) | 1753 OnShutdownRequest) |
| 1752 IPC_MESSAGE_HANDLER(RenderProcessHostMsg_SuddenTerminationChanged, | 1754 IPC_MESSAGE_HANDLER(RenderProcessHostMsg_SuddenTerminationChanged, |
| 1753 SuddenTerminationChanged) | 1755 SuddenTerminationChanged) |
| 1754 IPC_MESSAGE_HANDLER(ViewHostMsg_UserMetricsRecordAction, | 1756 IPC_MESSAGE_HANDLER(ViewHostMsg_UserMetricsRecordAction, |
| 1755 OnUserMetricsRecordAction) | 1757 OnUserMetricsRecordAction) |
| 1756 IPC_MESSAGE_HANDLER(ViewHostMsg_Close_ACK, OnCloseACK) | 1758 IPC_MESSAGE_HANDLER(ViewHostMsg_Close_ACK, OnCloseACK) |
| 1757 #if defined(ENABLE_WEBRTC) | 1759 #if defined(ENABLE_WEBRTC) |
| 1758 IPC_MESSAGE_HANDLER(AecDumpMsg_RegisterAecDumpConsumer, | 1760 IPC_MESSAGE_HANDLER(AecDumpMsg_RegisterAecDumpConsumer, |
| 1759 OnRegisterAecDumpConsumer) | 1761 OnRegisterAecDumpConsumer) |
| 1760 IPC_MESSAGE_HANDLER(WebRTCEventLogMsg_RegisterEventLogConsumer, | |
| 1761 OnRegisterEventLogConsumer) | |
| 1762 IPC_MESSAGE_HANDLER(AecDumpMsg_UnregisterAecDumpConsumer, | 1762 IPC_MESSAGE_HANDLER(AecDumpMsg_UnregisterAecDumpConsumer, |
| 1763 OnUnregisterAecDumpConsumer) | 1763 OnUnregisterAecDumpConsumer) |
| 1764 IPC_MESSAGE_HANDLER(WebRTCEventLogMsg_UnregisterEventLogConsumer, | |
| 1765 OnUnregisterEventLogConsumer) | |
| 1766 #endif | 1764 #endif |
| 1767 // Adding single handlers for your service here is fine, but once your | 1765 // Adding single handlers for your service here is fine, but once your |
| 1768 // service needs more than one handler, please extract them into a new | 1766 // service needs more than one handler, please extract them into a new |
| 1769 // message filter and add that filter to CreateMessageFilters(). | 1767 // message filter and add that filter to CreateMessageFilters(). |
| 1770 IPC_END_MESSAGE_MAP() | 1768 IPC_END_MESSAGE_MAP() |
| 1771 | 1769 |
| 1772 return true; | 1770 return true; |
| 1773 } | 1771 } |
| 1774 | 1772 |
| 1775 // Dispatch incoming messages to the appropriate IPC::Listener. | 1773 // Dispatch incoming messages to the appropriate IPC::Listener. |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2014 // guaranteed during the lifetime of the closure. | 2012 // guaranteed during the lifetime of the closure. |
| 2015 if (audio_input_renderer_host_) { | 2013 if (audio_input_renderer_host_) { |
| 2016 // Not null if RenderProcessHostImpl::Init has already been called. | 2014 // Not null if RenderProcessHostImpl::Init has already been called. |
| 2017 BrowserThread::PostTask( | 2015 BrowserThread::PostTask( |
| 2018 BrowserThread::IO, FROM_HERE, | 2016 BrowserThread::IO, FROM_HERE, |
| 2019 base::Bind(&AudioInputRendererHost::DisableDebugRecording, | 2017 base::Bind(&AudioInputRendererHost::DisableDebugRecording, |
| 2020 audio_input_renderer_host_)); | 2018 audio_input_renderer_host_)); |
| 2021 } | 2019 } |
| 2022 } | 2020 } |
| 2023 | 2021 |
| 2024 void RenderProcessHostImpl::EnableEventLogRecordings( | 2022 bool RenderProcessHostImpl::StartWebRTCEventLog( |
| 2025 const base::FilePath& file) { | 2023 const base::FilePath& file_path) { |
| 2026 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 2024 return webrtc_eventlog_host_.StartWebRTCEventLog(file_path); |
| 2027 | |
| 2028 // Enable Event log for each registered consumer. | |
| 2029 base::FilePath file_with_extensions = GetEventLogFilePathWithExtensions(file); | |
| 2030 for (int id : aec_dump_consumers_) | |
| 2031 EnableEventLogForId(file_with_extensions, id); | |
| 2032 } | 2025 } |
| 2033 | 2026 |
| 2034 void RenderProcessHostImpl::DisableEventLogRecordings() { | 2027 bool RenderProcessHostImpl::StopWebRTCEventLog() { |
| 2035 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 2028 return webrtc_eventlog_host_.StopWebRTCEventLog(); |
| 2036 | |
| 2037 // Posting on the FILE thread and then replying back on the UI thread is only | |
| 2038 // for avoiding races between enable and disable. Nothing is done on the FILE | |
| 2039 // thread. | |
| 2040 BrowserThread::PostTaskAndReply( | |
| 2041 BrowserThread::FILE, FROM_HERE, base::Bind(&base::DoNothing), | |
| 2042 base::Bind(&RenderProcessHostImpl::SendDisableEventLogToRenderer, | |
| 2043 weak_factory_.GetWeakPtr())); | |
| 2044 } | 2029 } |
| 2045 | 2030 |
| 2046 void RenderProcessHostImpl::SetWebRtcLogMessageCallback( | 2031 void RenderProcessHostImpl::SetWebRtcLogMessageCallback( |
| 2047 base::Callback<void(const std::string&)> callback) { | 2032 base::Callback<void(const std::string&)> callback) { |
| 2048 #if defined(ENABLE_WEBRTC) | 2033 #if defined(ENABLE_WEBRTC) |
| 2049 BrowserMainLoop::GetInstance()->media_stream_manager()-> | 2034 BrowserMainLoop::GetInstance()->media_stream_manager()-> |
| 2050 RegisterNativeLogCallback(GetID(), callback); | 2035 RegisterNativeLogCallback(GetID(), callback); |
| 2051 #endif | 2036 #endif |
| 2052 } | 2037 } |
| 2053 | 2038 |
| (...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2675 } | 2660 } |
| 2676 | 2661 |
| 2677 #if defined(ENABLE_WEBRTC) | 2662 #if defined(ENABLE_WEBRTC) |
| 2678 void RenderProcessHostImpl::OnRegisterAecDumpConsumer(int id) { | 2663 void RenderProcessHostImpl::OnRegisterAecDumpConsumer(int id) { |
| 2679 BrowserThread::PostTask( | 2664 BrowserThread::PostTask( |
| 2680 BrowserThread::UI, FROM_HERE, | 2665 BrowserThread::UI, FROM_HERE, |
| 2681 base::Bind(&RenderProcessHostImpl::RegisterAecDumpConsumerOnUIThread, | 2666 base::Bind(&RenderProcessHostImpl::RegisterAecDumpConsumerOnUIThread, |
| 2682 weak_factory_.GetWeakPtr(), id)); | 2667 weak_factory_.GetWeakPtr(), id)); |
| 2683 } | 2668 } |
| 2684 | 2669 |
| 2685 void RenderProcessHostImpl::OnRegisterEventLogConsumer(int id) { | |
| 2686 BrowserThread::PostTask( | |
| 2687 BrowserThread::UI, FROM_HERE, | |
| 2688 base::Bind(&RenderProcessHostImpl::RegisterEventLogConsumerOnUIThread, | |
| 2689 weak_factory_.GetWeakPtr(), id)); | |
| 2690 } | |
| 2691 | |
| 2692 void RenderProcessHostImpl::OnUnregisterAecDumpConsumer(int id) { | 2670 void RenderProcessHostImpl::OnUnregisterAecDumpConsumer(int id) { |
| 2693 BrowserThread::PostTask( | 2671 BrowserThread::PostTask( |
| 2694 BrowserThread::UI, FROM_HERE, | 2672 BrowserThread::UI, FROM_HERE, |
| 2695 base::Bind(&RenderProcessHostImpl::UnregisterAecDumpConsumerOnUIThread, | 2673 base::Bind(&RenderProcessHostImpl::UnregisterAecDumpConsumerOnUIThread, |
| 2696 weak_factory_.GetWeakPtr(), id)); | 2674 weak_factory_.GetWeakPtr(), id)); |
| 2697 } | 2675 } |
| 2698 | 2676 |
| 2699 void RenderProcessHostImpl::OnUnregisterEventLogConsumer(int id) { | |
| 2700 BrowserThread::PostTask( | |
| 2701 BrowserThread::UI, FROM_HERE, | |
| 2702 base::Bind(&RenderProcessHostImpl::UnregisterEventLogConsumerOnUIThread, | |
| 2703 weak_factory_.GetWeakPtr(), id)); | |
| 2704 } | |
| 2705 | |
| 2706 void RenderProcessHostImpl::RegisterAecDumpConsumerOnUIThread(int id) { | 2677 void RenderProcessHostImpl::RegisterAecDumpConsumerOnUIThread(int id) { |
| 2707 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 2678 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 2708 aec_dump_consumers_.push_back(id); | 2679 aec_dump_consumers_.push_back(id); |
| 2709 | 2680 |
| 2710 if (WebRTCInternals::GetInstance()->IsAudioDebugRecordingsEnabled()) { | 2681 if (WebRTCInternals::GetInstance()->IsAudioDebugRecordingsEnabled()) { |
| 2711 base::FilePath file_with_extensions = GetAecDumpFilePathWithExtensions( | 2682 base::FilePath file_with_extensions = GetAecDumpFilePathWithExtensions( |
| 2712 WebRTCInternals::GetInstance()->GetAudioDebugRecordingsFilePath()); | 2683 WebRTCInternals::GetInstance()->GetAudioDebugRecordingsFilePath()); |
| 2713 EnableAecDumpForId(file_with_extensions, id); | 2684 EnableAecDumpForId(file_with_extensions, id); |
| 2714 } | 2685 } |
| 2715 } | 2686 } |
| 2716 | 2687 |
| 2717 void RenderProcessHostImpl::RegisterEventLogConsumerOnUIThread(int id) { | |
| 2718 DCHECK_CURRENTLY_ON(BrowserThread::UI); | |
| 2719 aec_dump_consumers_.push_back(id); | |
| 2720 | |
| 2721 if (WebRTCInternals::GetInstance()->IsEventLogRecordingsEnabled()) { | |
| 2722 base::FilePath file_with_extensions = GetEventLogFilePathWithExtensions( | |
| 2723 WebRTCInternals::GetInstance()->GetEventLogRecordingsFilePath()); | |
| 2724 EnableEventLogForId(file_with_extensions, id); | |
| 2725 } | |
| 2726 } | |
| 2727 | |
| 2728 void RenderProcessHostImpl::UnregisterAecDumpConsumerOnUIThread(int id) { | 2688 void RenderProcessHostImpl::UnregisterAecDumpConsumerOnUIThread(int id) { |
| 2729 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 2689 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 2730 for (std::vector<int>::iterator it = aec_dump_consumers_.begin(); | 2690 for (std::vector<int>::iterator it = aec_dump_consumers_.begin(); |
| 2731 it != aec_dump_consumers_.end(); ++it) { | 2691 it != aec_dump_consumers_.end(); ++it) { |
| 2732 if (*it == id) { | 2692 if (*it == id) { |
| 2733 aec_dump_consumers_.erase(it); | 2693 aec_dump_consumers_.erase(it); |
| 2734 break; | 2694 break; |
| 2735 } | 2695 } |
| 2736 } | 2696 } |
| 2737 } | 2697 } |
| 2738 | 2698 |
| 2739 void RenderProcessHostImpl::UnregisterEventLogConsumerOnUIThread(int id) { | |
| 2740 DCHECK_CURRENTLY_ON(BrowserThread::UI); | |
| 2741 for (std::vector<int>::iterator it = aec_dump_consumers_.begin(); | |
| 2742 it != aec_dump_consumers_.end(); ++it) { | |
| 2743 if (*it == id) { | |
| 2744 aec_dump_consumers_.erase(it); | |
| 2745 break; | |
| 2746 } | |
| 2747 } | |
| 2748 } | |
| 2749 | |
| 2750 void RenderProcessHostImpl::EnableAecDumpForId(const base::FilePath& file, | 2699 void RenderProcessHostImpl::EnableAecDumpForId(const base::FilePath& file, |
| 2751 int id) { | 2700 int id) { |
| 2752 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 2701 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 2753 BrowserThread::PostTaskAndReplyWithResult( | 2702 BrowserThread::PostTaskAndReplyWithResult( |
| 2754 BrowserThread::FILE, FROM_HERE, | 2703 BrowserThread::FILE, FROM_HERE, |
| 2755 base::Bind(&CreateFileForProcess, file.AddExtension(IntToStringType(id))), | 2704 base::Bind(&CreateFileForProcess, file.AddExtension(IntToStringType(id))), |
| 2756 base::Bind(&RenderProcessHostImpl::SendAecDumpFileToRenderer, | 2705 base::Bind(&RenderProcessHostImpl::SendAecDumpFileToRenderer, |
| 2757 weak_factory_.GetWeakPtr(), id)); | 2706 weak_factory_.GetWeakPtr(), id)); |
| 2758 } | 2707 } |
| 2759 | 2708 |
| 2760 void RenderProcessHostImpl::EnableEventLogForId(const base::FilePath& file, | |
| 2761 int id) { | |
| 2762 DCHECK_CURRENTLY_ON(BrowserThread::UI); | |
| 2763 BrowserThread::PostTaskAndReplyWithResult( | |
| 2764 BrowserThread::FILE, FROM_HERE, | |
| 2765 base::Bind(&CreateFileForProcess, file.AddExtension(IntToStringType(id))), | |
| 2766 base::Bind(&RenderProcessHostImpl::SendEventLogFileToRenderer, | |
| 2767 weak_factory_.GetWeakPtr(), id)); | |
| 2768 } | |
| 2769 | |
| 2770 void RenderProcessHostImpl::SendAecDumpFileToRenderer( | 2709 void RenderProcessHostImpl::SendAecDumpFileToRenderer( |
| 2771 int id, | 2710 int id, |
| 2772 IPC::PlatformFileForTransit file_for_transit) { | 2711 IPC::PlatformFileForTransit file_for_transit) { |
| 2773 if (file_for_transit == IPC::InvalidPlatformFileForTransit()) | 2712 if (file_for_transit == IPC::InvalidPlatformFileForTransit()) |
| 2774 return; | 2713 return; |
| 2775 Send(new AecDumpMsg_EnableAecDump(id, file_for_transit)); | 2714 Send(new AecDumpMsg_EnableAecDump(id, file_for_transit)); |
| 2776 } | 2715 } |
| 2777 | 2716 |
| 2778 void RenderProcessHostImpl::SendEventLogFileToRenderer( | |
| 2779 int id, | |
| 2780 IPC::PlatformFileForTransit file_for_transit) { | |
| 2781 if (file_for_transit == IPC::InvalidPlatformFileForTransit()) | |
| 2782 return; | |
| 2783 Send(new WebRTCEventLogMsg_EnableEventLog(id, file_for_transit)); | |
| 2784 } | |
| 2785 | |
| 2786 void RenderProcessHostImpl::SendDisableAecDumpToRenderer() { | 2717 void RenderProcessHostImpl::SendDisableAecDumpToRenderer() { |
| 2787 Send(new AecDumpMsg_DisableAecDump()); | 2718 Send(new AecDumpMsg_DisableAecDump()); |
| 2788 } | 2719 } |
| 2789 | 2720 |
| 2790 void RenderProcessHostImpl::SendDisableEventLogToRenderer() { | |
| 2791 Send(new WebRTCEventLogMsg_DisableEventLog()); | |
| 2792 } | |
| 2793 | |
| 2794 base::FilePath RenderProcessHostImpl::GetAecDumpFilePathWithExtensions( | 2721 base::FilePath RenderProcessHostImpl::GetAecDumpFilePathWithExtensions( |
| 2795 const base::FilePath& file) { | 2722 const base::FilePath& file) { |
| 2796 return file.AddExtension(IntToStringType(base::GetProcId(GetHandle()))) | 2723 return file.AddExtension(IntToStringType(base::GetProcId(GetHandle()))) |
| 2797 .AddExtension(kAecDumpFileNameAddition); | 2724 .AddExtension(kAecDumpFileNameAddition); |
| 2798 } | 2725 } |
| 2799 | |
| 2800 base::FilePath RenderProcessHostImpl::GetEventLogFilePathWithExtensions( | |
| 2801 const base::FilePath& file) { | |
| 2802 return file.AddExtension(IntToStringType(base::GetProcId(GetHandle()))) | |
| 2803 .AddExtension(kEventLogFileNameAddition); | |
| 2804 } | |
| 2805 #endif // defined(ENABLE_WEBRTC) | 2726 #endif // defined(ENABLE_WEBRTC) |
| 2806 | 2727 |
| 2807 void RenderProcessHostImpl::GetAudioOutputControllers( | 2728 void RenderProcessHostImpl::GetAudioOutputControllers( |
| 2808 const GetAudioOutputControllersCallback& callback) const { | 2729 const GetAudioOutputControllersCallback& callback) const { |
| 2809 audio_renderer_host()->GetOutputControllers(callback); | 2730 audio_renderer_host()->GetOutputControllers(callback); |
| 2810 } | 2731 } |
| 2811 | 2732 |
| 2812 BluetoothAdapterFactoryWrapper* | 2733 BluetoothAdapterFactoryWrapper* |
| 2813 RenderProcessHostImpl::GetBluetoothAdapterFactoryWrapper() { | 2734 RenderProcessHostImpl::GetBluetoothAdapterFactoryWrapper() { |
| 2814 return &bluetooth_adapter_factory_wrapper_; | 2735 return &bluetooth_adapter_factory_wrapper_; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2846 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; | 2767 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; |
| 2847 | 2768 |
| 2848 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. Alias | 2769 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. Alias |
| 2849 // enough information here so that we can determine what the bad message was. | 2770 // enough information here so that we can determine what the bad message was. |
| 2850 base::debug::Alias(&error); | 2771 base::debug::Alias(&error); |
| 2851 bad_message::ReceivedBadMessage(process.get(), | 2772 bad_message::ReceivedBadMessage(process.get(), |
| 2852 bad_message::RPH_MOJO_PROCESS_ERROR); | 2773 bad_message::RPH_MOJO_PROCESS_ERROR); |
| 2853 } | 2774 } |
| 2854 | 2775 |
| 2855 } // namespace content | 2776 } // namespace content |
| OLD | NEW |