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

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

Issue 2577023003: Removes WebContentsViewMus/RenderWidgetHostViewMus (Closed)
Patch Set: fix test 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/delegated_frame_host_client_aura.cc
diff --git a/content/browser/renderer_host/delegated_frame_host_client_aura.cc b/content/browser/renderer_host/delegated_frame_host_client_aura.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cedbe02732232309aac9a0a9019533cec3fe6d89
--- /dev/null
+++ b/content/browser/renderer_host/delegated_frame_host_client_aura.cc
@@ -0,0 +1,112 @@
+// Copyright 2016 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/browser/renderer_host/delegated_frame_host_client_aura.h"
+
+#include "content/browser/renderer_host/compositor_resize_lock_aura.h"
+#include "content/browser/renderer_host/render_widget_host_impl.h"
+#include "content/browser/renderer_host/render_widget_host_view_aura.h"
+#include "content/common/view_messages.h"
+#include "ui/aura/window.h"
+#include "ui/compositor/layer.h"
+
+namespace content {
+namespace {
+
+// When accelerated compositing is enabled and a widget resize is pending,
+// we delay further resizes of the UI. The following constant is the maximum
+// length of time that we should delay further UI resizes while waiting for a
+// resized frame from a renderer.
+const int kResizeLockTimeoutMs = 67;
+
+} // namespace
+
+DelegatedFrameHostClientAura::DelegatedFrameHostClientAura(
+ RenderWidgetHostViewAura* render_widget_host_view)
+ : render_widget_host_view_(render_widget_host_view) {}
+
+DelegatedFrameHostClientAura::~DelegatedFrameHostClientAura() {}
+
+ui::Layer* DelegatedFrameHostClientAura::DelegatedFrameHostGetLayer() const {
+ return render_widget_host_view_->window_->layer();
+}
+
+bool DelegatedFrameHostClientAura::DelegatedFrameHostIsVisible() const {
+ return !render_widget_host_view_->host_->is_hidden();
+}
+
+SkColor DelegatedFrameHostClientAura::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 (render_widget_host_view_->host_->delegate() &&
+ render_widget_host_view_->host_->delegate()
+ ->IsFullscreenForCurrentTab()) {
+ return SK_ColorBLACK;
+ }
+ return color;
+}
+
+gfx::Size DelegatedFrameHostClientAura::DelegatedFrameHostDesiredSizeInDIP()
+ const {
+ return render_widget_host_view_->window_->bounds().size();
+}
+
+bool DelegatedFrameHostClientAura::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 (render_widget_host_view_->host_->auto_resize_enabled())
+ return false;
+ return true;
+#endif
+}
+
+std::unique_ptr<ResizeLock>
+DelegatedFrameHostClientAura::DelegatedFrameHostCreateResizeLock(
+ bool defer_compositor_lock) {
+ 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 DelegatedFrameHostClientAura::DelegatedFrameHostResizeLockWasReleased() {
+ render_widget_host_view_->host_->WasResized();
+}
+
+void DelegatedFrameHostClientAura::
+ DelegatedFrameHostSendReclaimCompositorResources(
+ int compositor_frame_sink_id,
+ bool is_swap_ack,
+ const cc::ReturnedResourceArray& resources) {
+ render_widget_host_view_->host_->Send(new ViewMsg_ReclaimCompositorResources(
+ render_widget_host_view_->host_->GetRoutingID(), compositor_frame_sink_id,
+ is_swap_ack, resources));
+}
+
+void DelegatedFrameHostClientAura::SetBeginFrameSource(
+ cc::BeginFrameSource* source) {
+ 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 DelegatedFrameHostClientAura::IsAutoResizeEnabled() const {
+ return render_widget_host_view_->host_->auto_resize_enabled();
+}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698