[go: nahoru, domu]

viz: Move SurfaceSequence and related classes to components/viz/common/surfaces

This CL moves the following classes:

SurfaceSequence
SurfaceReferenceFactory
SurfaceReferenceOwner
SurfaceSequenceGenerator

to components/viz/common/surfaces and updates includes, forward declarations,
and namespaces.

TBR=junov@chromium.org, tsepez@chromium.org

Bug: 722935
Change-Id: Ic429323a71c30430754335f003ed3f0f9ab300d3
Reviewed-on: https://chromium-review.googlesource.com/570511
Commit-Queue: Fady Samuel <fsamuel@chromium.org>
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486631}
diff --git a/cc/BUILD.gn b/cc/BUILD.gn
index 606d9fe..d9ac8bd 100644
--- a/cc/BUILD.gn
+++ b/cc/BUILD.gn
@@ -471,7 +471,7 @@
     "//base",
     "//base/third_party/dynamic_annotations",
     "//cc/paint",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//gpu",
     "//gpu/command_buffer/client:gles2_implementation",
     "//gpu/command_buffer/client:gles2_interface",
@@ -666,7 +666,6 @@
     "//base/third_party/dynamic_annotations",
     "//cc/paint",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
     "//components/viz/common",
     "//components/viz/service",
     "//components/viz/test:test_support",
@@ -869,7 +868,6 @@
     "//cc/ipc:test_interfaces",
     "//cc/paint",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
     "//cc/surfaces:surfaces",
     "//components/viz/common",
     "//components/viz/service",
@@ -926,7 +924,7 @@
     "//cc/ipc:interfaces",
     "//cc/paint",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//components/viz/test:test_support",
     "//gpu",
     "//gpu:test_support",
diff --git a/cc/ipc/cc_param_traits_macros.h b/cc/ipc/cc_param_traits_macros.h
index 659543f..ba065ea 100644
--- a/cc/ipc/cc_param_traits_macros.h
+++ b/cc/ipc/cc_param_traits_macros.h
@@ -20,10 +20,10 @@
 #include "cc/quads/yuv_video_draw_quad.h"
 #include "cc/resources/returned_resource.h"
 #include "cc/resources/transferable_resource.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "components/viz/common/quads/resource_format.h"
 #include "components/viz/common/surfaces/surface_id.h"
 #include "components/viz/common/surfaces/surface_info.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "ui/gfx/ipc/color/gfx_param_traits.h"
 #include "ui/gfx/ipc/gfx_param_traits.h"
 #include "ui/gfx/ipc/skia/gfx_skia_param_traits.h"
@@ -44,7 +44,7 @@
 IPC_ENUM_TRAITS_MAX_VALUE(cc::SurfaceDrawQuadType,
                           cc::SurfaceDrawQuadType::LAST)
 
-IPC_STRUCT_TRAITS_BEGIN(cc::SurfaceSequence)
+IPC_STRUCT_TRAITS_BEGIN(viz::SurfaceSequence)
   IPC_STRUCT_TRAITS_MEMBER(frame_sink_id)
   IPC_STRUCT_TRAITS_MEMBER(sequence)
 IPC_STRUCT_TRAITS_END()
diff --git a/cc/ipc/struct_traits_unittest.cc b/cc/ipc/struct_traits_unittest.cc
index b93dc49..5bffa458 100644
--- a/cc/ipc/struct_traits_unittest.cc
+++ b/cc/ipc/struct_traits_unittest.cc
@@ -107,7 +107,7 @@
     std::move(callback).Run(s);
   }
 
-  void EchoSurfaceSequence(const SurfaceSequence& s,
+  void EchoSurfaceSequence(const viz::SurfaceSequence& s,
                            EchoSurfaceSequenceCallback callback) override {
     std::move(callback).Run(s);
   }
@@ -1031,9 +1031,9 @@
 TEST_F(StructTraitsTest, SurfaceSequence) {
   const viz::FrameSinkId frame_sink_id(2016, 1234);
   const uint32_t sequence = 0xfbadbeef;
-  SurfaceSequence input(frame_sink_id, sequence);
+  viz::SurfaceSequence input(frame_sink_id, sequence);
   mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
-  SurfaceSequence output;
+  viz::SurfaceSequence output;
   proxy->EchoSurfaceSequence(input, &output);
   EXPECT_EQ(frame_sink_id, output.frame_sink_id);
   EXPECT_EQ(sequence, output.sequence);
diff --git a/cc/ipc/surface_sequence.typemap b/cc/ipc/surface_sequence.typemap
index 7492d60a..e05d72e 100644
--- a/cc/ipc/surface_sequence.typemap
+++ b/cc/ipc/surface_sequence.typemap
@@ -3,7 +3,9 @@
 # found in the LICENSE file.
 
 mojom = "//cc/ipc/surface_sequence.mojom"
-public_headers = [ "//cc/surfaces/surface_sequence.h" ]
+public_headers = [ "//components/viz/common/surfaces/surface_sequence.h" ]
 traits_headers = [ "//cc/ipc/surface_sequence_struct_traits.h" ]
-deps = [ "//cc/surfaces:surface_id", ]
-type_mappings = [ "cc.mojom.SurfaceSequence=cc::SurfaceSequence" ]
+deps = [
+  "//components/viz/common",
+]
+type_mappings = [ "cc.mojom.SurfaceSequence=viz::SurfaceSequence" ]
diff --git a/cc/ipc/surface_sequence_struct_traits.h b/cc/ipc/surface_sequence_struct_traits.h
index 1b30ee0..ead28b37 100644
--- a/cc/ipc/surface_sequence_struct_traits.h
+++ b/cc/ipc/surface_sequence_struct_traits.h
@@ -6,26 +6,26 @@
 #define CC_IPC_SURFACE_SEQUENCE_STRUCT_TRAITS_H_
 
 #include "cc/ipc/surface_sequence.mojom-shared.h"
-#include "cc/surfaces/surface_sequence.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 
 namespace mojo {
 
 template <>
-struct StructTraits<cc::mojom::SurfaceSequenceDataView, cc::SurfaceSequence> {
-  static const viz::FrameSinkId& frame_sink_id(const cc::SurfaceSequence& id) {
+struct StructTraits<cc::mojom::SurfaceSequenceDataView, viz::SurfaceSequence> {
+  static const viz::FrameSinkId& frame_sink_id(const viz::SurfaceSequence& id) {
     return id.frame_sink_id;
   }
 
-  static uint32_t sequence(const cc::SurfaceSequence& id) {
+  static uint32_t sequence(const viz::SurfaceSequence& id) {
     return id.sequence;
   }
 
   static bool Read(cc::mojom::SurfaceSequenceDataView data,
-                   cc::SurfaceSequence* out) {
+                   viz::SurfaceSequence* out) {
     viz::FrameSinkId frame_sink_id;
     if (!data.ReadFrameSinkId(&frame_sink_id))
       return false;
-    *out = cc::SurfaceSequence(frame_sink_id, data.sequence());
+    *out = viz::SurfaceSequence(frame_sink_id, data.sequence());
     return true;
   }
 };
diff --git a/cc/layers/surface_layer.cc b/cc/layers/surface_layer.cc
index 506b3396..ec81333 100644
--- a/cc/layers/surface_layer.cc
+++ b/cc/layers/surface_layer.cc
@@ -12,10 +12,10 @@
 #include "base/trace_event/trace_event.h"
 #include "cc/layers/surface_layer_impl.h"
 #include "cc/output/swap_promise.h"
-#include "cc/surfaces/surface_sequence_generator.h"
 #include "cc/trees/layer_tree_host.h"
 #include "cc/trees/swap_promise_manager.h"
 #include "cc/trees/task_runner_provider.h"
+#include "components/viz/common/surfaces/surface_sequence_generator.h"
 
 namespace cc {
 
@@ -52,11 +52,12 @@
 };
 
 scoped_refptr<SurfaceLayer> SurfaceLayer::Create(
-    scoped_refptr<SurfaceReferenceFactory> ref_factory) {
+    scoped_refptr<viz::SurfaceReferenceFactory> ref_factory) {
   return make_scoped_refptr(new SurfaceLayer(std::move(ref_factory)));
 }
 
-SurfaceLayer::SurfaceLayer(scoped_refptr<SurfaceReferenceFactory> ref_factory)
+SurfaceLayer::SurfaceLayer(
+    scoped_refptr<viz::SurfaceReferenceFactory> ref_factory)
     : ref_factory_(std::move(ref_factory)) {}
 
 SurfaceLayer::~SurfaceLayer() {
diff --git a/cc/layers/surface_layer.h b/cc/layers/surface_layer.h
index 565b712..e43fcb3 100644
--- a/cc/layers/surface_layer.h
+++ b/cc/layers/surface_layer.h
@@ -8,8 +8,8 @@
 #include "base/macros.h"
 #include "cc/cc_export.h"
 #include "cc/layers/layer.h"
-#include "cc/surfaces/surface_reference_factory.h"
 #include "components/viz/common/surfaces/surface_info.h"
+#include "components/viz/common/surfaces/surface_reference_factory.h"
 #include "ui/gfx/geometry/size.h"
 
 namespace cc {
@@ -19,7 +19,7 @@
 class CC_EXPORT SurfaceLayer : public Layer {
  public:
   static scoped_refptr<SurfaceLayer> Create(
-      scoped_refptr<SurfaceReferenceFactory> ref_factory);
+      scoped_refptr<viz::SurfaceReferenceFactory> ref_factory);
 
   void SetPrimarySurfaceInfo(const viz::SurfaceInfo& surface_info);
   void SetFallbackSurfaceInfo(const viz::SurfaceInfo& surface_info);
@@ -33,7 +33,8 @@
   void SetLayerTreeHost(LayerTreeHost* host) override;
   void PushPropertiesTo(LayerImpl* layer) override;
 
-  scoped_refptr<SurfaceReferenceFactory> surface_reference_factory() const {
+  scoped_refptr<viz::SurfaceReferenceFactory> surface_reference_factory()
+      const {
     return ref_factory_;
   }
 
@@ -46,7 +47,8 @@
   }
 
  protected:
-  explicit SurfaceLayer(scoped_refptr<SurfaceReferenceFactory> ref_factory);
+  explicit SurfaceLayer(
+      scoped_refptr<viz::SurfaceReferenceFactory> ref_factory);
   bool HasDrawableContent() const override;
 
  private:
@@ -57,7 +59,7 @@
   viz::SurfaceInfo fallback_surface_info_;
   base::Closure fallback_reference_returner_;
 
-  scoped_refptr<SurfaceReferenceFactory> ref_factory_;
+  scoped_refptr<viz::SurfaceReferenceFactory> ref_factory_;
   bool stretch_content_to_fill_bounds_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(SurfaceLayer);
diff --git a/cc/layers/surface_layer_unittest.cc b/cc/layers/surface_layer_unittest.cc
index 6e0d408..f5fa3bb 100644
--- a/cc/layers/surface_layer_unittest.cc
+++ b/cc/layers/surface_layer_unittest.cc
@@ -16,7 +16,6 @@
 #include "cc/layers/surface_layer.h"
 #include "cc/layers/surface_layer_impl.h"
 #include "cc/output/compositor_frame.h"
-#include "cc/surfaces/sequence_surface_reference_factory.h"
 #include "cc/test/fake_impl_task_runner_provider.h"
 #include "cc/test/fake_layer_tree_host.h"
 #include "cc/test/fake_layer_tree_host_client.h"
@@ -25,6 +24,7 @@
 #include "cc/test/layer_tree_test.h"
 #include "cc/test/test_task_graph_runner.h"
 #include "cc/trees/layer_tree_host.h"
+#include "components/viz/common/surfaces/sequence_surface_reference_factory.h"
 #include "components/viz/common/surfaces/surface_info.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -75,14 +75,15 @@
   FakeLayerTreeHostImpl host_impl_;
 };
 
-class MockSurfaceReferenceFactory : public SequenceSurfaceReferenceFactory {
+class MockSurfaceReferenceFactory
+    : public viz::SequenceSurfaceReferenceFactory {
  public:
   MockSurfaceReferenceFactory() {}
 
   // SequenceSurfaceReferenceFactory implementation.
-  MOCK_CONST_METHOD1(SatisfySequence, void(const SurfaceSequence&));
+  MOCK_CONST_METHOD1(SatisfySequence, void(const viz::SurfaceSequence&));
   MOCK_CONST_METHOD2(RequireSequence,
-                     void(const viz::SurfaceId&, const SurfaceSequence&));
+                     void(const viz::SurfaceId&, const viz::SurfaceSequence&));
 
  protected:
   ~MockSurfaceReferenceFactory() override = default;
@@ -92,7 +93,8 @@
 };
 
 // Check that one surface can be referenced by multiple LayerTreeHosts, and
-// each will create its own SurfaceSequence that's satisfied on destruction.
+// each will create its own viz::SurfaceSequence that's satisfied on
+// destruction.
 TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) {
   const base::UnguessableToken kArbitraryToken =
       base::UnguessableToken::Create();
@@ -100,8 +102,8 @@
       viz::SurfaceId(kArbitraryFrameSinkId,
                      viz::LocalSurfaceId(1, kArbitraryToken)),
       1.f, gfx::Size(1, 1));
-  const SurfaceSequence expected_seq1(viz::FrameSinkId(1, 1), 1u);
-  const SurfaceSequence expected_seq2(viz::FrameSinkId(2, 2), 1u);
+  const viz::SurfaceSequence expected_seq1(viz::FrameSinkId(1, 1), 1u);
+  const viz::SurfaceSequence expected_seq2(viz::FrameSinkId(2, 2), 1u);
   const viz::SurfaceId expected_id(kArbitraryFrameSinkId,
                                    viz::LocalSurfaceId(1, kArbitraryToken));
 
@@ -160,7 +162,7 @@
 TEST_F(SurfaceLayerTest, SurfaceInfoPushProperties) {
   // We use a nice mock here because we are not really interested in calls to
   // MockSurfaceReferenceFactory and we don't want warnings printed.
-  scoped_refptr<SurfaceReferenceFactory> ref_factory =
+  scoped_refptr<viz::SurfaceReferenceFactory> ref_factory =
       new testing::NiceMock<MockSurfaceReferenceFactory>();
 
   scoped_refptr<SurfaceLayer> layer = SurfaceLayer::Create(ref_factory);
@@ -222,7 +224,7 @@
 TEST_F(SurfaceLayerTest, CheckSurfaceReferencesForClonedLayer) {
   // We use a nice mock here because we are not really interested in calls to
   // MockSurfaceReferenceFactory and we don't want warnings printed.
-  scoped_refptr<SurfaceReferenceFactory> ref_factory =
+  scoped_refptr<viz::SurfaceReferenceFactory> ref_factory =
       new testing::NiceMock<MockSurfaceReferenceFactory>();
 
   const viz::SurfaceId old_surface_id(
@@ -292,7 +294,7 @@
 TEST_F(SurfaceLayerTest, CheckNeedsSurfaceIdsSyncForClonedLayers) {
   // We use a nice mock here because we are not really interested in calls to
   // MockSurfaceReferenceFactory and we don't want warnings printed.
-  scoped_refptr<SurfaceReferenceFactory> ref_factory =
+  scoped_refptr<viz::SurfaceReferenceFactory> ref_factory =
       new testing::NiceMock<MockSurfaceReferenceFactory>();
 
   const viz::SurfaceInfo surface_info(
@@ -349,7 +351,7 @@
   EXPECT_THAT(layer_tree_host_->SurfaceLayerIds(), SizeIs(0));
 }
 
-// Check that SurfaceSequence is sent through swap promise.
+// Check that viz::SurfaceSequence is sent through swap promise.
 class SurfaceLayerSwapPromise : public LayerTreeTest {
  public:
   SurfaceLayerSwapPromise()
@@ -374,7 +376,7 @@
     testing::Mock::VerifyAndClearExpectations(ref_factory_.get());
 
     // Add the layer to the tree. A sequence must be required.
-    SurfaceSequence expected_seq(kArbitraryFrameSinkId, 1u);
+    viz::SurfaceSequence expected_seq(kArbitraryFrameSinkId, 1u);
     viz::SurfaceId expected_id(kArbitraryFrameSinkId,
                                viz::LocalSurfaceId(1, kArbitraryToken));
     EXPECT_CALL(*ref_factory_, SatisfySequence(_)).Times(0);
@@ -420,7 +422,7 @@
       base::UnguessableToken::Create();
 };
 
-// Check that SurfaceSequence is sent through swap promise.
+// Check that viz::SurfaceSequence is sent through swap promise.
 class SurfaceLayerSwapPromiseWithDraw : public SurfaceLayerSwapPromise {
  public:
   void ChangeTree() override {
@@ -442,8 +444,8 @@
 
 SINGLE_AND_MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithDraw);
 
-// Check that SurfaceSequence is sent through swap promise and resolved when
-// swap fails.
+// Check that viz::SurfaceSequence is sent through swap promise and resolved
+// when swap fails.
 class SurfaceLayerSwapPromiseWithoutDraw : public SurfaceLayerSwapPromise {
  public:
   SurfaceLayerSwapPromiseWithoutDraw() : SurfaceLayerSwapPromise() {}
diff --git a/cc/surfaces/BUILD.gn b/cc/surfaces/BUILD.gn
index 4dfcc177..4301ca1 100644
--- a/cc/surfaces/BUILD.gn
+++ b/cc/surfaces/BUILD.gn
@@ -4,25 +4,6 @@
 
 import("//cc/cc.gni")
 
-cc_source_set("surface_id") {
-  sources = [
-    "surface_reference.cc",
-    "surface_reference.h",
-    "surface_reference_factory.h",
-    "surface_reference_owner.h",
-    "surface_sequence.h",
-    "surface_sequence_generator.cc",
-    "surface_sequence_generator.h",
-  ]
-
-  deps = [
-    "//base",
-    "//components/viz/common",
-    "//mojo/public/cpp/bindings:struct_traits",
-    "//ui/gfx/geometry:geometry",
-  ]
-}
-
 cc_component("surfaces") {
   output_name = "cc_surfaces"
   sources = [
@@ -32,8 +13,6 @@
     "primary_begin_frame_source.h",
     "referenced_surface_tracker.cc",
     "referenced_surface_tracker.h",
-    "sequence_surface_reference_factory.cc",
-    "sequence_surface_reference_factory.h",
     "stub_surface_reference_factory.cc",
     "stub_surface_reference_factory.h",
     "surface.cc",
@@ -49,6 +28,8 @@
     "surface_hittest_delegate.h",
     "surface_manager.cc",
     "surface_manager.h",
+    "surface_reference.cc",
+    "surface_reference.h",
     "surface_resource_holder.cc",
     "surface_resource_holder.h",
     "surface_resource_holder_client.h",
@@ -58,14 +39,13 @@
   defines = [ "CC_SURFACES_IMPLEMENTATION=1" ]
 
   public_deps = [
-    ":surface_id",
+    "//components/viz/common",
   ]
 
   deps = [
     "//base",
     "//base/third_party/dynamic_annotations",
     "//cc",
-    "//components/viz/common",
     "//gpu/command_buffer/client:gles2_interface",
     "//gpu/command_buffer/common",
     "//gpu/vulkan:features",
diff --git a/cc/surfaces/direct_surface_reference_factory.cc b/cc/surfaces/direct_surface_reference_factory.cc
index d107925..ef8be5c 100644
--- a/cc/surfaces/direct_surface_reference_factory.cc
+++ b/cc/surfaces/direct_surface_reference_factory.cc
@@ -16,7 +16,7 @@
 
 DirectSurfaceReferenceFactory::~DirectSurfaceReferenceFactory() = default;
 void DirectSurfaceReferenceFactory::SatisfySequence(
-    const SurfaceSequence& sequence) const {
+    const viz::SurfaceSequence& sequence) const {
   if (!manager_)
     return;
   manager_->SatisfySequence(sequence);
@@ -24,7 +24,7 @@
 
 void DirectSurfaceReferenceFactory::RequireSequence(
     const viz::SurfaceId& surface_id,
-    const SurfaceSequence& sequence) const {
+    const viz::SurfaceSequence& sequence) const {
   manager_->RequireSequence(surface_id, sequence);
 }
 
diff --git a/cc/surfaces/direct_surface_reference_factory.h b/cc/surfaces/direct_surface_reference_factory.h
index d3da125..2cc52ce 100644
--- a/cc/surfaces/direct_surface_reference_factory.h
+++ b/cc/surfaces/direct_surface_reference_factory.h
@@ -5,10 +5,11 @@
 #ifndef CC_SURFACES_DIRECT_SURFACE_REFERENCE_FACTORY_H_
 #define CC_SURFACES_DIRECT_SURFACE_REFERENCE_FACTORY_H_
 
-#include "cc/surfaces/sequence_surface_reference_factory.h"
+#include "base/compiler_specific.h"
 #include "cc/surfaces/surface_manager.h"
-#include "cc/surfaces/surface_sequence.h"
+#include "components/viz/common/surfaces/sequence_surface_reference_factory.h"
 #include "components/viz/common/surfaces/surface_id.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 
 namespace cc {
 
@@ -18,7 +19,7 @@
 // You probably don't need to instantiate this class directly.
 // Use SurfaceManager::reference_factory() instead.
 class CC_SURFACES_EXPORT DirectSurfaceReferenceFactory final
-    : public SequenceSurfaceReferenceFactory {
+    : public NON_EXPORTED_BASE(viz::SequenceSurfaceReferenceFactory) {
  public:
   explicit DirectSurfaceReferenceFactory(base::WeakPtr<SurfaceManager> manager);
 
@@ -26,9 +27,9 @@
   ~DirectSurfaceReferenceFactory() override;
 
   // SequenceSurfaceReferenceFactory implementation:
-  void SatisfySequence(const SurfaceSequence& sequence) const override;
+  void SatisfySequence(const viz::SurfaceSequence& sequence) const override;
   void RequireSequence(const viz::SurfaceId& surface_id,
-                       const SurfaceSequence& sequence) const override;
+                       const viz::SurfaceSequence& sequence) const override;
 
   base::WeakPtr<SurfaceManager> manager_;
 
diff --git a/cc/surfaces/sequence_surface_reference_factory.cc b/cc/surfaces/sequence_surface_reference_factory.cc
deleted file mode 100644
index c24abf6..0000000
--- a/cc/surfaces/sequence_surface_reference_factory.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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 "cc/surfaces/sequence_surface_reference_factory.h"
-
-#include "base/bind.h"
-#include "base/memory/ptr_util.h"
-
-#include "cc/surfaces/surface_sequence.h"
-
-namespace cc {
-
-base::Closure SequenceSurfaceReferenceFactory::CreateReference(
-    SurfaceReferenceOwner* owner,
-    const viz::SurfaceId& surface_id) const {
-  auto seq = owner->GetSurfaceSequenceGenerator()->CreateSurfaceSequence();
-  RequireSequence(surface_id, seq);
-  return base::Bind(&SequenceSurfaceReferenceFactory::SatisfySequence, this,
-                    seq);
-}
-
-}  // namespace cc
diff --git a/cc/surfaces/sequence_surface_reference_factory.h b/cc/surfaces/sequence_surface_reference_factory.h
deleted file mode 100644
index 1ad6f8f..0000000
--- a/cc/surfaces/sequence_surface_reference_factory.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-
-#ifndef CC_SURFACES_SEQUENCE_SURFACE_REFERENCE_FACTORY_H_
-#define CC_SURFACES_SEQUENCE_SURFACE_REFERENCE_FACTORY_H_
-
-#include "cc/surfaces/surface_reference_factory.h"
-#include "cc/surfaces/surface_sequence.h"
-#include "cc/surfaces/surfaces_export.h"
-
-namespace cc {
-
-// A surface reference factory that uses SurfaceSequence.
-class CC_SURFACES_EXPORT SequenceSurfaceReferenceFactory
-    : public NON_EXPORTED_BASE(SurfaceReferenceFactory) {
- public:
-  SequenceSurfaceReferenceFactory() = default;
-
-  // SurfaceReferenceFactory implementation:
-  base::Closure CreateReference(
-      SurfaceReferenceOwner* owner,
-      const viz::SurfaceId& surface_id) const override;
-
- protected:
-  ~SequenceSurfaceReferenceFactory() override = default;
-
- private:
-  virtual void RequireSequence(const viz::SurfaceId& surface_id,
-                               const SurfaceSequence& sequence) const = 0;
-  virtual void SatisfySequence(const SurfaceSequence& sequence) const = 0;
-
-  DISALLOW_COPY_AND_ASSIGN(SequenceSurfaceReferenceFactory);
-};
-
-}  // namespace cc
-
-#endif  // CC_SURFACES_SEQUENCE_SURFACE_REFERENCE_FACTORY_H_
diff --git a/cc/surfaces/stub_surface_reference_factory.cc b/cc/surfaces/stub_surface_reference_factory.cc
index 29b6313..31d5617 100644
--- a/cc/surfaces/stub_surface_reference_factory.cc
+++ b/cc/surfaces/stub_surface_reference_factory.cc
@@ -9,7 +9,7 @@
 namespace cc {
 
 base::Closure StubSurfaceReferenceFactory::CreateReference(
-    SurfaceReferenceOwner* owner,
+    viz::SurfaceReferenceOwner* owner,
     const viz::SurfaceId& surface_id) const {
   return base::Closure();
 }
diff --git a/cc/surfaces/stub_surface_reference_factory.h b/cc/surfaces/stub_surface_reference_factory.h
index 62ff788..9eb67c0 100644
--- a/cc/surfaces/stub_surface_reference_factory.h
+++ b/cc/surfaces/stub_surface_reference_factory.h
@@ -6,22 +6,22 @@
 #define CC_SURFACES_STUB_SURFACE_REFERENCE_FACTORY_H_
 
 #include "base/compiler_specific.h"
-#include "cc/surfaces/surface_reference_factory.h"
 #include "cc/surfaces/surfaces_export.h"
+#include "components/viz/common/surfaces/surface_reference_factory.h"
 
 namespace cc {
 
 // A stub implementation that creates a closure which does nothing.
-// TODO(kylechar): Delete this class and all usage of SurfaceReferenceFactory
-// when surface references are enabled by default.
+// TODO(kylechar): Delete this class and all usage of
+// viz::SurfaceReferenceFactory when surface references are enabled by default.
 class CC_SURFACES_EXPORT StubSurfaceReferenceFactory
-    : public NON_EXPORTED_BASE(SurfaceReferenceFactory) {
+    : public NON_EXPORTED_BASE(viz::SurfaceReferenceFactory) {
  public:
   StubSurfaceReferenceFactory() = default;
 
-  // SurfaceReferenceFactory:
+  // viz::SurfaceReferenceFactory:
   base::Closure CreateReference(
-      SurfaceReferenceOwner* owner,
+      viz::SurfaceReferenceOwner* owner,
       const viz::SurfaceId& surface_id) const override;
 
  protected:
diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc
index 5cf26f3e..6e1b1aa 100644
--- a/cc/surfaces/surface.cc
+++ b/cc/surfaces/surface.cc
@@ -355,15 +355,15 @@
                                              damage_rect);
 }
 
-void Surface::AddDestructionDependency(SurfaceSequence sequence) {
+void Surface::AddDestructionDependency(viz::SurfaceSequence sequence) {
   destruction_dependencies_.push_back(sequence);
 }
 
 void Surface::SatisfyDestructionDependencies(
-    base::flat_set<SurfaceSequence>* sequences,
+    base::flat_set<viz::SurfaceSequence>* sequences,
     base::flat_set<viz::FrameSinkId>* valid_frame_sink_ids) {
   base::EraseIf(destruction_dependencies_,
-                [sequences, valid_frame_sink_ids](SurfaceSequence seq) {
+                [sequences, valid_frame_sink_ids](viz::SurfaceSequence seq) {
                   return (!!sequences->erase(seq) ||
                           !valid_frame_sink_ids->count(seq.frame_sink_id));
                 });
diff --git a/cc/surfaces/surface.h b/cc/surfaces/surface.h
index 4bfd8a0..da2712d6 100644
--- a/cc/surfaces/surface.h
+++ b/cc/surfaces/surface.h
@@ -21,10 +21,10 @@
 #include "cc/output/compositor_frame.h"
 #include "cc/output/copy_output_request.h"
 #include "cc/surfaces/surface_dependency_deadline.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "cc/surfaces/surfaces_export.h"
 #include "components/viz/common/surfaces/frame_sink_id.h"
 #include "components/viz/common/surfaces/surface_info.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "ui/gfx/geometry/size.h"
 
 namespace ui {
@@ -121,14 +121,14 @@
   void RunDrawCallback();
   void RunWillDrawCallback(const gfx::Rect& damage_rect);
 
-  // Add a SurfaceSequence that must be satisfied before the Surface is
+  // Add a viz::SurfaceSequence that must be satisfied before the Surface is
   // destroyed.
-  void AddDestructionDependency(SurfaceSequence sequence);
+  void AddDestructionDependency(viz::SurfaceSequence sequence);
 
   // Satisfy all destruction dependencies that are contained in sequences, and
   // remove them from sequences.
   void SatisfyDestructionDependencies(
-      base::flat_set<SurfaceSequence>* sequences,
+      base::flat_set<viz::SurfaceSequence>* sequences,
       base::flat_set<viz::FrameSinkId>* valid_id_namespaces);
   size_t GetDestructionDependencyCount() const {
     return destruction_dependencies_.size();
@@ -215,7 +215,7 @@
   int frame_index_;
   bool closed_ = false;
   const bool needs_sync_tokens_;
-  std::vector<SurfaceSequence> destruction_dependencies_;
+  std::vector<viz::SurfaceSequence> destruction_dependencies_;
 
   base::flat_set<viz::SurfaceId> activation_dependencies_;
   base::flat_set<viz::SurfaceId> late_activation_dependencies_;
diff --git a/cc/surfaces/surface_manager.cc b/cc/surfaces/surface_manager.cc
index ee007a04..f6a0c35 100644
--- a/cc/surfaces/surface_manager.cc
+++ b/cc/surfaces/surface_manager.cc
@@ -114,7 +114,7 @@
 }
 
 void SurfaceManager::RequireSequence(const viz::SurfaceId& surface_id,
-                                     const SurfaceSequence& sequence) {
+                                     const viz::SurfaceSequence& sequence) {
   auto* surface = GetSurfaceForId(surface_id);
   if (!surface) {
     DLOG(ERROR) << "Attempting to require callback on nonexistent surface";
@@ -123,7 +123,7 @@
   surface->AddDestructionDependency(sequence);
 }
 
-void SurfaceManager::SatisfySequence(const SurfaceSequence& sequence) {
+void SurfaceManager::SatisfySequence(const viz::SurfaceSequence& sequence) {
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK_EQ(lifetime_type_, LifetimeType::SEQUENCES);
   satisfied_sequences_.insert(sequence);
diff --git a/cc/surfaces/surface_manager.h b/cc/surfaces/surface_manager.h
index 75034fd..c8c2ca2 100644
--- a/cc/surfaces/surface_manager.h
+++ b/cc/surfaces/surface_manager.h
@@ -22,11 +22,11 @@
 #include "cc/surfaces/surface_dependency_tracker.h"
 #include "cc/surfaces/surface_observer.h"
 #include "cc/surfaces/surface_reference.h"
-#include "cc/surfaces/surface_reference_factory.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "cc/surfaces/surfaces_export.h"
 #include "components/viz/common/surfaces/frame_sink_id.h"
 #include "components/viz/common/surfaces/surface_id.h"
+#include "components/viz/common/surfaces/surface_reference_factory.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 
 #if DCHECK_IS_ON()
 #include <iosfwd>
@@ -118,11 +118,11 @@
   // Require that the given sequence number must be satisfied (using
   // SatisfySequence) before the given surface can be destroyed.
   void RequireSequence(const viz::SurfaceId& surface_id,
-                       const SurfaceSequence& sequence);
+                       const viz::SurfaceSequence& sequence);
 
   // Satisfies the given sequence number. Once all sequence numbers that
   // a surface depends on are satisfied, the surface can be destroyed.
-  void SatisfySequence(const SurfaceSequence& sequence);
+  void SatisfySequence(const viz::SurfaceSequence& sequence);
 
   void RegisterFrameSinkId(const viz::FrameSinkId& frame_sink_id);
 
@@ -175,7 +175,7 @@
   const base::flat_set<viz::SurfaceId>& GetSurfacesThatReferenceChild(
       const viz::SurfaceId& surface_id) const;
 
-  const scoped_refptr<SurfaceReferenceFactory>& reference_factory() {
+  const scoped_refptr<viz::SurfaceReferenceFactory>& reference_factory() {
     return reference_factory_;
   }
 
@@ -266,7 +266,7 @@
 
   // Set of SurfaceSequences that have been satisfied by a frame but not yet
   // waited on.
-  base::flat_set<SurfaceSequence> satisfied_sequences_;
+  base::flat_set<viz::SurfaceSequence> satisfied_sequences_;
 
   // Set of valid FrameSinkIds. When a viz::FrameSinkId is removed from
   // this set, any remaining (surface) sequences with that viz::FrameSinkId are
@@ -283,7 +283,7 @@
 
   // The DirectSurfaceReferenceFactory that uses this manager to create surface
   // references.
-  scoped_refptr<SurfaceReferenceFactory> reference_factory_;
+  scoped_refptr<viz::SurfaceReferenceFactory> reference_factory_;
 
   // Keeps track of surface references for a surface. The graph of references is
   // stored in both directions, so we know the parents and children for each
diff --git a/cc/surfaces/surface_reference.h b/cc/surfaces/surface_reference.h
index b381a20..7630b43 100644
--- a/cc/surfaces/surface_reference.h
+++ b/cc/surfaces/surface_reference.h
@@ -8,12 +8,13 @@
 #include <string>
 
 #include "base/hash.h"
+#include "cc/surfaces/surfaces_export.h"
 #include "components/viz/common/surfaces/surface_id.h"
 
 namespace cc {
 
 // Hold a reference from an embedding (parent) to embedded (child) surface.
-class SurfaceReference {
+class CC_SURFACES_EXPORT SurfaceReference {
  public:
   SurfaceReference();
   SurfaceReference(const viz::SurfaceId& parent_id,
diff --git a/cc/surfaces/surface_reference_factory.h b/cc/surfaces/surface_reference_factory.h
deleted file mode 100644
index 4bf38180..0000000
--- a/cc/surfaces/surface_reference_factory.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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.
-
-#ifndef CC_SURFACES_SURFACE_REFERENCE_FACTORY_H_
-#define CC_SURFACES_SURFACE_REFERENCE_FACTORY_H_
-
-#include "base/callback_forward.h"
-#include "base/memory/ref_counted.h"
-#include "cc/surfaces/surface_reference_owner.h"
-#include "components/viz/common/surfaces/surface_id.h"
-
-namespace cc {
-
-// Confusingly, SurfaceReferenceFactory is only used to create SurfaceSequences.
-// TODO(kylechar): Delete all usage of SurfaceReferenceFactory when surface
-// references are enabled by default.
-class SurfaceReferenceFactory
-    : public base::RefCountedThreadSafe<SurfaceReferenceFactory> {
- public:
-  // Creates a reference to the surface with the given surface id and returns
-  // a closure that must be called exactly once to remove the reference.
-  virtual base::Closure CreateReference(
-      SurfaceReferenceOwner* owner,
-      const viz::SurfaceId& surface_id) const = 0;
-
-  SurfaceReferenceFactory() = default;
-
- protected:
-  virtual ~SurfaceReferenceFactory() = default;
-
- private:
-  friend class base::RefCountedThreadSafe<SurfaceReferenceFactory>;
-
-  DISALLOW_COPY_AND_ASSIGN(SurfaceReferenceFactory);
-};
-
-}  // namespace cc
-
-#endif  // CC_SURFACES_SURFACE_REFERENCE_FACTORY_H_
diff --git a/cc/surfaces/surface_reference_owner.h b/cc/surfaces/surface_reference_owner.h
deleted file mode 100644
index 8aa791c..0000000
--- a/cc/surfaces/surface_reference_owner.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-#ifndef CC_SURFACES_SURFACE_REFERENCE_OWNER_H_
-#define CC_SURFACES_SURFACE_REFERENCE_OWNER_H_
-
-#include "cc/surfaces/surface_sequence_generator.h"
-
-namespace cc {
-
-// Implementations of this interface can be passed to
-// SurfaceReferenceFactory::CreateReference as the reference owner.
-class SurfaceReferenceOwner {
- public:
-  virtual ~SurfaceReferenceOwner() {}
-
-  virtual SurfaceSequenceGenerator* GetSurfaceSequenceGenerator() = 0;
-};
-
-}  // namespace cc
-
-#endif  // CC_SURFACES_SURFACE_REFERENCE_OWNER_H_
diff --git a/cc/surfaces/surface_sequence.h b/cc/surfaces/surface_sequence.h
deleted file mode 100644
index 07697fd..0000000
--- a/cc/surfaces/surface_sequence.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2014 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 CC_SURFACES_SURFACE_SEQUENCE_H_
-#define CC_SURFACES_SURFACE_SEQUENCE_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <tuple>
-
-#include "base/hash.h"
-#include "components/viz/common/surfaces/frame_sink_id.h"
-
-namespace cc {
-
-// A per-surface-namespace sequence number that's used to coordinate
-// dependencies between frames. A sequence number may be satisfied once, and
-// may be depended on once.
-struct SurfaceSequence {
-  SurfaceSequence() : sequence(0u) {}
-  SurfaceSequence(const viz::FrameSinkId& frame_sink_id, uint32_t sequence)
-      : frame_sink_id(frame_sink_id), sequence(sequence) {}
-  bool is_valid() const { return frame_sink_id.is_valid() && sequence > 0u; }
-
-  viz::FrameSinkId frame_sink_id;
-  uint32_t sequence;
-};
-
-inline bool operator==(const SurfaceSequence& a, const SurfaceSequence& b) {
-  return a.frame_sink_id == b.frame_sink_id && a.sequence == b.sequence;
-}
-
-inline bool operator!=(const SurfaceSequence& a, const SurfaceSequence& b) {
-  return !(a == b);
-}
-
-inline bool operator<(const SurfaceSequence& a, const SurfaceSequence& b) {
-  return std::tie(a.frame_sink_id, a.sequence) <
-         std::tie(b.frame_sink_id, b.sequence);
-}
-
-struct SurfaceSequenceHash {
-  size_t operator()(SurfaceSequence key) const {
-    return base::HashInts(static_cast<uint64_t>(key.frame_sink_id.hash()),
-                          key.sequence);
-  }
-};
-
-}  // namespace cc
-
-#endif  // CC_SURFACES_SURFACE_SEQUENCE_H_
diff --git a/cc/surfaces/surface_sequence_generator.cc b/cc/surfaces/surface_sequence_generator.cc
deleted file mode 100644
index 3244841..0000000
--- a/cc/surfaces/surface_sequence_generator.cc
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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 "cc/surfaces/surface_sequence_generator.h"
-#include "cc/surfaces/surface_sequence.h"
-
-namespace cc {
-
-SurfaceSequenceGenerator::SurfaceSequenceGenerator()
-    : next_surface_sequence_(1u) {}
-
-SurfaceSequenceGenerator::~SurfaceSequenceGenerator() = default;
-
-SurfaceSequence SurfaceSequenceGenerator::CreateSurfaceSequence() {
-  return SurfaceSequence(frame_sink_id_, next_surface_sequence_++);
-}
-
-}  // namespace cc
diff --git a/cc/surfaces/surface_sequence_generator.h b/cc/surfaces/surface_sequence_generator.h
deleted file mode 100644
index 6e591f9..0000000
--- a/cc/surfaces/surface_sequence_generator.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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.
-
-#ifndef CC_SURFACES_SURFACE_SEQUENCE_GENERATOR_H_
-#define CC_SURFACES_SURFACE_SEQUENCE_GENERATOR_H_
-
-#include <stdint.h>
-
-#include <tuple>
-
-#include "base/macros.h"
-
-#include "components/viz/common/surfaces/frame_sink_id.h"
-
-namespace cc {
-
-struct SurfaceSequence;
-
-// Generates unique surface sequences for a surface client id.
-class SurfaceSequenceGenerator {
- public:
-  SurfaceSequenceGenerator();
-  ~SurfaceSequenceGenerator();
-
-  void set_frame_sink_id(const viz::FrameSinkId& frame_sink_id) {
-    frame_sink_id_ = frame_sink_id;
-  }
-
-  SurfaceSequence CreateSurfaceSequence();
-
- private:
-  viz::FrameSinkId frame_sink_id_;
-  uint32_t next_surface_sequence_;
-
-  DISALLOW_COPY_AND_ASSIGN(SurfaceSequenceGenerator);
-};
-
-}  // namespace cc
-
-#endif  // CC_SURFACES_SURFACE_SEQUENCE_GENERATOR_H_
diff --git a/cc/surfaces/surface_sequence_generator_unittest.cc b/cc/surfaces/surface_sequence_generator_unittest.cc
index 18cbbca..828a38a7 100644
--- a/cc/surfaces/surface_sequence_generator_unittest.cc
+++ b/cc/surfaces/surface_sequence_generator_unittest.cc
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "cc/surfaces/surface_sequence_generator.h"
+#include "components/viz/common/surfaces/surface_sequence_generator.h"
 
-#include "cc/surfaces/surface_sequence.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace cc {
@@ -13,10 +13,10 @@
 static constexpr viz::FrameSinkId kArbitraryFrameSinkId(1, 1);
 
 TEST(SurfaceSequenceGeneratorTest, Basic) {
-  SurfaceSequenceGenerator generator;
+  viz::SurfaceSequenceGenerator generator;
   generator.set_frame_sink_id(kArbitraryFrameSinkId);
-  SurfaceSequence sequence1 = generator.CreateSurfaceSequence();
-  SurfaceSequence sequence2 = generator.CreateSurfaceSequence();
+  viz::SurfaceSequence sequence1 = generator.CreateSurfaceSequence();
+  viz::SurfaceSequence sequence2 = generator.CreateSurfaceSequence();
   EXPECT_NE(sequence1, sequence2);
 }
 
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index 39c74932..cf65cad 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -250,8 +250,7 @@
   swap_promise_manager_.QueueSwapPromise(std::move(swap_promise));
 }
 
-SurfaceSequenceGenerator*
-LayerTreeHost::GetSurfaceSequenceGenerator() {
+viz::SurfaceSequenceGenerator* LayerTreeHost::GetSurfaceSequenceGenerator() {
   return &surface_sequence_generator_;
 }
 
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index a253e3e..df5f9a4 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -35,8 +35,6 @@
 #include "cc/layers/layer_list_iterator.h"
 #include "cc/output/layer_tree_frame_sink.h"
 #include "cc/output/swap_promise.h"
-#include "cc/surfaces/surface_reference_owner.h"
-#include "cc/surfaces/surface_sequence_generator.h"
 #include "cc/trees/compositor_mode.h"
 #include "cc/trees/layer_tree_host_client.h"
 #include "cc/trees/layer_tree_settings.h"
@@ -45,6 +43,8 @@
 #include "cc/trees/swap_promise_manager.h"
 #include "cc/trees/target_property.h"
 #include "components/viz/common/quads/resource_format.h"
+#include "components/viz/common/surfaces/surface_reference_owner.h"
+#include "components/viz/common/surfaces/surface_sequence_generator.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/gfx/geometry/rect.h"
 
@@ -65,8 +65,9 @@
 struct RenderingStats;
 struct ScrollAndScaleSet;
 
-class CC_EXPORT LayerTreeHost : public NON_EXPORTED_BASE(SurfaceReferenceOwner),
-                                public NON_EXPORTED_BASE(MutatorHostClient) {
+class CC_EXPORT LayerTreeHost
+    : public NON_EXPORTED_BASE(viz::SurfaceReferenceOwner),
+      public NON_EXPORTED_BASE(MutatorHostClient) {
  public:
   struct CC_EXPORT InitParams {
     LayerTreeHostClient* client = nullptr;
@@ -457,8 +458,8 @@
   bool IsSingleThreaded() const;
   bool IsThreaded() const;
 
-  // SurfaceReferenceOwner implementation.
-  SurfaceSequenceGenerator* GetSurfaceSequenceGenerator() override;
+  // viz::SurfaceReferenceOwner implementation.
+  viz::SurfaceSequenceGenerator* GetSurfaceSequenceGenerator() override;
 
   // MutatorHostClient implementation.
   bool IsElementInList(ElementId element_id,
@@ -585,7 +586,7 @@
 
   TaskGraphRunner* task_graph_runner_;
 
-  SurfaceSequenceGenerator surface_sequence_generator_;
+  viz::SurfaceSequenceGenerator surface_sequence_generator_;
   uint32_t num_consecutive_frames_without_slow_paths_ = 0;
 
   scoped_refptr<Layer> root_layer_;