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

Unified Diff: content/browser/devtools/render_frame_devtools_agent_host.cc

Issue 2780373002: Use observer pattern instead of sniffing SwapCompositorFrame IPC (Closed)
Patch Set: Addressed comments Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/devtools/render_frame_devtools_agent_host.cc
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc
index 508cccda2de748dd43eea03946069f59adf4f9ee..8823e3aece35253632326b3994ab11b11a37f383 100644
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc
@@ -860,15 +860,6 @@ void RenderFrameDevToolsAgentHost::RenderProcessGone(
}
bool RenderFrameDevToolsAgentHost::OnMessageReceived(
- const IPC::Message& message) {
- if (!current_)
- return false;
- if (message.type() == ViewHostMsg_SwapCompositorFrame::ID)
- OnSwapCompositorFrame(message);
- return false;
-}
-
-bool RenderFrameDevToolsAgentHost::OnMessageReceived(
const IPC::Message& message,
RenderFrameHost* render_frame_host) {
bool is_current = current_ && current_->host() == render_frame_host;
@@ -924,6 +915,27 @@ void RenderFrameDevToolsAgentHost::WasHidden() {
#endif
}
+void RenderFrameDevToolsAgentHost::DidReceiveCompositorFrame() {
+ if (!session())
+ return;
+ const cc::CompositorFrameMetadata& metadata =
+ RenderWidgetHostImpl::From(
+ web_contents()->GetRenderViewHost()->GetWidget())
+ ->last_frame_metadata();
+ protocol::PageHandler* page_handler =
+ protocol::PageHandler::FromSession(session());
+ if (page_handler)
+ page_handler->OnSwapCompositorFrame(metadata.Clone());
+ protocol::InputHandler::FromSession(session())->OnSwapCompositorFrame(
+ metadata);
+ protocol::TracingHandler* tracing_handler =
+ protocol::TracingHandler::FromSession(session());
+ if (frame_trace_recorder_ && tracing_handler->did_initiate_recording()) {
+ frame_trace_recorder_->OnSwapCompositorFrame(
+ current_ ? current_->host() : nullptr, metadata);
+ }
+}
+
void RenderFrameDevToolsAgentHost::
DispatchBufferedProtocolMessagesIfNecessary() {
if (navigating_handles_.empty() &&
@@ -1085,28 +1097,6 @@ base::TimeTicks RenderFrameDevToolsAgentHost::GetLastActivityTime() {
return base::TimeTicks();
}
-void RenderFrameDevToolsAgentHost::OnSwapCompositorFrame(
- const IPC::Message& message) {
- ViewHostMsg_SwapCompositorFrame::Param param;
- if (!ViewHostMsg_SwapCompositorFrame::Read(&message, &param))
- return;
- if (!session())
- return;
- protocol::PageHandler* page_handler =
- protocol::PageHandler::FromSession(session());
- if (page_handler) {
- page_handler->OnSwapCompositorFrame(std::move(std::get<2>(param).metadata));
- }
- protocol::InputHandler::FromSession(session())->OnSwapCompositorFrame(
- std::get<2>(param).metadata);
- protocol::TracingHandler* tracing_handler =
- protocol::TracingHandler::FromSession(session());
- if (frame_trace_recorder_ && tracing_handler->did_initiate_recording()) {
- frame_trace_recorder_->OnSwapCompositorFrame(
- current_ ? current_->host() : nullptr, std::get<2>(param).metadata);
- }
-}
-
void RenderFrameDevToolsAgentHost::SignalSynchronousSwapCompositorFrame(
RenderFrameHost* frame_host,
cc::CompositorFrameMetadata frame_metadata) {

Powered by Google App Engine
This is Rietveld 408576698