| OLD | NEW |
| 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 #include "content/browser/devtools/render_frame_devtools_agent_host.h" | 5 #include "content/browser/devtools/render_frame_devtools_agent_host.h" |
| 6 | 6 |
| 7 #include <tuple> | 7 #include <tuple> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/guid.h" | 10 #include "base/guid.h" |
| (...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 if (session()) { | 853 if (session()) { |
| 854 protocol::InspectorHandler::FromSession(session()) | 854 protocol::InspectorHandler::FromSession(session()) |
| 855 ->TargetDetached("Render process gone."); | 855 ->TargetDetached("Render process gone."); |
| 856 } | 856 } |
| 857 break; | 857 break; |
| 858 } | 858 } |
| 859 DCHECK(CheckConsistency()); | 859 DCHECK(CheckConsistency()); |
| 860 } | 860 } |
| 861 | 861 |
| 862 bool RenderFrameDevToolsAgentHost::OnMessageReceived( | 862 bool RenderFrameDevToolsAgentHost::OnMessageReceived( |
| 863 const IPC::Message& message) { | |
| 864 if (!current_) | |
| 865 return false; | |
| 866 if (message.type() == ViewHostMsg_SwapCompositorFrame::ID) | |
| 867 OnSwapCompositorFrame(message); | |
| 868 return false; | |
| 869 } | |
| 870 | |
| 871 bool RenderFrameDevToolsAgentHost::OnMessageReceived( | |
| 872 const IPC::Message& message, | 863 const IPC::Message& message, |
| 873 RenderFrameHost* render_frame_host) { | 864 RenderFrameHost* render_frame_host) { |
| 874 bool is_current = current_ && current_->host() == render_frame_host; | 865 bool is_current = current_ && current_->host() == render_frame_host; |
| 875 bool is_pending = pending_ && pending_->host() == render_frame_host; | 866 bool is_pending = pending_ && pending_->host() == render_frame_host; |
| 876 if (!is_current && !is_pending) | 867 if (!is_current && !is_pending) |
| 877 return false; | 868 return false; |
| 878 if (!IsAttached()) | 869 if (!IsAttached()) |
| 879 return false; | 870 return false; |
| 880 bool handled = true; | 871 bool handled = true; |
| 881 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(RenderFrameDevToolsAgentHost, message, | 872 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(RenderFrameDevToolsAgentHost, message, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 917 void RenderFrameDevToolsAgentHost::WasShown() { | 908 void RenderFrameDevToolsAgentHost::WasShown() { |
| 918 CreatePowerSaveBlocker(); | 909 CreatePowerSaveBlocker(); |
| 919 } | 910 } |
| 920 | 911 |
| 921 void RenderFrameDevToolsAgentHost::WasHidden() { | 912 void RenderFrameDevToolsAgentHost::WasHidden() { |
| 922 #if defined(OS_ANDROID) | 913 #if defined(OS_ANDROID) |
| 923 power_save_blocker_.reset(); | 914 power_save_blocker_.reset(); |
| 924 #endif | 915 #endif |
| 925 } | 916 } |
| 926 | 917 |
| 918 void RenderFrameDevToolsAgentHost::DidReceiveCompositorFrame() { |
| 919 if (!session()) |
| 920 return; |
| 921 const cc::CompositorFrameMetadata& metadata = |
| 922 RenderWidgetHostImpl::From( |
| 923 web_contents()->GetRenderViewHost()->GetWidget()) |
| 924 ->last_frame_metadata(); |
| 925 protocol::PageHandler* page_handler = |
| 926 protocol::PageHandler::FromSession(session()); |
| 927 if (page_handler) |
| 928 page_handler->OnSwapCompositorFrame(metadata.Clone()); |
| 929 protocol::InputHandler::FromSession(session())->OnSwapCompositorFrame( |
| 930 metadata); |
| 931 protocol::TracingHandler* tracing_handler = |
| 932 protocol::TracingHandler::FromSession(session()); |
| 933 if (frame_trace_recorder_ && tracing_handler->did_initiate_recording()) { |
| 934 frame_trace_recorder_->OnSwapCompositorFrame( |
| 935 current_ ? current_->host() : nullptr, metadata); |
| 936 } |
| 937 } |
| 938 |
| 927 void RenderFrameDevToolsAgentHost:: | 939 void RenderFrameDevToolsAgentHost:: |
| 928 DispatchBufferedProtocolMessagesIfNecessary() { | 940 DispatchBufferedProtocolMessagesIfNecessary() { |
| 929 if (navigating_handles_.empty() && | 941 if (navigating_handles_.empty() && |
| 930 in_navigation_protocol_message_buffer_.size()) { | 942 in_navigation_protocol_message_buffer_.size()) { |
| 931 DCHECK(current_); | 943 DCHECK(current_); |
| 932 for (const auto& pair : in_navigation_protocol_message_buffer_) { | 944 for (const auto& pair : in_navigation_protocol_message_buffer_) { |
| 933 current_->DispatchProtocolMessage( | 945 current_->DispatchProtocolMessage( |
| 934 pair.second.session_id, pair.first, pair.second.method, | 946 pair.second.session_id, pair.first, pair.second.method, |
| 935 pair.second.message); | 947 pair.second.message); |
| 936 } | 948 } |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1078 } | 1090 } |
| 1079 return false; | 1091 return false; |
| 1080 } | 1092 } |
| 1081 | 1093 |
| 1082 base::TimeTicks RenderFrameDevToolsAgentHost::GetLastActivityTime() { | 1094 base::TimeTicks RenderFrameDevToolsAgentHost::GetLastActivityTime() { |
| 1083 if (content::WebContents* contents = web_contents()) | 1095 if (content::WebContents* contents = web_contents()) |
| 1084 return contents->GetLastActiveTime(); | 1096 return contents->GetLastActiveTime(); |
| 1085 return base::TimeTicks(); | 1097 return base::TimeTicks(); |
| 1086 } | 1098 } |
| 1087 | 1099 |
| 1088 void RenderFrameDevToolsAgentHost::OnSwapCompositorFrame( | |
| 1089 const IPC::Message& message) { | |
| 1090 ViewHostMsg_SwapCompositorFrame::Param param; | |
| 1091 if (!ViewHostMsg_SwapCompositorFrame::Read(&message, ¶m)) | |
| 1092 return; | |
| 1093 if (!session()) | |
| 1094 return; | |
| 1095 protocol::PageHandler* page_handler = | |
| 1096 protocol::PageHandler::FromSession(session()); | |
| 1097 if (page_handler) { | |
| 1098 page_handler->OnSwapCompositorFrame(std::move(std::get<2>(param).metadata)); | |
| 1099 } | |
| 1100 protocol::InputHandler::FromSession(session())->OnSwapCompositorFrame( | |
| 1101 std::get<2>(param).metadata); | |
| 1102 protocol::TracingHandler* tracing_handler = | |
| 1103 protocol::TracingHandler::FromSession(session()); | |
| 1104 if (frame_trace_recorder_ && tracing_handler->did_initiate_recording()) { | |
| 1105 frame_trace_recorder_->OnSwapCompositorFrame( | |
| 1106 current_ ? current_->host() : nullptr, std::get<2>(param).metadata); | |
| 1107 } | |
| 1108 } | |
| 1109 | |
| 1110 void RenderFrameDevToolsAgentHost::SignalSynchronousSwapCompositorFrame( | 1100 void RenderFrameDevToolsAgentHost::SignalSynchronousSwapCompositorFrame( |
| 1111 RenderFrameHost* frame_host, | 1101 RenderFrameHost* frame_host, |
| 1112 cc::CompositorFrameMetadata frame_metadata) { | 1102 cc::CompositorFrameMetadata frame_metadata) { |
| 1113 scoped_refptr<RenderFrameDevToolsAgentHost> dtah(FindAgentHost(frame_host)); | 1103 scoped_refptr<RenderFrameDevToolsAgentHost> dtah(FindAgentHost(frame_host)); |
| 1114 if (dtah) { | 1104 if (dtah) { |
| 1115 // Unblock the compositor. | 1105 // Unblock the compositor. |
| 1116 BrowserThread::PostTask( | 1106 BrowserThread::PostTask( |
| 1117 BrowserThread::UI, FROM_HERE, | 1107 BrowserThread::UI, FROM_HERE, |
| 1118 base::Bind( | 1108 base::Bind( |
| 1119 &RenderFrameDevToolsAgentHost::SynchronousSwapCompositorFrame, | 1109 &RenderFrameDevToolsAgentHost::SynchronousSwapCompositorFrame, |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1177 RenderFrameHost* host) { | 1167 RenderFrameHost* host) { |
| 1178 return (current_ && current_->host() == host) || | 1168 return (current_ && current_->host() == host) || |
| 1179 (pending_ && pending_->host() == host); | 1169 (pending_ && pending_->host() == host); |
| 1180 } | 1170 } |
| 1181 | 1171 |
| 1182 bool RenderFrameDevToolsAgentHost::IsChildFrame() { | 1172 bool RenderFrameDevToolsAgentHost::IsChildFrame() { |
| 1183 return current_ && current_->host()->GetParent(); | 1173 return current_ && current_->host()->GetParent(); |
| 1184 } | 1174 } |
| 1185 | 1175 |
| 1186 } // namespace content | 1176 } // namespace content |
| OLD | NEW |