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 |