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 |