Pass FrameSinkId by const ref
RenderWidgetHostViewBase::GetFrameSinkId passed the viz::FrameSinkId
by value and was not a const method.
This CL returns a const ref of FrameSinkId and makes GetFrameSinkId a
const method so it can be accessed even if the caller has a const
pointer or reference to the RenderWidgetHostViewBase object.
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: I5142a75f21a1c0396ba868bf66699a2fb85a2c33
Bug: 672962
Reviewed-on: https://chromium-review.googlesource.com/1141985
Commit-Queue: Fady Samuel <fsamuel@chromium.org>
Reviewed-by: Khushal <khushalsagar@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576275}
diff --git a/components/viz/common/BUILD.gn b/components/viz/common/BUILD.gn
index 3093869..44853d5 100644
--- a/components/viz/common/BUILD.gn
+++ b/components/viz/common/BUILD.gn
@@ -127,6 +127,7 @@
"surfaces/child_local_surface_id_allocator.h",
"surfaces/frame_sink_id.cc",
"surfaces/frame_sink_id.h",
+ "surfaces/frame_sink_id_allocator.cc",
"surfaces/frame_sink_id_allocator.h",
"surfaces/local_surface_id.cc",
"surfaces/local_surface_id.h",
diff --git a/components/viz/common/surfaces/frame_sink_id_allocator.cc b/components/viz/common/surfaces/frame_sink_id_allocator.cc
new file mode 100644
index 0000000..0073064
--- /dev/null
+++ b/components/viz/common/surfaces/frame_sink_id_allocator.cc
@@ -0,0 +1,16 @@
+// Copyright 2018 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 "components/viz/common/surfaces/frame_sink_id_allocator.h"
+
+namespace viz {
+
+constexpr FrameSinkId g_invalid_frame_sink_id;
+
+// static
+const FrameSinkId& FrameSinkIdAllocator::InvalidFrameSinkId() {
+ return g_invalid_frame_sink_id;
+}
+
+} // namespace viz
diff --git a/components/viz/common/surfaces/frame_sink_id_allocator.h b/components/viz/common/surfaces/frame_sink_id_allocator.h
index 3594dab..469c179 100644
--- a/components/viz/common/surfaces/frame_sink_id_allocator.h
+++ b/components/viz/common/surfaces/frame_sink_id_allocator.h
@@ -7,11 +7,13 @@
#include "components/viz/common/surfaces/frame_sink_id.h"
+#include "components/viz/common/viz_common_export.h"
+
namespace viz {
// This class generates FrameSinkId with a fixed client_id and an
// incrementally-increasing sink_id.
-class FrameSinkIdAllocator {
+class VIZ_COMMON_EXPORT FrameSinkIdAllocator {
public:
constexpr explicit FrameSinkIdAllocator(uint32_t client_id)
: client_id_(client_id), next_sink_id_(1u) {}
@@ -20,6 +22,8 @@
return FrameSinkId(client_id_, next_sink_id_++);
}
+ static const FrameSinkId& InvalidFrameSinkId();
+
private:
const uint32_t client_id_;
uint32_t next_sink_id_;
diff --git a/components/viz/common/surfaces/parent_local_surface_id_allocator.cc b/components/viz/common/surfaces/parent_local_surface_id_allocator.cc
index 014cd0c..c449f30b 100644
--- a/components/viz/common/surfaces/parent_local_surface_id_allocator.cc
+++ b/components/viz/common/surfaces/parent_local_surface_id_allocator.cc
@@ -4,14 +4,12 @@
#include "components/viz/common/surfaces/parent_local_surface_id_allocator.h"
-#include "base/lazy_instance.h"
#include "base/rand_util.h"
#include "base/trace_event/trace_event.h"
namespace viz {
-base::LazyInstance<LocalSurfaceId>::Leaky g_invalid_local_surface_id =
- LAZY_INSTANCE_INITIALIZER;
+constexpr LocalSurfaceId g_invalid_local_surface_id;
ParentLocalSurfaceIdAllocator::ParentLocalSurfaceIdAllocator()
: current_local_surface_id_(kInvalidParentSequenceNumber,
@@ -75,7 +73,7 @@
const LocalSurfaceId& ParentLocalSurfaceIdAllocator::GetCurrentLocalSurfaceId()
const {
if (is_invalid_)
- return g_invalid_local_surface_id.Get();
+ return g_invalid_local_surface_id;
return current_local_surface_id_;
}
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 7a862fa..59ebd6dc 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -27,6 +27,7 @@
#include "cc/trees/layer_tree_host.h"
#include "components/viz/common/features.h"
#include "components/viz/common/quads/compositor_frame.h"
+#include "components/viz/common/surfaces/frame_sink_id_allocator.h"
#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
#include "components/viz/service/surfaces/surface.h"
#include "components/viz/service/surfaces/surface_hittest.h"
@@ -1932,9 +1933,9 @@
gesture_listener_manager_->DidStopFlinging();
}
-viz::FrameSinkId RenderWidgetHostViewAndroid::GetFrameSinkId() {
+const viz::FrameSinkId& RenderWidgetHostViewAndroid::GetFrameSinkId() const {
if (!delegated_frame_host_)
- return viz::FrameSinkId();
+ return viz::FrameSinkIdAllocator::InvalidFrameSinkId();
return delegated_frame_host_->GetFrameSinkId();
}
diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h
index f9882822..49bfd31 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.h
+++ b/content/browser/renderer_host/render_widget_host_view_android.h
@@ -169,7 +169,7 @@
void OnDidNavigateMainFrameToNewPage() override;
void SetNeedsBeginFrames(bool needs_begin_frames) override;
void SetWantsAnimateOnlyBeginFrames() override;
- viz::FrameSinkId GetFrameSinkId() override;
+ const viz::FrameSinkId& GetFrameSinkId() const override;
bool TransformPointToLocalCoordSpaceLegacy(
const gfx::PointF& point,
const viz::SurfaceId& original_surface,
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 1333bce..f849b31 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -2317,7 +2317,7 @@
ui::GestureRecognizer::Get()->CancelActiveTouches(window_);
}
-viz::FrameSinkId RenderWidgetHostViewAura::GetFrameSinkId() {
+const viz::FrameSinkId& RenderWidgetHostViewAura::GetFrameSinkId() const {
return frame_sink_id_;
}
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h
index b0d13ffb..a383132 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.h
+++ b/content/browser/renderer_host/render_widget_host_view_aura.h
@@ -181,7 +181,7 @@
bool RequestRepaintForTesting() override;
void DidStopFlinging() override;
void OnDidNavigateMainFrameToNewPage() override;
- viz::FrameSinkId GetFrameSinkId() override;
+ const viz::FrameSinkId& GetFrameSinkId() const override;
viz::LocalSurfaceId GetLocalSurfaceId() const override;
bool TransformPointToLocalCoordSpaceLegacy(
const gfx::PointF& point,
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
index d39e1392..e137d89 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -515,10 +515,6 @@
host()->DidProcessFrame(frame_token);
}
-viz::FrameSinkId RenderWidgetHostViewBase::GetFrameSinkId() {
- return viz::FrameSinkId();
-}
-
viz::LocalSurfaceId RenderWidgetHostViewBase::GetLocalSurfaceId() const {
return viz::LocalSurfaceId();
}
diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h
index 1b2563d..2aff5049 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.h
+++ b/content/browser/renderer_host/render_widget_host_view_base.h
@@ -313,8 +313,7 @@
virtual void DidStopFlinging() {}
// Returns the ID associated with the CompositorFrameSink of this view.
- // TODO(fsamuel): Return by const ref.
- virtual viz::FrameSinkId GetFrameSinkId();
+ virtual const viz::FrameSinkId& GetFrameSinkId() const = 0;
// Returns the LocalSurfaceId allocated by the parent client for this view.
// TODO(fsamuel): Return by const ref.
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
index 6842a0ac..3928f26e 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
@@ -692,7 +692,7 @@
return host()->delegate()->HasMouseLock(host());
}
-viz::FrameSinkId RenderWidgetHostViewChildFrame::GetFrameSinkId() {
+const viz::FrameSinkId& RenderWidgetHostViewChildFrame::GetFrameSinkId() const {
return frame_sink_id_;
}
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h b/content/browser/renderer_host/render_widget_host_view_child_frame.h
index c324ff0..6e16688e 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.h
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.h
@@ -143,7 +143,7 @@
void DidStopFlinging() override;
bool LockMouse() override;
void UnlockMouse() override;
- viz::FrameSinkId GetFrameSinkId() override;
+ const viz::FrameSinkId& GetFrameSinkId() const override;
viz::LocalSurfaceId GetLocalSurfaceId() const override;
void PreProcessTouchEvent(const blink::WebTouchEvent& event) override;
viz::FrameSinkId GetRootFrameSinkId() override;
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h
index 1a60e3cd..1aaa7da9 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.h
+++ b/content/browser/renderer_host/render_widget_host_view_mac.h
@@ -179,7 +179,7 @@
std::unique_ptr<SyntheticGestureTarget> CreateSyntheticGestureTarget()
override;
- viz::FrameSinkId GetFrameSinkId() override;
+ const viz::FrameSinkId& GetFrameSinkId() const override;
viz::LocalSurfaceId GetLocalSurfaceId() const override;
// Returns true when we can do SurfaceHitTesting for the event type.
bool ShouldRouteEvent(const blink::WebInputEvent& event) const;
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index d34b8d2..acc8c7a0 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -1126,7 +1126,7 @@
return browser_compositor_->GetRendererLocalSurfaceId();
}
-viz::FrameSinkId RenderWidgetHostViewMac::GetFrameSinkId() {
+const viz::FrameSinkId& RenderWidgetHostViewMac::GetFrameSinkId() const {
return browser_compositor_->GetDelegatedFrameHost()->frame_sink_id();
}
diff --git a/content/test/test_render_view_host.cc b/content/test/test_render_view_host.cc
index 428b8d2..7daaf2bd 100644
--- a/content/test/test_render_view_host.cc
+++ b/content/test/test_render_view_host.cc
@@ -193,7 +193,7 @@
void TestRenderWidgetHostView::UnlockMouse() {
}
-viz::FrameSinkId TestRenderWidgetHostView::GetFrameSinkId() {
+const viz::FrameSinkId& TestRenderWidgetHostView::GetFrameSinkId() const {
return frame_sink_id_;
}
diff --git a/content/test/test_render_view_host.h b/content/test/test_render_view_host.h
index 8a6e7982..9077fb9 100644
--- a/content/test/test_render_view_host.h
+++ b/content/test/test_render_view_host.h
@@ -114,7 +114,7 @@
gfx::Rect GetBoundsInRootWindow() override;
bool LockMouse() override;
void UnlockMouse() override;
- viz::FrameSinkId GetFrameSinkId() override;
+ const viz::FrameSinkId& GetFrameSinkId() const override;
viz::SurfaceId GetCurrentSurfaceId() const override;
bool is_showing() const { return is_showing_; }
diff --git a/ui/android/delegated_frame_host_android.cc b/ui/android/delegated_frame_host_android.cc
index e305ae3..06a0186 100644
--- a/ui/android/delegated_frame_host_android.cc
+++ b/ui/android/delegated_frame_host_android.cc
@@ -113,7 +113,7 @@
support_->DidNotProduceFrame(ack);
}
-viz::FrameSinkId DelegatedFrameHostAndroid::GetFrameSinkId() const {
+const viz::FrameSinkId& DelegatedFrameHostAndroid::GetFrameSinkId() const {
return frame_sink_id_;
}
diff --git a/ui/android/delegated_frame_host_android.h b/ui/android/delegated_frame_host_android.h
index 2c6ba56b..563be8e 100644
--- a/ui/android/delegated_frame_host_android.h
+++ b/ui/android/delegated_frame_host_android.h
@@ -95,7 +95,7 @@
cc::SurfaceLayer* content_layer_for_testing() { return content_layer_.get(); }
- viz::FrameSinkId GetFrameSinkId() const;
+ const viz::FrameSinkId& GetFrameSinkId() const;
// Should only be called when the host has a content layer. Use this for one-
// off screen capture, not for video. Always provides RGBA_BITMAP