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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 2577023003: Removes WebContentsViewMus/RenderWidgetHostViewMus (Closed)
Patch Set: cleanup Created 4 years 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/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index f928a0e9e749e76e9ceddd54174667c3475d7020..6cd1283845549c5f9daafeec670c7700d2be4c23 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -31,6 +31,7 @@
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/gpu/compositor_util.h"
#include "content/browser/renderer_host/compositor_resize_lock_aura.h"
+#include "content/browser/renderer_host/delegated_frame_host.h"
#include "content/browser/renderer_host/dip_util.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target_aura.h"
#include "content/browser/renderer_host/input/touch_selection_controller_client_aura.h"
@@ -45,6 +46,7 @@
#include "content/browser/renderer_host/ui_events_helper.h"
#include "content/common/content_switches_internal.h"
#include "content/common/input_messages.h"
+#include "content/common/render_widget_window_tree_client_factory.mojom.h"
#include "content/common/site_isolation_policy.h"
#include "content/common/text_input_state.h"
#include "content/common/view_messages.h"
@@ -56,6 +58,8 @@
#include "content/public/common/child_process_host.h"
#include "content/public/common/content_switches.h"
#include "gpu/ipc/common/gpu_messages.h"
+#include "services/service_manager/public/cpp/interface_provider.h"
+#include "services/ui/public/interfaces/window_manager_constants.mojom.h"
#include "third_party/WebKit/public/platform/WebInputEvent.h"
#include "third_party/WebKit/public/web/WebCompositionUnderline.h"
#include "ui/aura/client/aura_constants.h"
@@ -66,6 +70,7 @@
#include "ui/aura/client/transient_window_client.h"
#include "ui/aura/client/window_parenting_client.h"
#include "ui/aura/env.h"
+#include "ui/aura/mus/window_port_mus.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/aura/window_observer.h"
@@ -93,7 +98,6 @@
#include "ui/wm/public/activation_client.h"
#include "ui/wm/public/scoped_tooltip_disabler.h"
#include "ui/wm/public/tooltip_client.h"
-#include "ui/wm/public/window_types.h"
#if defined(OS_WIN)
#include "base/time/time.h"
@@ -211,6 +215,12 @@ class WinScreenKeyboardObserver : public ui::OnScreenKeyboardObserver {
};
#endif // defined(OS_WIN)
+// Callback from embedding the renderer.
+void EmbedCallback(bool result) {
+ if (!result)
+ DVLOG(1) << "embed failed";
+}
+
} // namespace
// We need to watch for mouse events outside a Web Popup or its parent
@@ -356,6 +366,96 @@ class RenderWidgetHostViewAura::WindowAncestorObserver
DISALLOW_COPY_AND_ASSIGN(WindowAncestorObserver);
};
+// DelegatedFrameHostClient implementation, not used in mus.
+class RenderWidgetHostViewAura::DelegatedFrameHostClientImpl
+ : public DelegatedFrameHostClient {
+ public:
+ DelegatedFrameHostClientImpl(
sadrul 2016/12/16 01:56:20 explicit
sky 2016/12/16 22:30:52 Done.
+ RenderWidgetHostViewAura* render_widget_host_view)
+ : render_widget_host_view_(render_widget_host_view) {}
+ ~DelegatedFrameHostClientImpl() {}
+
+ private:
+ // DelegatedFrameHostClient implementation.
+ ui::Layer* DelegatedFrameHostGetLayer() const override {
+ return render_widget_host_view_->window_->layer();
+ }
+ bool DelegatedFrameHostIsVisible() const override {
+ return !render_widget_host_view_->host_->is_hidden();
+ }
+ SkColor DelegatedFrameHostGetGutterColor(SkColor color) const override {
+ // When making an element on the page fullscreen the element's background
+ // may not match the page's, so use black as the gutter color to avoid
+ // flashes of brighter colors during the transition.
+ if (render_widget_host_view_->host_->delegate() &&
+ render_widget_host_view_->host_->delegate()
+ ->IsFullscreenForCurrentTab()) {
+ return SK_ColorBLACK;
+ }
+ return color;
+ }
+ gfx::Size DelegatedFrameHostDesiredSizeInDIP() const override {
+ return render_widget_host_view_->window_->bounds().size();
+ }
+ bool DelegatedFrameCanCreateResizeLock() const override {
+#if !defined(OS_CHROMEOS)
+ // On Windows and Linux, holding pointer moves will not help throttling
+ // resizes.
+ // TODO(piman): on Windows we need to block (nested message loop?) the
+ // WM_SIZE event. On Linux we need to throttle at the WM level using
+ // _NET_WM_SYNC_REQUEST.
+ return false;
+#else
+ if (render_widget_host_view_->host_->auto_resize_enabled())
+ return false;
+ return true;
+#endif
+ }
+ std::unique_ptr<ResizeLock> DelegatedFrameHostCreateResizeLock(
+ bool defer_compositor_lock) override {
+ gfx::Size desired_size = render_widget_host_view_->window_->bounds().size();
+ return std::unique_ptr<ResizeLock>(new CompositorResizeLock(
+ render_widget_host_view_->window_->GetHost(), desired_size,
+ defer_compositor_lock,
+ base::TimeDelta::FromMilliseconds(kResizeLockTimeoutMs)));
+ }
+ void DelegatedFrameHostResizeLockWasReleased() override {
+ render_widget_host_view_->host_->WasResized();
+ }
+ void DelegatedFrameHostSendReclaimCompositorResources(
+ int compositor_frame_sink_id,
+ bool is_swap_ack,
+ const cc::ReturnedResourceArray& resources) override {
+ render_widget_host_view_->host_->Send(
+ new ViewMsg_ReclaimCompositorResources(
+ render_widget_host_view_->host_->GetRoutingID(),
+ compositor_frame_sink_id, is_swap_ack, resources));
+ }
+ void SetBeginFrameSource(cc::BeginFrameSource* source) override {
+ if (render_widget_host_view_->begin_frame_source_ &&
+ render_widget_host_view_->added_frame_observer_) {
+ render_widget_host_view_->begin_frame_source_->RemoveObserver(
+ render_widget_host_view_);
+ render_widget_host_view_->added_frame_observer_ = false;
+ }
+ render_widget_host_view_->begin_frame_source_ = source;
+ render_widget_host_view_->UpdateNeedsBeginFramesInternal();
+ }
+ bool IsAutoResizeEnabled() const override {
+ return render_widget_host_view_->host_->auto_resize_enabled();
+ }
+
+ RenderWidgetHostViewAura* render_widget_host_view_;
+
+ DISALLOW_COPY_AND_ASSIGN(DelegatedFrameHostClientImpl);
+};
+
+bool IsMus() {
+ return aura::Env::GetInstance()->mode() == aura::Env::Mode::MUS &&
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kUseMusInRenderer);
+}
+
////////////////////////////////////////////////////////////////////////////////
// RenderWidgetHostViewAura, public:
@@ -386,26 +486,30 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host,
last_active_widget_routing_id_(MSG_ROUTING_NONE),
event_handler_(new RenderWidgetHostViewEventHandler(host_, this, this)),
weak_ptr_factory_(this) {
- // GuestViews have two RenderWidgetHostViews and so we need to make sure
- // we don't have FrameSinkId collisions.
- ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
- cc::FrameSinkId frame_sink_id =
- is_guest_view_hack_
- ? factory->GetContextFactoryPrivate()->AllocateFrameSinkId()
- : cc::FrameSinkId(
- base::checked_cast<uint32_t>(host_->GetProcess()->GetID()),
- base::checked_cast<uint32_t>(host_->GetRoutingID()));
- delegated_frame_host_ =
- base::MakeUnique<DelegatedFrameHost>(frame_sink_id, this);
-
if (!is_guest_view_hack_)
host_->SetView(this);
- // Let the page-level input event router know about our surface ID
- // namespace for surface-based hit testing.
- if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
- host_->delegate()->GetInputEventRouter()->AddFrameSinkIdOwner(
- GetFrameSinkId(), this);
+ if (!IsMus()) {
+ // GuestViews have two RenderWidgetHostViews and so we need to make sure
+ // we don't have FrameSinkId collisions.
+ ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
+ cc::FrameSinkId frame_sink_id =
+ is_guest_view_hack_
+ ? factory->GetContextFactoryPrivate()->AllocateFrameSinkId()
+ : cc::FrameSinkId(
+ base::checked_cast<uint32_t>(host_->GetProcess()->GetID()),
+ base::checked_cast<uint32_t>(host_->GetRoutingID()));
+ delegated_frame_host_client_ =
+ base::MakeUnique<DelegatedFrameHostClientImpl>(this);
+ delegated_frame_host_ = base::MakeUnique<DelegatedFrameHost>(
+ frame_sink_id, delegated_frame_host_client_.get());
+
+ // Let the page-level input event router know about our surface ID
+ // namespace for surface-based hit testing.
+ if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
+ host_->delegate()->GetInputEventRouter()->AddFrameSinkIdOwner(
+ GetFrameSinkId(), this);
+ }
}
// We should start observing the TextInputManager for IME-related events as
@@ -434,11 +538,7 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host,
void RenderWidgetHostViewAura::InitAsChild(
gfx::NativeView parent_view) {
- CreateAuraWindow();
- window_->SetType(ui::wm::WINDOW_TYPE_CONTROL);
- window_->Init(ui::LAYER_SOLID_COLOR);
- window_->SetName("RenderWidgetHostViewAura");
- window_->layer()->SetColor(background_color_);
+ CreateAuraWindow(ui::wm::WINDOW_TYPE_CONTROL);
if (parent_view)
parent_view->AddChild(GetNativeView());
@@ -451,7 +551,6 @@ void RenderWidgetHostViewAura::InitAsChild(
void RenderWidgetHostViewAura::InitAsPopup(
RenderWidgetHostView* parent_host_view,
const gfx::Rect& bounds_in_screen) {
- CreateAuraWindow();
popup_parent_host_view_ =
static_cast<RenderWidgetHostViewAura*>(parent_host_view);
@@ -472,10 +571,7 @@ void RenderWidgetHostViewAura::InitAsPopup(
old_child->popup_parent_host_view_ = NULL;
}
popup_parent_host_view_->SetPopupChild(this);
- window_->SetType(ui::wm::WINDOW_TYPE_MENU);
- window_->Init(ui::LAYER_SOLID_COLOR);
- window_->SetName("RenderWidgetHostViewAura");
- window_->layer()->SetColor(background_color_);
+ CreateAuraWindow(ui::wm::WINDOW_TYPE_MENU);
// Setting the transient child allows for the popup to get mouse events when
// in a system modal dialog. Do this before calling ParentWindowWithContext
@@ -503,13 +599,9 @@ void RenderWidgetHostViewAura::InitAsPopup(
void RenderWidgetHostViewAura::InitAsFullscreen(
RenderWidgetHostView* reference_host_view) {
- CreateAuraWindow();
is_fullscreen_ = true;
- window_->SetType(ui::wm::WINDOW_TYPE_NORMAL);
- window_->Init(ui::LAYER_SOLID_COLOR);
- window_->SetName("RenderWidgetHostViewAura");
+ CreateAuraWindow(ui::wm::WINDOW_TYPE_NORMAL);
window_->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
- window_->layer()->SetColor(background_color_);
aura::Window* parent = NULL;
gfx::Rect bounds;
@@ -541,7 +633,8 @@ void RenderWidgetHostViewAura::Show() {
if (!host_->is_hidden())
return;
- bool has_saved_frame = delegated_frame_host_->HasSavedFrame();
+ bool has_saved_frame =
+ delegated_frame_host_ ? delegated_frame_host_->HasSavedFrame() : false;
ui::LatencyInfo renderer_latency_info, browser_latency_info;
if (has_saved_frame) {
browser_latency_info.AddLatencyNumber(
@@ -560,7 +653,8 @@ void RenderWidgetHostViewAura::Show() {
NotifyRendererOfCursorVisibilityState(cursor_client->IsCursorVisible());
}
- delegated_frame_host_->WasShown(browser_latency_info);
+ if (delegated_frame_host_)
+ delegated_frame_host_->WasShown(browser_latency_info);
#if defined(OS_WIN)
UpdateLegacyWin();
@@ -573,7 +667,8 @@ void RenderWidgetHostViewAura::Hide() {
// TODO(wjmaclean): can host_ ever be null?
if (host_ && !host_->is_hidden()) {
host_->WasHidden();
- delegated_frame_host_->WasHidden();
+ if (delegated_frame_host_)
+ delegated_frame_host_->WasHidden();
#if defined(OS_WIN)
aura::WindowTreeHost* host = window_->GetHost();
@@ -744,7 +839,8 @@ bool RenderWidgetHostViewAura::HasFocus() const {
}
bool RenderWidgetHostViewAura::IsSurfaceAvailableForCopy() const {
- return delegated_frame_host_->CanCopyToBitmap();
+ return delegated_frame_host_ ? delegated_frame_host_->CanCopyToBitmap()
+ : false;
}
bool RenderWidgetHostViewAura::IsShowing() {
@@ -851,7 +947,9 @@ void RenderWidgetHostViewAura::SetTooltipText(
}
gfx::Size RenderWidgetHostViewAura::GetRequestedRendererSize() const {
- return delegated_frame_host_->GetRequestedRendererSize();
+ return delegated_frame_host_
+ ? delegated_frame_host_->GetRequestedRendererSize()
+ : RenderWidgetHostViewBase::GetRequestedRendererSize();
}
void RenderWidgetHostViewAura::CopyFromCompositingSurface(
@@ -859,6 +957,8 @@ void RenderWidgetHostViewAura::CopyFromCompositingSurface(
const gfx::Size& dst_size,
const ReadbackRequestCallback& callback,
const SkColorType preferred_color_type) {
+ if (!delegated_frame_host_)
+ return;
delegated_frame_host_->CopyFromCompositingSurface(
src_subrect, dst_size, callback, preferred_color_type);
}
@@ -867,21 +967,26 @@ void RenderWidgetHostViewAura::CopyFromCompositingSurfaceToVideoFrame(
const gfx::Rect& src_subrect,
const scoped_refptr<media::VideoFrame>& target,
const base::Callback<void(const gfx::Rect&, bool)>& callback) {
+ if (!delegated_frame_host_)
+ return;
delegated_frame_host_->CopyFromCompositingSurfaceToVideoFrame(
src_subrect, target, callback);
}
bool RenderWidgetHostViewAura::CanCopyToVideoFrame() const {
- return delegated_frame_host_->CanCopyToVideoFrame();
+ return delegated_frame_host_ ? delegated_frame_host_->CanCopyToVideoFrame()
+ : false;
}
void RenderWidgetHostViewAura::BeginFrameSubscription(
std::unique_ptr<RenderWidgetHostViewFrameSubscriber> subscriber) {
- delegated_frame_host_->BeginFrameSubscription(std::move(subscriber));
+ if (delegated_frame_host_)
+ delegated_frame_host_->BeginFrameSubscription(std::move(subscriber));
}
void RenderWidgetHostViewAura::EndFrameSubscription() {
- delegated_frame_host_->EndFrameSubscription();
+ if (delegated_frame_host_)
+ delegated_frame_host_->EndFrameSubscription();
}
#if defined(OS_WIN)
@@ -935,14 +1040,17 @@ void RenderWidgetHostViewAura::OnSwapCompositorFrame(
selection.end.SetEdge(end_edge_top, end_edge_bottom);
}
- delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id,
- std::move(frame));
+ if (delegated_frame_host_) {
+ delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id,
+ std::move(frame));
+ }
SelectionUpdated(selection.is_editable, selection.is_empty_text_form_control,
selection.start, selection.end);
}
void RenderWidgetHostViewAura::ClearCompositorFrame() {
- delegated_frame_host_->ClearDelegatedFrame();
+ if (delegated_frame_host_)
+ delegated_frame_host_->ClearDelegatedFrame();
}
void RenderWidgetHostViewAura::DidStopFlinging() {
@@ -1601,8 +1709,10 @@ cc::FrameSinkId RenderWidgetHostViewAura::FrameSinkIdAtPoint(
// |point| from DIPs to pixels before hittesting.
gfx::Point point_in_pixels =
gfx::ConvertPointToPixel(device_scale_factor_, point);
- cc::SurfaceId id = delegated_frame_host_->SurfaceIdAtPoint(
- delegate, point_in_pixels, transformed_point);
+ cc::SurfaceId id = delegated_frame_host_
+ ? delegated_frame_host_->SurfaceIdAtPoint(
+ delegate, point_in_pixels, transformed_point)
+ : cc::SurfaceId();
*transformed_point =
sadrul 2016/12/16 01:56:20 We should ideally not even reach here in mus (sinc
sky 2016/12/16 22:30:52 I added a TODO.
gfx::ConvertPointToDIP(device_scale_factor_, *transformed_point);
@@ -1645,7 +1755,8 @@ bool RenderWidgetHostViewAura::TransformPointToLocalCoordSpace(
// is necessary.
gfx::Point point_in_pixels =
gfx::ConvertPointToPixel(device_scale_factor_, point);
- if (!delegated_frame_host_->TransformPointToLocalCoordSpace(
+ if (delegated_frame_host_ &&
sadrul 2016/12/16 01:56:20 ditto
sky 2016/12/16 22:30:52 TODO here too.
+ !delegated_frame_host_->TransformPointToLocalCoordSpace(
point_in_pixels, original_surface, transformed_point))
return false;
*transformed_point =
@@ -1657,7 +1768,7 @@ bool RenderWidgetHostViewAura::TransformPointToCoordSpaceForView(
const gfx::Point& point,
RenderWidgetHostViewBase* target_view,
gfx::Point* transformed_point) {
- if (target_view == this) {
+ if (target_view == this || !delegated_frame_host_) {
*transformed_point = point;
return true;
}
@@ -1865,9 +1976,10 @@ RenderWidgetHostViewAura::~RenderWidgetHostViewAura() {
text_input_manager_->RemoveObserver(this);
}
-void RenderWidgetHostViewAura::CreateAuraWindow() {
+void RenderWidgetHostViewAura::CreateAuraWindow(ui::wm::WindowType type) {
DCHECK(!window_);
window_ = new aura::Window(this);
+ window_->SetName("RenderWidgetHostViewAura");
event_handler_->set_window(window_);
window_observer_.reset(new WindowObserver(this));
@@ -1875,6 +1987,26 @@ void RenderWidgetHostViewAura::CreateAuraWindow() {
aura::client::SetActivationDelegate(window_, this);
aura::client::SetFocusChangeObserver(window_, this);
display::Screen::GetScreen()->AddObserver(this);
+
+ window_->SetType(type);
+ window_->Init(ui::LAYER_SOLID_COLOR);
+ window_->layer()->SetColor(background_color_);
+
+ if (!IsMus())
+ return;
+
+ // Connect to the renderer, pass it a WindowTreeClient interface request
+ // and embed that client inside our mus window.
+ mojom::RenderWidgetWindowTreeClientFactoryPtr factory;
+ host_->GetProcess()->GetRemoteInterfaces()->GetInterface(&factory);
+
+ ui::mojom::WindowTreeClientPtr window_tree_client;
+ factory->CreateWindowTreeClientForRenderWidget(
+ host_->GetRoutingID(), mojo::GetProxy(&window_tree_client));
+ aura::WindowPortMus::Get(window_)->Embed(
+ std::move(window_tree_client),
+ ui::mojom::kEmbedFlagEmbedderInterceptsEvents,
+ base::Bind(&EmbedCallback));
}
void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() {
@@ -2053,7 +2185,8 @@ void RenderWidgetHostViewAura::InternalSetBounds(const gfx::Rect& rect) {
if (!in_bounds_changed_)
window_->SetBounds(rect);
host_->WasResized();
- delegated_frame_host_->WasResized();
+ if (delegated_frame_host_)
+ delegated_frame_host_->WasResized();
#if defined(OS_WIN)
UpdateLegacyWin();
@@ -2119,7 +2252,8 @@ void RenderWidgetHostViewAura::AddedToRootWindow() {
UpdateLegacyWin();
#endif
- delegated_frame_host_->SetCompositor(window_->GetHost()->compositor());
+ if (delegated_frame_host_)
+ delegated_frame_host_->SetCompositor(window_->GetHost()->compositor());
}
void RenderWidgetHostViewAura::RemovingFromRootWindow() {
@@ -2131,7 +2265,8 @@ void RenderWidgetHostViewAura::RemovingFromRootWindow() {
DetachFromInputMethod();
window_->GetHost()->RemoveObserver(this);
- delegated_frame_host_->ResetCompositor();
+ if (delegated_frame_host_)
+ delegated_frame_host_->ResetCompositor();
#if defined(OS_WIN)
// Update the legacy window's parent temporarily to the hidden window. It
@@ -2205,81 +2340,6 @@ void RenderWidgetHostViewAura::CreateSelectionController() {
selection_controller_client_.get(), tsc_config));
}
-////////////////////////////////////////////////////////////////////////////////
-// DelegatedFrameHost, public:
-
-ui::Layer* RenderWidgetHostViewAura::DelegatedFrameHostGetLayer() const {
- return window_->layer();
-}
-
-bool RenderWidgetHostViewAura::DelegatedFrameHostIsVisible() const {
- return !host_->is_hidden();
-}
-
-SkColor RenderWidgetHostViewAura::DelegatedFrameHostGetGutterColor(
- SkColor color) const {
- // When making an element on the page fullscreen the element's background
- // may not match the page's, so use black as the gutter color to avoid
- // flashes of brighter colors during the transition.
- if (host_->delegate() && host_->delegate()->IsFullscreenForCurrentTab())
- return SK_ColorBLACK;
- return color;
-}
-
-gfx::Size RenderWidgetHostViewAura::DelegatedFrameHostDesiredSizeInDIP() const {
- return window_->bounds().size();
-}
-
-bool RenderWidgetHostViewAura::DelegatedFrameCanCreateResizeLock() const {
-#if !defined(OS_CHROMEOS)
- // On Windows and Linux, holding pointer moves will not help throttling
- // resizes.
- // TODO(piman): on Windows we need to block (nested message loop?) the
- // WM_SIZE event. On Linux we need to throttle at the WM level using
- // _NET_WM_SYNC_REQUEST.
- return false;
-#else
- if (host_->auto_resize_enabled())
- return false;
- return true;
-#endif
-}
-
-std::unique_ptr<ResizeLock>
-RenderWidgetHostViewAura::DelegatedFrameHostCreateResizeLock(
- bool defer_compositor_lock) {
- gfx::Size desired_size = window_->bounds().size();
- return std::unique_ptr<ResizeLock>(new CompositorResizeLock(
- window_->GetHost(), desired_size, defer_compositor_lock,
- base::TimeDelta::FromMilliseconds(kResizeLockTimeoutMs)));
-}
-
-void RenderWidgetHostViewAura::DelegatedFrameHostResizeLockWasReleased() {
- host_->WasResized();
-}
-
-void RenderWidgetHostViewAura::DelegatedFrameHostSendReclaimCompositorResources(
- int compositor_frame_sink_id,
- bool is_swap_ack,
- const cc::ReturnedResourceArray& resources) {
- host_->Send(new ViewMsg_ReclaimCompositorResources(
- host_->GetRoutingID(), compositor_frame_sink_id, is_swap_ack, resources));
-}
-
-void RenderWidgetHostViewAura::SetBeginFrameSource(
- cc::BeginFrameSource* source) {
- if (begin_frame_source_ && added_frame_observer_) {
- begin_frame_source_->RemoveObserver(this);
- added_frame_observer_ = false;
- }
- begin_frame_source_ = source;
- UpdateNeedsBeginFramesInternal();
-}
-
-bool RenderWidgetHostViewAura::IsAutoResizeEnabled() const {
- return host_->auto_resize_enabled();
-}
-
void RenderWidgetHostViewAura::OnDidNavigateMainFrameToNewPage() {
ui::GestureRecognizer::Get()->CancelActiveTouches(window_);
}
@@ -2293,11 +2353,13 @@ void RenderWidgetHostViewAura::UnlockCompositingSurface() {
}
cc::FrameSinkId RenderWidgetHostViewAura::GetFrameSinkId() {
- return delegated_frame_host_->GetFrameSinkId();
+ return delegated_frame_host_ ? delegated_frame_host_->GetFrameSinkId()
+ : cc::FrameSinkId();
}
cc::SurfaceId RenderWidgetHostViewAura::SurfaceIdForTesting() const {
- return delegated_frame_host_->SurfaceIdForTesting();
+ return delegated_frame_host_ ? delegated_frame_host_->SurfaceIdForTesting()
+ : cc::SurfaceId();
}
void RenderWidgetHostViewAura::OnUpdateTextInputStateCalled(

Powered by Google App Engine
This is Rietveld 408576698