chromeos: refactor MusEmbeddedFrame into its own file
And makes MusEmbeddedFrame talk to a delegate rather than directly to
RenderFrameProxy. BrowserPlugin is going to use this class, hence
refactoring to make it easy to adapt to both.
BUG=755440
TEST=none
Change-Id: Ica1fe8971e0f11b9174771b857aec5d679d8a3e6
Reviewed-on: https://chromium-review.googlesource.com/729054
Commit-Queue: Scott Violet <[email protected]>
Reviewed-by: Ken Buchanan <[email protected]>
Cr-Commit-Position: refs/heads/master@{#510590}
diff --git a/content/renderer/mus/BUILD.gn b/content/renderer/mus/BUILD.gn
index 502f4a7..2271a15 100644
--- a/content/renderer/mus/BUILD.gn
+++ b/content/renderer/mus/BUILD.gn
@@ -7,6 +7,9 @@
visibility = [ "//content/renderer/*" ]
sources = [
+ "mus_embedded_frame.cc",
+ "mus_embedded_frame.h",
+ "mus_embedded_frame_delegate.h",
"render_widget_window_tree_client_factory.cc",
"render_widget_window_tree_client_factory.h",
"renderer_window_tree_client.cc",
diff --git a/content/renderer/mus/mus_embedded_frame.cc b/content/renderer/mus/mus_embedded_frame.cc
new file mode 100644
index 0000000..a49a33c
--- /dev/null
+++ b/content/renderer/mus/mus_embedded_frame.cc
@@ -0,0 +1,98 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/renderer/mus/mus_embedded_frame.h"
+
+#include <map>
+
+#include "base/command_line.h"
+#include "base/lazy_instance.h"
+#include "cc/base/switches.h"
+#include "components/viz/client/client_layer_tree_frame_sink.h"
+#include "components/viz/client/hit_test_data_provider.h"
+#include "components/viz/client/local_surface_id_provider.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
+#include "content/renderer/mus/renderer_window_tree_client.h"
+
+namespace content {
+namespace {
+
+// Callback from embedding a child frame.
+void OnEmbedAck(bool success) {
+ DCHECK(success);
+}
+
+} // namespace
+
+MusEmbeddedFrame::~MusEmbeddedFrame() {
+ renderer_window_tree_client_->OnEmbeddedFrameDestroyed(this);
+ // If there is |pending_state_| it means we didn't actually create the window
+ // yet and there is nothing to do.
+ if (pending_state_)
+ return;
+
+ window_tree()->DeleteWindow(GetAndAdvanceNextChangeId(), window_id_);
+}
+
+void MusEmbeddedFrame::SetWindowBounds(
+ const viz::LocalSurfaceId& local_surface_id,
+ const gfx::Rect& bounds) {
+ if (!window_tree()) {
+ DCHECK(pending_state_);
+ pending_state_->bounds = bounds;
+ pending_state_->local_surface_id = local_surface_id;
+ pending_state_->was_set_window_bounds_called = true;
+ return;
+ }
+
+ window_tree()->SetWindowBounds(GetAndAdvanceNextChangeId(), window_id_,
+ bounds, local_surface_id);
+}
+
+MusEmbeddedFrame::MusEmbeddedFrame(
+ RendererWindowTreeClient* renderer_window_tree_client,
+ MusEmbeddedFrameDelegate* delegate,
+ ui::ClientSpecificId window_id,
+ const base::UnguessableToken& token)
+ : renderer_window_tree_client_(renderer_window_tree_client),
+ delegate_(delegate),
+ window_id_(window_id) {
+ if (!window_tree()) {
+ pending_state_ = base::MakeUnique<PendingState>();
+ pending_state_->token = token;
+ return;
+ }
+ CreateChildWindowAndEmbed(token);
+}
+
+void MusEmbeddedFrame::CreateChildWindowAndEmbed(
+ const base::UnguessableToken& token) {
+ window_tree()->NewWindow(GetAndAdvanceNextChangeId(), window_id_,
+ base::nullopt);
+ window_tree()->AddWindow(GetAndAdvanceNextChangeId(),
+ renderer_window_tree_client_->root_window_id_,
+ window_id_);
+ window_tree()->EmbedUsingToken(window_id_, token, 0, base::Bind(&OnEmbedAck));
+}
+
+void MusEmbeddedFrame::OnTreeAvailable() {
+ std::unique_ptr<PendingState> pending_state = std::move(pending_state_);
+ CreateChildWindowAndEmbed(pending_state->token);
+ if (pending_state->was_set_window_bounds_called)
+ SetWindowBounds(pending_state->local_surface_id, pending_state->bounds);
+}
+
+uint32_t MusEmbeddedFrame::GetAndAdvanceNextChangeId() {
+ return renderer_window_tree_client_->GetAndAdvanceNextChangeId();
+}
+
+ui::mojom::WindowTree* MusEmbeddedFrame::window_tree() {
+ return renderer_window_tree_client_->tree_.get();
+}
+
+MusEmbeddedFrame::PendingState::PendingState() = default;
+
+MusEmbeddedFrame::PendingState::~PendingState() = default;
+
+} // namespace content
diff --git a/content/renderer/mus/mus_embedded_frame.h b/content/renderer/mus/mus_embedded_frame.h
new file mode 100644
index 0000000..0249333
--- /dev/null
+++ b/content/renderer/mus/mus_embedded_frame.h
@@ -0,0 +1,80 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_RENDERER_MUS_MUS_EMBEDDED_FRAME_H_
+#define CONTENT_RENDERER_MUS_MUS_EMBEDDED_FRAME_H_
+
+#include <memory>
+
+#include "base/macros.h"
+#include "base/unguessable_token.h"
+#include "components/viz/common/surfaces/local_surface_id.h"
+#include "services/ui/common/types.h"
+#include "ui/gfx/geometry/rect.h"
+
+namespace ui {
+namespace mojom {
+class WindowTree;
+}
+} // namespace ui
+
+namespace content {
+
+class MusEmbeddedFrameDelegate;
+class RendererWindowTreeClient;
+
+// MusEmbeddedFrame represents an embedding of an OOPIF frame. Internally this
+// creates a window in the window server and calls Embed().
+class MusEmbeddedFrame {
+ public:
+ ~MusEmbeddedFrame();
+
+ // Sets the bounds (in pixels) of the embedded frame.
+ void SetWindowBounds(const viz::LocalSurfaceId& local_surface_id,
+ const gfx::Rect& bounds);
+
+ private:
+ friend class RendererWindowTreeClient;
+
+ // Stores state that needs to pushed to the server once the connection has
+ // been established (OnEmbed() is called).
+ struct PendingState {
+ PendingState();
+ ~PendingState();
+
+ base::UnguessableToken token;
+ viz::LocalSurfaceId local_surface_id;
+ gfx::Rect bounds;
+ // True if SetWindowBounds() was called.
+ bool was_set_window_bounds_called = false;
+ };
+
+ MusEmbeddedFrame(RendererWindowTreeClient* renderer_window_tree_client,
+ MusEmbeddedFrameDelegate* delegate,
+ ui::ClientSpecificId window_id,
+ const base::UnguessableToken& token);
+
+ // Called once the WindowTree has been obtained. This is only called if
+ // the MusEmbeddedFrame is created before the WindowTree has been obtained.
+ void OnTreeAvailable();
+
+ // Does the actual embedding.
+ void CreateChildWindowAndEmbed(const base::UnguessableToken& token);
+
+ uint32_t GetAndAdvanceNextChangeId();
+
+ ui::mojom::WindowTree* window_tree();
+
+ RendererWindowTreeClient* renderer_window_tree_client_;
+ MusEmbeddedFrameDelegate* delegate_;
+ const ui::ClientSpecificId window_id_;
+
+ std::unique_ptr<PendingState> pending_state_;
+
+ DISALLOW_COPY_AND_ASSIGN(MusEmbeddedFrame);
+};
+
+} // namespace content
+
+#endif // CONTENT_RENDERER_MUS_MUS_EMBEDDED_FRAME_H_
diff --git a/content/renderer/mus/mus_embedded_frame_delegate.h b/content/renderer/mus/mus_embedded_frame_delegate.h
new file mode 100644
index 0000000..4c6be417
--- /dev/null
+++ b/content/renderer/mus/mus_embedded_frame_delegate.h
@@ -0,0 +1,31 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_RENDERER_MUS_MUS_EMBEDDED_FRAME_DELEGATE_H_
+#define CONTENT_RENDERER_MUS_MUS_EMBEDDED_FRAME_DELEGATE_H_
+
+namespace viz {
+class FrameSinkId;
+class SurfaceInfo;
+} // namespace viz
+
+namespace content {
+
+class MusEmbeddedFrameDelegate {
+ public:
+ // Called when the SurfaceInfo changes.
+ virtual void OnMusEmbeddedFrameSurfaceChanged(
+ const viz::SurfaceInfo& surface_info) = 0;
+
+ // Called when mus determines the FrameSinkId.
+ virtual void OnMusEmbeddedFrameSinkIdAllocated(
+ const viz::FrameSinkId& frame_sink_id) = 0;
+
+ protected:
+ virtual ~MusEmbeddedFrameDelegate() {}
+};
+
+} // namespace content
+
+#endif // CONTENT_RENDERER_MUS_MUS_EMBEDDED_FRAME_DELEGATE_H_
diff --git a/content/renderer/mus/renderer_window_tree_client.cc b/content/renderer/mus/renderer_window_tree_client.cc
index f067c9e..a681b97 100644
--- a/content/renderer/mus/renderer_window_tree_client.cc
+++ b/content/renderer/mus/renderer_window_tree_client.cc
@@ -14,6 +14,8 @@
#include "components/viz/client/local_surface_id_provider.h"
#include "components/viz/common/surfaces/surface_sequence.h"
#include "content/renderer/mash_util.h"
+#include "content/renderer/mus/mus_embedded_frame.h"
+#include "content/renderer/mus/mus_embedded_frame_delegate.h"
#include "content/renderer/render_frame_proxy.h"
namespace content {
@@ -24,11 +26,6 @@
base::LazyInstance<ConnectionMap>::Leaky g_connections =
LAZY_INSTANCE_INITIALIZER;
-// Callback from embedding a child frame.
-void OnEmbedAck(bool success) {
- DCHECK(success);
-}
-
} // namespace
// static
@@ -101,6 +98,16 @@
pending_layer_tree_frame_sink_callback_ = callback;
}
+std::unique_ptr<MusEmbeddedFrame>
+RendererWindowTreeClient::CreateMusEmbeddedFrame(
+ MusEmbeddedFrameDelegate* delegate,
+ const base::UnguessableToken& token) {
+ std::unique_ptr<MusEmbeddedFrame> frame = base::WrapUnique<MusEmbeddedFrame>(
+ new MusEmbeddedFrame(this, delegate, ++next_window_id_, token));
+ embedded_frames_.insert(frame.get());
+ return frame;
+}
+
RendererWindowTreeClient::RendererWindowTreeClient(int routing_id)
: routing_id_(routing_id),
binding_(this),
@@ -111,16 +118,6 @@
DCHECK(embedded_frames_.empty());
}
-std::unique_ptr<MusEmbeddedFrame>
-RendererWindowTreeClient::CreateMusEmbeddedFrame(
- RenderFrameProxy* render_frame_proxy,
- const base::UnguessableToken& token) {
- std::unique_ptr<MusEmbeddedFrame> frame = base::WrapUnique<MusEmbeddedFrame>(
- new MusEmbeddedFrame(this, render_frame_proxy, ++next_window_id_, token));
- embedded_frames_.insert(frame.get());
- return frame;
-}
-
void RendererWindowTreeClient::RequestLayerTreeFrameSinkInternal(
scoped_refptr<viz::ContextProvider> context_provider,
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
@@ -208,7 +205,7 @@
const viz::FrameSinkId& frame_sink_id) {
for (MusEmbeddedFrame* embedded_frame : embedded_frames_) {
if (embedded_frame->window_id_ == window_id) {
- embedded_frame->render_frame_proxy_->OnMusFrameSinkIdAllocated(
+ embedded_frame->delegate_->OnMusEmbeddedFrameSinkIdAllocated(
frame_sink_id);
return;
}
@@ -305,8 +302,7 @@
const viz::SurfaceInfo& surface_info) {
for (MusEmbeddedFrame* embedded_frame : embedded_frames_) {
if (embedded_frame->window_id_ == window_id) {
- embedded_frame->render_frame_proxy_->SetChildFrameSurface(
- surface_info, viz::SurfaceSequence());
+ embedded_frame->delegate_->OnMusEmbeddedFrameSurfaceChanged(surface_info);
return;
}
}
@@ -359,72 +355,4 @@
NOTREACHED();
}
-// MusEmbeddedFrame ------------------------------------------------------------
-
-MusEmbeddedFrame::~MusEmbeddedFrame() {
- renderer_window_tree_client_->OnEmbeddedFrameDestroyed(this);
- // If there is |pending_state_| it means we didn't actually create the window
- // yet and there is nothing to do.
- if (pending_state_)
- return;
-
- window_tree()->DeleteWindow(GetAndAdvanceNextChangeId(), window_id_);
-}
-
-void MusEmbeddedFrame::SetWindowBounds(
- const viz::LocalSurfaceId& local_surface_id,
- const gfx::Rect& bounds) {
- if (!window_tree()) {
- DCHECK(pending_state_);
- pending_state_->bounds = bounds;
- pending_state_->local_surface_id = local_surface_id;
- pending_state_->was_set_window_bounds_called = true;
- return;
- }
-
- window_tree()->SetWindowBounds(GetAndAdvanceNextChangeId(), window_id_,
- bounds, local_surface_id);
-}
-
-MusEmbeddedFrame::MusEmbeddedFrame(
- RendererWindowTreeClient* renderer_window_tree_client,
- RenderFrameProxy* proxy,
- ui::ClientSpecificId window_id,
- const base::UnguessableToken& token)
- : renderer_window_tree_client_(renderer_window_tree_client),
- render_frame_proxy_(proxy),
- window_id_(window_id) {
- if (!window_tree()) {
- pending_state_ = base::MakeUnique<PendingState>();
- pending_state_->token = token;
- return;
- }
- CreateChildWindowAndEmbed(token);
-}
-
-void MusEmbeddedFrame::CreateChildWindowAndEmbed(
- const base::UnguessableToken& token) {
- window_tree()->NewWindow(GetAndAdvanceNextChangeId(), window_id_,
- base::nullopt);
- window_tree()->AddWindow(GetAndAdvanceNextChangeId(),
- renderer_window_tree_client_->root_window_id_,
- window_id_);
- window_tree()->EmbedUsingToken(window_id_, token, 0, base::Bind(&OnEmbedAck));
-}
-
-void MusEmbeddedFrame::OnTreeAvailable() {
- std::unique_ptr<PendingState> pending_state = std::move(pending_state_);
- CreateChildWindowAndEmbed(pending_state->token);
- if (pending_state->was_set_window_bounds_called)
- SetWindowBounds(pending_state->local_surface_id, pending_state->bounds);
-}
-
-uint32_t MusEmbeddedFrame::GetAndAdvanceNextChangeId() {
- return renderer_window_tree_client_->GetAndAdvanceNextChangeId();
-}
-
-MusEmbeddedFrame::PendingState::PendingState() = default;
-
-MusEmbeddedFrame::PendingState::~PendingState() = default;
-
} // namespace content
diff --git a/content/renderer/mus/renderer_window_tree_client.h b/content/renderer/mus/renderer_window_tree_client.h
index 22fbde9b..1e0f08d3 100644
--- a/content/renderer/mus/renderer_window_tree_client.h
+++ b/content/renderer/mus/renderer_window_tree_client.h
@@ -37,6 +37,7 @@
namespace content {
class MusEmbeddedFrame;
+class MusEmbeddedFrameDelegate;
class RenderFrameProxy;
// ui.mojom.WindowTreeClient implementation for RenderWidget. This lives and
@@ -77,16 +78,18 @@
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
const LayerTreeFrameSinkCallback& callback);
+ // Creates a new MusEmbeddedFrame. |token| is an UnguessableToken that was
+ // registered for an embedding with mus (specifically ui::mojom::WindowTree).
+ std::unique_ptr<MusEmbeddedFrame> CreateMusEmbeddedFrame(
+ MusEmbeddedFrameDelegate* mus_embedded_frame_delegate,
+ const base::UnguessableToken& token);
+
private:
friend class MusEmbeddedFrame;
explicit RendererWindowTreeClient(int routing_id);
~RendererWindowTreeClient() override;
- std::unique_ptr<MusEmbeddedFrame> CreateMusEmbeddedFrame(
- RenderFrameProxy* render_frame_proxy,
- const base::UnguessableToken& token);
-
void RequestLayerTreeFrameSinkInternal(
scoped_refptr<viz::ContextProvider> context_provider,
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
@@ -229,59 +232,6 @@
DISALLOW_COPY_AND_ASSIGN(RendererWindowTreeClient);
};
-// MusEmbeddedFrame represents an embedding of an OOPIF frame. This is done
-// by creating a window and calling Embed().
-class MusEmbeddedFrame {
- public:
- ~MusEmbeddedFrame();
-
- // Sets the bounds of the embedded frame.
- void SetWindowBounds(const viz::LocalSurfaceId& local_surface_id,
- const gfx::Rect& bounds);
-
- private:
- friend class RendererWindowTreeClient;
-
- // Stores state that needs to pushed to the server once the connection has
- // been established (OnEmbed() is called).
- struct PendingState {
- PendingState();
- ~PendingState();
-
- base::UnguessableToken token;
- viz::LocalSurfaceId local_surface_id;
- gfx::Rect bounds;
- // True if SetWindowBounds() was called.
- bool was_set_window_bounds_called = false;
- };
-
- MusEmbeddedFrame(RendererWindowTreeClient* renderer_window_tree_client,
- RenderFrameProxy* proxy,
- ui::ClientSpecificId window_id,
- const base::UnguessableToken& token);
-
- // Called once the WindowTree has been obtained. This is only called if
- // the MusEmbeddedFrame is created before the WindowTree has been obtained.
- void OnTreeAvailable();
-
- // Does the actual embedding.
- void CreateChildWindowAndEmbed(const base::UnguessableToken& token);
-
- uint32_t GetAndAdvanceNextChangeId();
-
- ui::mojom::WindowTree* window_tree() {
- return renderer_window_tree_client_->tree_.get();
- }
-
- RendererWindowTreeClient* renderer_window_tree_client_;
- RenderFrameProxy* render_frame_proxy_;
- const ui::ClientSpecificId window_id_;
-
- std::unique_ptr<PendingState> pending_state_;
-
- DISALLOW_COPY_AND_ASSIGN(MusEmbeddedFrame);
-};
-
} // namespace content
#endif // CONTENT_RENDERER_MUS_RENDERER_WINDOW_TREE_CLIENT_H_
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index 270d2153..6fddbaa 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -42,6 +42,7 @@
#include "third_party/WebKit/public/web/WebView.h"
#if defined(USE_AURA)
+#include "content/renderer/mus/mus_embedded_frame.h"
#include "content/renderer/mus/renderer_window_tree_client.h"
#endif
@@ -316,6 +317,21 @@
compositing_helper_->SetPrimarySurfaceInfo(surface_info);
}
+void RenderFrameProxy::SetChildFrameSurface(
+ const viz::SurfaceInfo& surface_info,
+ const viz::SurfaceSequence& sequence) {
+ // If this WebFrame has already been detached, its parent will be null. This
+ // can happen when swapping a WebRemoteFrame with a WebLocalFrame, where this
+ // message may arrive after the frame was removed from the frame tree, but
+ // before the frame has been destroyed. http://crbug.com/446575.
+ if (!web_frame()->Parent())
+ return;
+
+ if (!enable_surface_synchronization_)
+ compositing_helper_->SetPrimarySurfaceInfo(surface_info);
+ compositing_helper_->SetFallbackSurfaceId(surface_info.id(), sequence);
+}
+
bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) {
// Forward Page IPCs to the RenderView.
if ((IPC_MESSAGE_CLASS(msg) == PageMsgStart)) {
@@ -466,36 +482,12 @@
}
#if defined(USE_AURA)
-void RenderFrameProxy::OnMusFrameSinkIdAllocated(
- const viz::FrameSinkId& frame_sink_id) {
- frame_sink_id_ = frame_sink_id;
- MaybeUpdateCompositingHelper();
- // Resend the FrameRects and allocate a new viz::LocalSurfaceId when the view
- // changes.
- ResendFrameRects();
-}
-
void RenderFrameProxy::SetMusEmbeddedFrame(
std::unique_ptr<MusEmbeddedFrame> mus_embedded_frame) {
mus_embedded_frame_ = std::move(mus_embedded_frame);
}
#endif
-void RenderFrameProxy::SetChildFrameSurface(
- const viz::SurfaceInfo& surface_info,
- const viz::SurfaceSequence& sequence) {
- // If this WebFrame has already been detached, its parent will be null. This
- // can happen when swapping a WebRemoteFrame with a WebLocalFrame, where this
- // message may arrive after the frame was removed from the frame tree, but
- // before the frame has been destroyed. http://crbug.com/446575.
- if (!web_frame()->Parent())
- return;
-
- if (!enable_surface_synchronization_)
- compositing_helper_->SetPrimarySurfaceInfo(surface_info);
- compositing_helper_->SetFallbackSurfaceId(surface_info.id(), sequence);
-}
-
void RenderFrameProxy::FrameDetached(DetachType type) {
#if defined(USE_AURA)
mus_embedded_frame_.reset();
@@ -649,4 +641,20 @@
Send(new FrameHostMsg_FrameFocused(routing_id_));
}
+#if defined(USE_AURA)
+void RenderFrameProxy::OnMusEmbeddedFrameSurfaceChanged(
+ const viz::SurfaceInfo& surface_info) {
+ SetChildFrameSurface(surface_info, viz::SurfaceSequence());
+}
+
+void RenderFrameProxy::OnMusEmbeddedFrameSinkIdAllocated(
+ const viz::FrameSinkId& frame_sink_id) {
+ frame_sink_id_ = frame_sink_id;
+ MaybeUpdateCompositingHelper();
+ // Resend the FrameRects and allocate a new viz::LocalSurfaceId when the view
+ // changes.
+ ResendFrameRects();
+}
+#endif
+
} // namespace
diff --git a/content/renderer/render_frame_proxy.h b/content/renderer/render_frame_proxy.h
index 769d541..69a4b4ae 100644
--- a/content/renderer/render_frame_proxy.h
+++ b/content/renderer/render_frame_proxy.h
@@ -18,6 +18,10 @@
#include "third_party/WebKit/public/web/WebRemoteFrameClient.h"
#include "url/origin.h"
+#if defined(USE_AURA)
+#include "content/renderer/mus/mus_embedded_frame_delegate.h"
+#endif
+
namespace blink {
struct WebRect;
}
@@ -64,6 +68,9 @@
// RenderFrame is created for it.
class CONTENT_EXPORT RenderFrameProxy : public IPC::Listener,
public IPC::Sender,
+#if defined(USE_AURA)
+ public MusEmbeddedFrameDelegate,
+#endif
public blink::WebRemoteFrameClient {
public:
// This method should be used to create a RenderFrameProxy, which will replace
@@ -135,16 +142,10 @@
RenderWidget* render_widget() { return render_widget_; }
#if defined(USE_AURA)
- // Called when mus determines the FrameSinkId.
- void OnMusFrameSinkIdAllocated(const viz::FrameSinkId& frame_sink_id);
-
void SetMusEmbeddedFrame(
std::unique_ptr<MusEmbeddedFrame> mus_embedded_frame);
#endif
- void SetChildFrameSurface(const viz::SurfaceInfo& surface_info,
- const viz::SurfaceSequence& sequence);
-
// blink::WebRemoteFrameClient implementation:
void FrameDetached(DetachType type) override;
void ForwardPostMessage(blink::WebLocalFrame* sourceFrame,
@@ -177,6 +178,9 @@
void MaybeUpdateCompositingHelper();
+ void SetChildFrameSurface(const viz::SurfaceInfo& surface_info,
+ const viz::SurfaceSequence& sequence);
+
// IPC::Listener
bool OnMessageReceived(const IPC::Message& msg) override;
@@ -205,6 +209,14 @@
void OnWillEnterFullscreen();
void OnSetHasReceivedUserGesture();
+#if defined(USE_AURA)
+ // MusEmbeddedFrameDelegate
+ void OnMusEmbeddedFrameSurfaceChanged(
+ const viz::SurfaceInfo& surface_info) override;
+ void OnMusEmbeddedFrameSinkIdAllocated(
+ const viz::FrameSinkId& frame_sink_id) override;
+#endif
+
// The routing ID by which this RenderFrameProxy is known.
const int routing_id_;