[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.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_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_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_;
diff --git a/components/exo/DEPS b/components/exo/DEPS
index 1c40ca1..860fb11 100644
--- a/components/exo/DEPS
+++ b/components/exo/DEPS
@@ -2,7 +2,7 @@
   "+ash",
   "+cc",
   "+chromeos/audio/chromeos_sounds.h",
-  "+components/viz/common/quads",
+  "+components/viz/common",
   "+components/viz/service",
   "+device/gamepad",
   "+gpu",
diff --git a/components/exo/surface.cc b/components/exo/surface.cc
index 24c8f34..40a23ab 100644
--- a/components/exo/surface.cc
+++ b/components/exo/surface.cc
@@ -18,13 +18,13 @@
 #include "cc/quads/solid_color_draw_quad.h"
 #include "cc/quads/texture_draw_quad.h"
 #include "cc/resources/single_release_callback.h"
-#include "cc/surfaces/sequence_surface_reference_factory.h"
 #include "cc/surfaces/surface.h"
 #include "cc/surfaces/surface_manager.h"
 #include "components/exo/buffer.h"
 #include "components/exo/pointer.h"
 #include "components/exo/surface_delegate.h"
 #include "components/exo/surface_observer.h"
+#include "components/viz/common/surfaces/sequence_surface_reference_factory.h"
 #include "third_party/khronos/GLES2/gl2.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/env.h"
diff --git a/components/viz/common/BUILD.gn b/components/viz/common/BUILD.gn
index dc76086..8a9cd856 100644
--- a/components/viz/common/BUILD.gn
+++ b/components/viz/common/BUILD.gn
@@ -33,9 +33,16 @@
     "surfaces/local_surface_id.h",
     "surfaces/local_surface_id_allocator.cc",
     "surfaces/local_surface_id_allocator.h",
+    "surfaces/sequence_surface_reference_factory.cc",
+    "surfaces/sequence_surface_reference_factory.h",
     "surfaces/surface_id.cc",
     "surfaces/surface_id.h",
     "surfaces/surface_info.h",
+    "surfaces/surface_reference_factory.h",
+    "surfaces/surface_reference_owner.h",
+    "surfaces/surface_sequence.h",
+    "surfaces/surface_sequence_generator.cc",
+    "surfaces/surface_sequence_generator.h",
   ]
 
   deps = [
diff --git a/cc/surfaces/sequence_surface_reference_factory.cc b/components/viz/common/surfaces/sequence_surface_reference_factory.cc
similarity index 71%
rename from cc/surfaces/sequence_surface_reference_factory.cc
rename to components/viz/common/surfaces/sequence_surface_reference_factory.cc
index c24abf6..7faf30e 100644
--- a/cc/surfaces/sequence_surface_reference_factory.cc
+++ b/components/viz/common/surfaces/sequence_surface_reference_factory.cc
@@ -2,22 +2,22 @@
 // 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 "components/viz/common/surfaces/sequence_surface_reference_factory.h"
 
 #include "base/bind.h"
 #include "base/memory/ptr_util.h"
 
-#include "cc/surfaces/surface_sequence.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 
-namespace cc {
+namespace viz {
 
 base::Closure SequenceSurfaceReferenceFactory::CreateReference(
     SurfaceReferenceOwner* owner,
-    const viz::SurfaceId& surface_id) const {
+    const SurfaceId& surface_id) const {
   auto seq = owner->GetSurfaceSequenceGenerator()->CreateSurfaceSequence();
   RequireSequence(surface_id, seq);
   return base::Bind(&SequenceSurfaceReferenceFactory::SatisfySequence, this,
                     seq);
 }
 
-}  // namespace cc
+}  // namespace viz
diff --git a/components/viz/common/surfaces/sequence_surface_reference_factory.h b/components/viz/common/surfaces/sequence_surface_reference_factory.h
new file mode 100644
index 0000000..9c2096b
--- /dev/null
+++ b/components/viz/common/surfaces/sequence_surface_reference_factory.h
@@ -0,0 +1,36 @@
+// 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 COMPONENTS_VIZ_COMMON_SURFACES_SEQUENCE_SURFACE_REFERENCE_FACTORY_H_
+#define COMPONENTS_VIZ_COMMON_SURFACES_SEQUENCE_SURFACE_REFERENCE_FACTORY_H_
+
+#include "components/viz/common/surfaces/surface_reference_factory.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
+
+namespace viz {
+
+// A surface reference factory that uses SurfaceSequence.
+class SequenceSurfaceReferenceFactory
+    : public NON_EXPORTED_BASE(SurfaceReferenceFactory) {
+ public:
+  SequenceSurfaceReferenceFactory() = default;
+
+  // SurfaceReferenceFactory implementation:
+  base::Closure CreateReference(SurfaceReferenceOwner* owner,
+                                const SurfaceId& surface_id) const override;
+
+ protected:
+  ~SequenceSurfaceReferenceFactory() override = default;
+
+ private:
+  virtual void RequireSequence(const SurfaceId& surface_id,
+                               const SurfaceSequence& sequence) const = 0;
+  virtual void SatisfySequence(const SurfaceSequence& sequence) const = 0;
+
+  DISALLOW_COPY_AND_ASSIGN(SequenceSurfaceReferenceFactory);
+};
+
+}  // namespace viz
+
+#endif  // COMPONENTS_VIZ_COMMON_SURFACES_SEQUENCE_SURFACE_REFERENCE_FACTORY_H_
diff --git a/cc/surfaces/surface_reference_factory.h b/components/viz/common/surfaces/surface_reference_factory.h
similarity index 68%
rename from cc/surfaces/surface_reference_factory.h
rename to components/viz/common/surfaces/surface_reference_factory.h
index 4bf38180..03e5808 100644
--- a/cc/surfaces/surface_reference_factory.h
+++ b/components/viz/common/surfaces/surface_reference_factory.h
@@ -2,15 +2,15 @@
 // 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_
+#ifndef COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_REFERENCE_FACTORY_H_
+#define COMPONENTS_VIZ_COMMON_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"
+#include "components/viz/common/surfaces/surface_reference_owner.h"
 
-namespace cc {
+namespace viz {
 
 // Confusingly, SurfaceReferenceFactory is only used to create SurfaceSequences.
 // TODO(kylechar): Delete all usage of SurfaceReferenceFactory when surface
@@ -20,9 +20,8 @@
  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;
+  virtual base::Closure CreateReference(SurfaceReferenceOwner* owner,
+                                        const SurfaceId& surface_id) const = 0;
 
   SurfaceReferenceFactory() = default;
 
@@ -35,6 +34,6 @@
   DISALLOW_COPY_AND_ASSIGN(SurfaceReferenceFactory);
 };
 
-}  // namespace cc
+}  // namespace viz
 
-#endif  // CC_SURFACES_SURFACE_REFERENCE_FACTORY_H_
+#endif  // COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_REFERENCE_FACTORY_H_
diff --git a/components/viz/common/surfaces/surface_reference_owner.h b/components/viz/common/surfaces/surface_reference_owner.h
new file mode 100644
index 0000000..c966fb9
--- /dev/null
+++ b/components/viz/common/surfaces/surface_reference_owner.h
@@ -0,0 +1,23 @@
+// 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 COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_REFERENCE_OWNER_H_
+#define COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_REFERENCE_OWNER_H_
+
+#include "components/viz/common/surfaces/surface_sequence_generator.h"
+
+namespace viz {
+
+// Implementations of this interface can be passed to
+// SurfaceReferenceFactory::CreateReference as the reference owner.
+class SurfaceReferenceOwner {
+ public:
+  virtual ~SurfaceReferenceOwner() {}
+
+  virtual SurfaceSequenceGenerator* GetSurfaceSequenceGenerator() = 0;
+};
+
+}  // namespace viz
+
+#endif  // COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_REFERENCE_OWNER_H_
diff --git a/cc/surfaces/surface_sequence.h b/components/viz/common/surfaces/surface_sequence.h
similarity index 80%
rename from cc/surfaces/surface_sequence.h
rename to components/viz/common/surfaces/surface_sequence.h
index 07697fd..1b5bda9 100644
--- a/cc/surfaces/surface_sequence.h
+++ b/components/viz/common/surfaces/surface_sequence.h
@@ -2,8 +2,8 @@
 // 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_
+#ifndef COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_SEQUENCE_H_
+#define COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_SEQUENCE_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -13,18 +13,18 @@
 #include "base/hash.h"
 #include "components/viz/common/surfaces/frame_sink_id.h"
 
-namespace cc {
+namespace viz {
 
 // 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)
+  SurfaceSequence(const 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;
+  FrameSinkId frame_sink_id;
   uint32_t sequence;
 };
 
@@ -48,6 +48,6 @@
   }
 };
 
-}  // namespace cc
+}  // namespace viz
 
-#endif  // CC_SURFACES_SURFACE_SEQUENCE_H_
+#endif  // COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_SEQUENCE_H_
diff --git a/cc/surfaces/surface_sequence_generator.cc b/components/viz/common/surfaces/surface_sequence_generator.cc
similarity index 73%
rename from cc/surfaces/surface_sequence_generator.cc
rename to components/viz/common/surfaces/surface_sequence_generator.cc
index 3244841..f3c351e 100644
--- a/cc/surfaces/surface_sequence_generator.cc
+++ b/components/viz/common/surfaces/surface_sequence_generator.cc
@@ -2,10 +2,10 @@
 // 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"
+#include "components/viz/common/surfaces/surface_sequence_generator.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 
-namespace cc {
+namespace viz {
 
 SurfaceSequenceGenerator::SurfaceSequenceGenerator()
     : next_surface_sequence_(1u) {}
@@ -16,4 +16,4 @@
   return SurfaceSequence(frame_sink_id_, next_surface_sequence_++);
 }
 
-}  // namespace cc
+}  // namespace viz
diff --git a/cc/surfaces/surface_sequence_generator.h b/components/viz/common/surfaces/surface_sequence_generator.h
similarity index 61%
rename from cc/surfaces/surface_sequence_generator.h
rename to components/viz/common/surfaces/surface_sequence_generator.h
index 6e591f9..c9e104b 100644
--- a/cc/surfaces/surface_sequence_generator.h
+++ b/components/viz/common/surfaces/surface_sequence_generator.h
@@ -2,8 +2,8 @@
 // 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_
+#ifndef COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_SEQUENCE_GENERATOR_H_
+#define COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_SEQUENCE_GENERATOR_H_
 
 #include <stdint.h>
 
@@ -12,10 +12,9 @@
 #include "base/macros.h"
 
 #include "components/viz/common/surfaces/frame_sink_id.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 
-namespace cc {
-
-struct SurfaceSequence;
+namespace viz {
 
 // Generates unique surface sequences for a surface client id.
 class SurfaceSequenceGenerator {
@@ -23,19 +22,19 @@
   SurfaceSequenceGenerator();
   ~SurfaceSequenceGenerator();
 
-  void set_frame_sink_id(const viz::FrameSinkId& frame_sink_id) {
+  void set_frame_sink_id(const FrameSinkId& frame_sink_id) {
     frame_sink_id_ = frame_sink_id;
   }
 
   SurfaceSequence CreateSurfaceSequence();
 
  private:
-  viz::FrameSinkId frame_sink_id_;
+  FrameSinkId frame_sink_id_;
   uint32_t next_surface_sequence_;
 
   DISALLOW_COPY_AND_ASSIGN(SurfaceSequenceGenerator);
 };
 
-}  // namespace cc
+}  // namespace viz
 
-#endif  // CC_SURFACES_SURFACE_SEQUENCE_GENERATOR_H_
+#endif  // COMPONENTS_VIZ_COMMON_SURFACES_SURFACE_SEQUENCE_GENERATOR_H_
diff --git a/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc b/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc
index 6019d3c..52f64483 100644
--- a/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc
+++ b/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc
@@ -554,7 +554,7 @@
   SurfaceId surface_id(kAnotherArbitraryFrameSinkId, local_surface_id);
   cc::Surface* surface = GetSurfaceForId(surface_id);
   surface->AddDestructionDependency(
-      cc::SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
+      SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
 
   std::vector<cc::ReturnedResource> returned_resource = {
       resource.ToReturnedResource()};
@@ -591,7 +591,7 @@
   SurfaceId surface_id(kAnotherArbitraryFrameSinkId, local_surface_id);
   cc::Surface* surface = GetSurfaceForId(surface_id);
   surface->AddDestructionDependency(
-      cc::SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
+      SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
 
   std::vector<cc::ReturnedResource> returned_resources;
   EXPECT_TRUE(GetSurfaceForId(surface_id));
@@ -603,7 +603,7 @@
   EXPECT_CALL(mock_client, DidReceiveCompositorFrameAck(returned_resources))
       .Times(1);
   manager_.surface_manager()->SatisfySequence(
-      cc::SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
+      SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
   EXPECT_FALSE(GetSurfaceForId(surface_id));
 }
 
@@ -618,14 +618,14 @@
 
   // Check that waiting before the sequence is satisfied works.
   GetSurfaceForId(id2)->AddDestructionDependency(
-      cc::SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
+      SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
   support2->EvictCurrentSurface();
 
   DCHECK(GetSurfaceForId(id2));
   manager_.surface_manager()->SatisfySequence(
-      cc::SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
+      SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
   manager_.surface_manager()->SatisfySequence(
-      cc::SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 6));
+      SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 6));
   DCHECK(!GetSurfaceForId(id2));
 
   // Check that waiting after the sequence is satisfied works.
@@ -633,7 +633,7 @@
                                   cc::test::MakeCompositorFrame());
   DCHECK(GetSurfaceForId(id2));
   GetSurfaceForId(id2)->AddDestructionDependency(
-      cc::SurfaceSequence(kAnotherArbitraryFrameSinkId, 6));
+      SurfaceSequence(kAnotherArbitraryFrameSinkId, 6));
   support2->EvictCurrentSurface();
   DCHECK(!GetSurfaceForId(id2));
 }
@@ -650,7 +650,7 @@
 
   manager_.RegisterFrameSinkId(frame_sink_id);
   GetSurfaceForId(id)->AddDestructionDependency(
-      cc::SurfaceSequence(frame_sink_id, 4));
+      SurfaceSequence(frame_sink_id, 4));
 
   support_->EvictCurrentSurface();
 
@@ -687,7 +687,7 @@
               local_surface_id2);
   }
   GetSurfaceForId(id2)->AddDestructionDependency(
-      cc::SurfaceSequence(kAnotherArbitraryFrameSinkId, 4));
+      SurfaceSequence(kAnotherArbitraryFrameSinkId, 4));
   support2->EvictCurrentSurface();
   // Give local_surface_id_ a frame that references id2.
   {
@@ -703,7 +703,7 @@
 
   // Satisfy last destruction dependency for id2.
   manager_.surface_manager()->SatisfySequence(
-      cc::SurfaceSequence(kAnotherArbitraryFrameSinkId, 4));
+      SurfaceSequence(kAnotherArbitraryFrameSinkId, 4));
 
   // id2 and local_surface_id_ are in a reference cycle that has no surface
   // sequences holding on to it, so they should be destroyed.
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
index 7615c06..cf3c4ca 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.cc
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc
@@ -431,7 +431,7 @@
 
 void BrowserPluginGuest::SetChildFrameSurface(
     const viz::SurfaceInfo& surface_info,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   has_attached_since_surface_set_ = false;
   SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_SetChildFrameSurface>(
       browser_plugin_instance_id(), surface_info, sequence));
@@ -439,14 +439,14 @@
 
 void BrowserPluginGuest::OnSatisfySequence(
     int instance_id,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   GetFrameSinkManager()->surface_manager()->SatisfySequence(sequence);
 }
 
 void BrowserPluginGuest::OnRequireSequence(
     int instance_id,
     const viz::SurfaceId& id,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   GetFrameSinkManager()->surface_manager()->RequireSequence(id, sequence);
 }
 
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
index f933bf881..725b77d 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.h
+++ b/content/browser/browser_plugin/browser_plugin_guest.h
@@ -51,10 +51,6 @@
 struct FrameHostMsg_ShowPopup_Params;
 #endif
 
-namespace cc {
-struct SurfaceSequence;
-}  // namespace cc
-
 namespace gfx {
 class Range;
 }  // namespace gfx
@@ -62,6 +58,7 @@
 namespace viz {
 class SurfaceId;
 class SurfaceInfo;
+struct SurfaceSequence;
 }  // namespace viz
 
 namespace content {
@@ -242,7 +239,7 @@
 
   // The next function is virtual for test purposes.
   virtual void SetChildFrameSurface(const viz::SurfaceInfo& surface_info,
-                                    const cc::SurfaceSequence& sequence);
+                                    const viz::SurfaceSequence& sequence);
 
   void ResendEventToEmbedder(const blink::WebInputEvent& event);
 
@@ -281,10 +278,10 @@
   void InitInternal(const BrowserPluginHostMsg_Attach_Params& params,
                     WebContentsImpl* owner_web_contents);
 
-  void OnSatisfySequence(int instance_id, const cc::SurfaceSequence& sequence);
+  void OnSatisfySequence(int instance_id, const viz::SurfaceSequence& sequence);
   void OnRequireSequence(int instance_id,
                          const viz::SurfaceId& id,
-                         const cc::SurfaceSequence& sequence);
+                         const viz::SurfaceSequence& sequence);
   // Message handlers for messages from embedder.
   void OnDetach(int instance_id);
   // Handles drag events from the embedder.
diff --git a/content/browser/frame_host/cross_process_frame_connector.cc b/content/browser/frame_host/cross_process_frame_connector.cc
index 261efa0..b7f4c99 100644
--- a/content/browser/frame_host/cross_process_frame_connector.cc
+++ b/content/browser/frame_host/cross_process_frame_connector.cc
@@ -95,19 +95,19 @@
 
 void CrossProcessFrameConnector::SetChildFrameSurface(
     const viz::SurfaceInfo& surface_info,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   frame_proxy_in_parent_renderer_->Send(new FrameMsg_SetChildFrameSurface(
       frame_proxy_in_parent_renderer_->GetRoutingID(), surface_info, sequence));
 }
 
 void CrossProcessFrameConnector::OnSatisfySequence(
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   GetFrameSinkManager()->surface_manager()->SatisfySequence(sequence);
 }
 
 void CrossProcessFrameConnector::OnRequireSequence(
     const viz::SurfaceId& id,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   GetFrameSinkManager()->surface_manager()->RequireSequence(id, sequence);
 }
 
diff --git a/content/browser/frame_host/cross_process_frame_connector.h b/content/browser/frame_host/cross_process_frame_connector.h
index f01c699..46d6f9e 100644
--- a/content/browser/frame_host/cross_process_frame_connector.h
+++ b/content/browser/frame_host/cross_process_frame_connector.h
@@ -17,10 +17,6 @@
 class WebGestureEvent;
 }
 
-namespace cc {
-struct SurfaceSequence;
-}
-
 namespace IPC {
 class Message;
 }
@@ -28,6 +24,7 @@
 namespace viz {
 class SurfaceId;
 class SurfaceInfo;
+struct SurfaceSequence;
 }  // namespace viz
 
 namespace content {
@@ -89,7 +86,7 @@
   void RenderProcessGone();
 
   virtual void SetChildFrameSurface(const viz::SurfaceInfo& surface_info,
-                                    const cc::SurfaceSequence& sequence);
+                                    const viz::SurfaceSequence& sequence);
 
   gfx::Rect ChildFrameRect();
   void UpdateCursor(const WebCursor& cursor);
@@ -155,9 +152,9 @@
   void OnUpdateViewportIntersection(const gfx::Rect& viewport_intersection);
   void OnVisibilityChanged(bool visible);
   void OnSetIsInert(bool);
-  void OnSatisfySequence(const cc::SurfaceSequence& sequence);
+  void OnSatisfySequence(const viz::SurfaceSequence& sequence);
   void OnRequireSequence(const viz::SurfaceId& id,
-                         const cc::SurfaceSequence& sequence);
+                         const viz::SurfaceSequence& sequence);
 
   void SetRect(const gfx::Rect& frame_rect);
 
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.cc b/content/browser/frame_host/render_widget_host_view_child_frame.cc
index 14858aa..804d5ef 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.cc
@@ -477,8 +477,8 @@
 void RenderWidgetHostViewChildFrame::SendSurfaceInfoToEmbedder() {
   if (service_manager::ServiceManagerIsRemote())
     return;
-  cc::SurfaceSequence sequence =
-      cc::SurfaceSequence(frame_sink_id_, next_surface_sequence_++);
+  viz::SurfaceSequence sequence =
+      viz::SurfaceSequence(frame_sink_id_, next_surface_sequence_++);
   cc::SurfaceManager* manager = GetFrameSinkManager()->surface_manager();
   viz::SurfaceId surface_id(frame_sink_id_, local_surface_id_);
   // The renderer process will satisfy this dependency when it creates a
@@ -491,7 +491,7 @@
 
 void RenderWidgetHostViewChildFrame::SendSurfaceInfoToEmbedderImpl(
     const viz::SurfaceInfo& surface_info,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   frame_connector_->SetChildFrameSurface(surface_info, sequence);
 }
 
@@ -513,7 +513,7 @@
 
 void RenderWidgetHostViewChildFrame::OnSurfaceChanged(
     const viz::SurfaceInfo& surface_info) {
-  cc::SurfaceSequence sequence(frame_sink_id_, next_surface_sequence_++);
+  viz::SurfaceSequence sequence(frame_sink_id_, next_surface_sequence_++);
   SendSurfaceInfoToEmbedderImpl(surface_info, sequence);
 }
 
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.h b/content/browser/frame_host/render_widget_host_view_child_frame.h
index a4c58cc..b0a77cb 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.h
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.h
@@ -18,8 +18,8 @@
 #include "build/build_config.h"
 #include "cc/resources/returned_resource.h"
 #include "cc/scheduler/begin_frame_source.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "components/viz/common/surfaces/surface_info.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "components/viz/service/frame_sinks/compositor_frame_sink_support_client.h"
 #include "content/browser/compositor/image_transport_factory.h"
 #include "content/browser/renderer_host/event_with_latency_info.h"
@@ -259,7 +259,7 @@
  private:
   virtual void SendSurfaceInfoToEmbedderImpl(
       const viz::SurfaceInfo& surface_info,
-      const cc::SurfaceSequence& sequence);
+      const viz::SurfaceSequence& sequence);
 
   void SubmitSurfaceCopyRequest(const gfx::Rect& src_subrect,
                                 const gfx::Size& dst_size,
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame_browsertest.cc b/content/browser/frame_host/render_widget_host_view_child_frame_browsertest.cc
index c024f2cd..12a0d80 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame_browsertest.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame_browsertest.cc
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 #include "base/macros.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "components/viz/common/surfaces/surface_id.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "content/browser/frame_host/frame_tree_node.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/common/frame_messages.h"
@@ -147,7 +147,8 @@
     return false;
   }
 
-  void OnRequire(const viz::SurfaceId& id, const cc::SurfaceSequence sequence) {
+  void OnRequire(const viz::SurfaceId& id,
+                 const viz::SurfaceSequence sequence) {
     content::BrowserThread::PostTask(
         content::BrowserThread::UI, FROM_HERE,
         base::Bind(&SurfaceRefMessageFilter::OnRequireOnUI, this));
@@ -159,7 +160,7 @@
     require_message_loop_runner_->Quit();
   }
 
-  void OnSatisfy(const cc::SurfaceSequence sequence) {
+  void OnSatisfy(const viz::SurfaceSequence sequence) {
     content::BrowserThread::PostTask(
         content::BrowserThread::UI, FROM_HERE,
         base::Bind(&SurfaceRefMessageFilter::OnSatisfyOnUI, this));
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
index cad2a59..4f6f571f 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
@@ -17,9 +17,9 @@
 #include "build/build_config.h"
 #include "cc/surfaces/surface.h"
 #include "cc/surfaces/surface_manager.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "cc/test/begin_frame_args_test.h"
 #include "cc/test/fake_external_begin_frame_source.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "components/viz/service/frame_sinks/compositor_frame_sink_support.h"
 #include "content/browser/compositor/test/no_transport_image_transport_factory.h"
 #include "content/browser/frame_host/cross_process_frame_connector.h"
@@ -65,7 +65,7 @@
   ~MockCrossProcessFrameConnector() override {}
 
   void SetChildFrameSurface(const viz::SurfaceInfo& surface_info,
-                            const cc::SurfaceSequence& sequence) override {
+                            const viz::SurfaceSequence& sequence) override {
     last_surface_info_ = surface_info;
   }
 
diff --git a/content/browser/frame_host/render_widget_host_view_guest.cc b/content/browser/frame_host/render_widget_host_view_guest.cc
index 0cec6b5..d221c6c 100644
--- a/content/browser/frame_host/render_widget_host_view_guest.cc
+++ b/content/browser/frame_host/render_widget_host_view_guest.cc
@@ -14,7 +14,7 @@
 #include "build/build_config.h"
 #include "cc/surfaces/surface.h"
 #include "cc/surfaces/surface_manager.h"
-#include "cc/surfaces/surface_sequence.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "content/browser/browser_plugin/browser_plugin_guest.h"
 #include "content/browser/compositor/surface_utils.h"
 #include "content/browser/renderer_host/input/input_router.h"
@@ -283,7 +283,7 @@
 
 void RenderWidgetHostViewGuest::SendSurfaceInfoToEmbedderImpl(
     const viz::SurfaceInfo& surface_info,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   if (guest_ && !guest_->is_in_destruction())
     guest_->SetChildFrameSurface(surface_info, sequence);
 }
diff --git a/content/browser/frame_host/render_widget_host_view_guest.h b/content/browser/frame_host/render_widget_host_view_guest.h
index aaa26f4..e5361f1 100644
--- a/content/browser/frame_host/render_widget_host_view_guest.h
+++ b/content/browser/frame_host/render_widget_host_view_guest.h
@@ -138,7 +138,7 @@
 
   void SendSurfaceInfoToEmbedderImpl(
       const viz::SurfaceInfo& surface_info,
-      const cc::SurfaceSequence& sequence) override;
+      const viz::SurfaceSequence& sequence) override;
 
   RenderWidgetHostViewGuest(
       RenderWidgetHost* widget,
diff --git a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
index bd997d0..31c5f789 100644
--- a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
+++ b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
@@ -15,7 +15,7 @@
 #include "build/build_config.h"
 #include "cc/surfaces/surface.h"
 #include "cc/surfaces/surface_manager.h"
-#include "cc/surfaces/surface_sequence.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "content/browser/browser_plugin/browser_plugin_guest.h"
 #include "content/browser/compositor/test/no_transport_image_transport_factory.h"
 #include "content/browser/gpu/compositor_util.h"
@@ -134,7 +134,7 @@
   }
 
   void SetChildFrameSurface(const viz::SurfaceInfo& surface_info,
-                            const cc::SurfaceSequence& sequence) override {
+                            const viz::SurfaceSequence& sequence) override {
     last_surface_info_ = surface_info;
   }
 
diff --git a/content/browser/renderer_host/offscreen_canvas_surface_impl.cc b/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
index ffb9dfd..20d64595 100644
--- a/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
+++ b/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
@@ -69,12 +69,12 @@
 }
 
 void OffscreenCanvasSurfaceImpl::Require(const viz::SurfaceId& surface_id,
-                                         const cc::SurfaceSequence& sequence) {
+                                         const viz::SurfaceSequence& sequence) {
   GetFrameSinkManager()->surface_manager()->RequireSequence(surface_id,
                                                             sequence);
 }
 
-void OffscreenCanvasSurfaceImpl::Satisfy(const cc::SurfaceSequence& sequence) {
+void OffscreenCanvasSurfaceImpl::Satisfy(const viz::SurfaceSequence& sequence) {
   GetFrameSinkManager()->surface_manager()->SatisfySequence(sequence);
 }
 
diff --git a/content/browser/renderer_host/offscreen_canvas_surface_impl.h b/content/browser/renderer_host/offscreen_canvas_surface_impl.h
index 6ea40cbb..16759c9 100644
--- a/content/browser/renderer_host/offscreen_canvas_surface_impl.h
+++ b/content/browser/renderer_host/offscreen_canvas_surface_impl.h
@@ -56,8 +56,8 @@
 
   // blink::mojom::OffscreenCanvasSurface implementation.
   void Require(const viz::SurfaceId& surface_id,
-               const cc::SurfaceSequence& sequence) override;
-  void Satisfy(const cc::SurfaceSequence& sequence) override;
+               const viz::SurfaceSequence& sequence) override;
+  void Satisfy(const viz::SurfaceSequence& sequence) override;
 
  private:
   // Registered as a callback for when |binding_| is closed. Will call
diff --git a/content/common/browser_plugin/browser_plugin_messages.h b/content/common/browser_plugin/browser_plugin_messages.h
index f7037f9e..4459d0f 100644
--- a/content/common/browser_plugin/browser_plugin_messages.h
+++ b/content/common/browser_plugin/browser_plugin_messages.h
@@ -159,12 +159,12 @@
 
 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SatisfySequence,
                     int /* browser_plugin_instance_id */,
-                    cc::SurfaceSequence /* sequence */)
+                    viz::SurfaceSequence /* sequence */)
 
 IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_RequireSequence,
                     int /* browser_plugin_instance_id */,
                     viz::SurfaceId /* surface_id */,
-                    cc::SurfaceSequence /* sequence */)
+                    viz::SurfaceSequence /* sequence */)
 
 // -----------------------------------------------------------------------------
 // These messages are from the browser process to the embedder.
@@ -197,7 +197,7 @@
 IPC_MESSAGE_CONTROL3(BrowserPluginMsg_SetChildFrameSurface,
                      int /* browser_plugin_instance_id */,
                      viz::SurfaceInfo /* surface_info */,
-                     cc::SurfaceSequence /* sequence */)
+                     viz::SurfaceSequence /* sequence */)
 
 // Forwards a PointerLock Unlock request to the BrowserPlugin.
 IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetMouseLock,
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
index 4e408c9..e2788736 100644
--- a/content/common/frame_messages.h
+++ b/content/common/frame_messages.h
@@ -14,9 +14,9 @@
 #include <vector>
 
 #include "build/build_config.h"
-#include "cc/surfaces/surface_sequence.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 "content/common/content_export.h"
 #include "content/common/content_param_traits.h"
 #include "content/common/content_security_policy/csp_context.h"
@@ -700,7 +700,7 @@
 
 IPC_MESSAGE_ROUTED2(FrameMsg_SetChildFrameSurface,
                     viz::SurfaceInfo /* surface_info */,
-                    cc::SurfaceSequence /* sequence */)
+                    viz::SurfaceSequence /* sequence */)
 
 // Notifies the embedding frame that the process rendering the child frame's
 // contents has terminated.
@@ -1422,13 +1422,13 @@
 
 // Satisfies a Surface destruction dependency associated with |sequence|.
 IPC_MESSAGE_ROUTED1(FrameHostMsg_SatisfySequence,
-                    cc::SurfaceSequence /* sequence */)
+                    viz::SurfaceSequence /* sequence */)
 
 // Creates a destruction dependency for the Surface specified by the given
 // |surface_id|.
 IPC_MESSAGE_ROUTED2(FrameHostMsg_RequireSequence,
                     viz::SurfaceId /* surface_id */,
-                    cc::SurfaceSequence /* sequence */)
+                    viz::SurfaceSequence /* sequence */)
 
 // Provides the result from handling BeforeUnload.  |proceed| matches the return
 // value of the frame's beforeunload handler: true if the user decided to
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn
index bc52c78..fd3e94b 100644
--- a/content/renderer/BUILD.gn
+++ b/content/renderer/BUILD.gn
@@ -438,7 +438,6 @@
     "//cc/ipc",
     "//cc/paint",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
     "//cc/surfaces:surfaces",
     "//components/discardable_memory/client",
     "//components/metrics",
@@ -446,6 +445,7 @@
     "//components/url_formatter",
     "//components/variations",
     "//components/viz/client",
+    "//components/viz/common",
     "//components/viz/service",
     "//content:resources",
     "//content/child",
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index 09231e2..3ff4c7d 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -127,7 +127,7 @@
 void BrowserPlugin::OnSetChildFrameSurface(
     int browser_plugin_instance_id,
     const viz::SurfaceInfo& surface_info,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   if (!attached())
     return;
 
@@ -136,7 +136,7 @@
   compositing_helper_->OnSetSurface(surface_info, sequence);
 }
 
-void BrowserPlugin::SendSatisfySequence(const cc::SurfaceSequence& sequence) {
+void BrowserPlugin::SendSatisfySequence(const viz::SurfaceSequence& sequence) {
   BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_SatisfySequence(
       render_frame_routing_id_, browser_plugin_instance_id_, sequence));
 }
diff --git a/content/renderer/browser_plugin/browser_plugin.h b/content/renderer/browser_plugin/browser_plugin.h
index 5a9f099..637002e8 100644
--- a/content/renderer/browser_plugin/browser_plugin.h
+++ b/content/renderer/browser_plugin/browser_plugin.h
@@ -19,12 +19,9 @@
 #include "third_party/WebKit/public/web/WebInputMethodController.h"
 #include "third_party/WebKit/public/web/WebNode.h"
 
-namespace cc {
-struct SurfaceSequence;
-}
-
 namespace viz {
 class SurfaceInfo;
+struct SurfaceSequence;
 }
 
 namespace content {
@@ -63,7 +60,7 @@
   void EnableCompositing(bool enable);
 
   // Called by CompositingHelper to send current SurfaceSequence to browser.
-  void SendSatisfySequence(const cc::SurfaceSequence& sequence);
+  void SendSatisfySequence(const viz::SurfaceSequence& sequence);
 
   // Provided that a guest instance ID has been allocated, this method attaches
   // this BrowserPlugin instance to that guest.
@@ -161,7 +158,7 @@
   void OnGuestReady(int instance_id);
   void OnSetChildFrameSurface(int instance_id,
                               const viz::SurfaceInfo& surface_info,
-                              const cc::SurfaceSequence& sequence);
+                              const viz::SurfaceSequence& sequence);
   void OnSetContentsOpaque(int instance_id, bool opaque);
   void OnSetCursor(int instance_id, const WebCursor& cursor);
   void OnSetMouseLock(int instance_id, bool enable);
diff --git a/content/renderer/child_frame_compositing_helper.cc b/content/renderer/child_frame_compositing_helper.cc
index aade80d..3192c99e 100644
--- a/content/renderer/child_frame_compositing_helper.cc
+++ b/content/renderer/child_frame_compositing_helper.cc
@@ -15,7 +15,7 @@
 #include "cc/output/copy_output_result.h"
 #include "cc/paint/paint_image.h"
 #include "cc/resources/single_release_callback.h"
-#include "cc/surfaces/sequence_surface_reference_factory.h"
+#include "components/viz/common/surfaces/sequence_surface_reference_factory.h"
 #include "content/child/thread_safe_sender.h"
 #include "content/common/browser_plugin/browser_plugin_messages.h"
 #include "content/common/content_switches_internal.h"
@@ -43,13 +43,13 @@
 namespace {
 
 class IframeSurfaceReferenceFactory
-    : public cc::SequenceSurfaceReferenceFactory {
+    : public viz::SequenceSurfaceReferenceFactory {
  public:
   IframeSurfaceReferenceFactory(scoped_refptr<ThreadSafeSender> sender,
                                 int routing_id)
       : sender_(std::move(sender)), routing_id_(routing_id) {}
 
-  void AddPendingSequence(const cc::SurfaceSequence& sequence) {
+  void AddPendingSequence(const viz::SurfaceSequence& sequence) {
     ReleasePendingSequenceIfNecessary();
     pending_sequence_ = sequence;
   }
@@ -63,13 +63,13 @@
     if (pending_sequence_.is_valid()) {
       sender_->Send(
           new FrameHostMsg_SatisfySequence(routing_id_, pending_sequence_));
-      pending_sequence_ = cc::SurfaceSequence();
+      pending_sequence_ = viz::SurfaceSequence();
     }
   }
 
   // cc::SequenceSurfaceReferenceFactory implementation:
   void RequireSequence(const viz::SurfaceId& surface_id,
-                       const cc::SurfaceSequence& sequence) const override {
+                       const viz::SurfaceSequence& sequence) const override {
     sender_->Send(
         new FrameHostMsg_RequireSequence(routing_id_, surface_id, sequence));
     // If there is a temporary reference that was waiting on a new one to be
@@ -77,19 +77,19 @@
     ReleasePendingSequenceIfNecessary();
   }
 
-  void SatisfySequence(const cc::SurfaceSequence& sequence) const override {
+  void SatisfySequence(const viz::SurfaceSequence& sequence) const override {
     sender_->Send(new FrameHostMsg_SatisfySequence(routing_id_, sequence));
   }
 
   const scoped_refptr<ThreadSafeSender> sender_;
-  mutable cc::SurfaceSequence pending_sequence_;
+  mutable viz::SurfaceSequence pending_sequence_;
   const int routing_id_;
 
   DISALLOW_COPY_AND_ASSIGN(IframeSurfaceReferenceFactory);
 };
 
 class BrowserPluginSurfaceReferenceFactory
-    : public cc::SequenceSurfaceReferenceFactory {
+    : public viz::SequenceSurfaceReferenceFactory {
  public:
   BrowserPluginSurfaceReferenceFactory(scoped_refptr<ThreadSafeSender> sender,
                                        int routing_id,
@@ -98,7 +98,7 @@
         routing_id_(routing_id),
         browser_plugin_instance_id_(browser_plugin_instance_id) {}
 
-  void AddPendingSequence(const cc::SurfaceSequence& sequence) {
+  void AddPendingSequence(const viz::SurfaceSequence& sequence) {
     ReleasePendingSequenceIfNecessary();
     pending_sequence_ = sequence;
   }
@@ -112,18 +112,18 @@
     if (pending_sequence_.is_valid()) {
       sender_->Send(new BrowserPluginHostMsg_SatisfySequence(
           routing_id_, browser_plugin_instance_id_, pending_sequence_));
-      pending_sequence_ = cc::SurfaceSequence();
+      pending_sequence_ = viz::SurfaceSequence();
     }
   }
 
   // cc::SequenceSurfaceRefrenceFactory implementation:
-  void SatisfySequence(const cc::SurfaceSequence& seq) const override {
+  void SatisfySequence(const viz::SurfaceSequence& seq) const override {
     sender_->Send(new BrowserPluginHostMsg_SatisfySequence(
         routing_id_, browser_plugin_instance_id_, seq));
   }
 
   void RequireSequence(const viz::SurfaceId& surface_id,
-                       const cc::SurfaceSequence& sequence) const override {
+                       const viz::SurfaceSequence& sequence) const override {
     sender_->Send(new BrowserPluginHostMsg_RequireSequence(
         routing_id_, browser_plugin_instance_id_, surface_id, sequence));
     // If there is a temporary reference that was waiting on a new one to be
@@ -132,7 +132,7 @@
   }
 
   const scoped_refptr<ThreadSafeSender> sender_;
-  mutable cc::SurfaceSequence pending_sequence_;
+  mutable viz::SurfaceSequence pending_sequence_;
   const int routing_id_;
   const int browser_plugin_instance_id_;
 
@@ -250,7 +250,7 @@
 
 void ChildFrameCompositingHelper::OnSetSurface(
     const viz::SurfaceInfo& surface_info,
-    const cc::SurfaceSequence& sequence) {
+    const viz::SurfaceSequence& sequence) {
   float scale_factor = surface_info.device_scale_factor();
   surface_id_ = surface_info.id();
   scoped_refptr<cc::SurfaceLayer> surface_layer =
diff --git a/content/renderer/child_frame_compositing_helper.h b/content/renderer/child_frame_compositing_helper.h
index f324159..5f94c2c7 100644
--- a/content/renderer/child_frame_compositing_helper.h
+++ b/content/renderer/child_frame_compositing_helper.h
@@ -15,8 +15,8 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/shared_memory.h"
 #include "base/memory/weak_ptr.h"
-#include "cc/surfaces/surface_reference_factory.h"
 #include "components/viz/common/surfaces/surface_id.h"
+#include "components/viz/common/surfaces/surface_reference_factory.h"
 #include "content/common/content_export.h"
 #include "ui/gfx/geometry/size.h"
 
@@ -55,7 +55,7 @@
 
   void OnContainerDestroy();
   void OnSetSurface(const viz::SurfaceInfo& surface_info,
-                    const cc::SurfaceSequence& sequence);
+                    const viz::SurfaceSequence& sequence);
   void UpdateVisibility(bool);
   void ChildFrameGone();
 
@@ -95,7 +95,7 @@
   viz::SurfaceId surface_id_;
   blink::WebRemoteFrame* frame_;
 
-  scoped_refptr<cc::SurfaceReferenceFactory> surface_reference_factory_;
+  scoped_refptr<viz::SurfaceReferenceFactory> surface_reference_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(ChildFrameCompositingHelper);
 };
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index a99aea8..7395813 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -326,7 +326,7 @@
 
 void RenderFrameProxy::OnSetChildFrameSurface(
     const viz::SurfaceInfo& surface_info,
-    const cc::SurfaceSequence& sequence) {
+    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
diff --git a/content/renderer/render_frame_proxy.h b/content/renderer/render_frame_proxy.h
index bc7ef2a6..d6dc03c 100644
--- a/content/renderer/render_frame_proxy.h
+++ b/content/renderer/render_frame_proxy.h
@@ -21,12 +21,9 @@
 struct WebRect;
 }
 
-namespace cc {
-struct SurfaceSequence;
-}
-
 namespace viz {
 class SurfaceInfo;
+struct SurfaceSequence;
 }
 
 namespace content {
@@ -168,7 +165,7 @@
   void OnChildFrameProcessGone();
   void OnCompositorFrameSwapped(const IPC::Message& message);
   void OnSetChildFrameSurface(const viz::SurfaceInfo& surface_info,
-                              const cc::SurfaceSequence& sequence);
+                              const viz::SurfaceSequence& sequence);
   void OnUpdateOpener(int opener_routing_id);
   void OnDidStopLoading();
   void OnDidUpdateFramePolicy(
diff --git a/services/ui/public/cpp/BUILD.gn b/services/ui/public/cpp/BUILD.gn
index dde36c30c..e59ed0c 100644
--- a/services/ui/public/cpp/BUILD.gn
+++ b/services/ui/public/cpp/BUILD.gn
@@ -16,7 +16,7 @@
     "//base",
     "//cc",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//mojo/public/cpp/bindings",
     "//services/service_manager/public/interfaces",
     "//services/ui/common:mus_common",
@@ -61,7 +61,7 @@
     "//base",
     "//cc",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//mojo/public/cpp/bindings",
     "//services/service_manager/public/cpp",
     "//services/service_manager/public/interfaces",
diff --git a/services/ui/ws/BUILD.gn b/services/ui/ws/BUILD.gn
index 351167c..ab7176fc 100644
--- a/services/ui/ws/BUILD.gn
+++ b/services/ui/ws/BUILD.gn
@@ -138,7 +138,7 @@
     "//cc",
     "//cc/ipc:interfaces",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//mojo/common:common_base",
     "//mojo/public/cpp/bindings",
     "//services/service_manager/public/cpp",
diff --git a/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.cpp b/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.cpp
index 73e4d80..cd297127e 100644
--- a/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.cpp
+++ b/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.cpp
@@ -7,10 +7,10 @@
 #include "cc/layers/layer.h"
 #include "cc/layers/solid_color_layer.h"
 #include "cc/layers/surface_layer.h"
-#include "cc/surfaces/sequence_surface_reference_factory.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_info.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "platform/graphics/GraphicsLayer.h"
 #include "platform/mojo/MojoHelper.h"
 #include "platform/wtf/Functional.h"
@@ -26,7 +26,7 @@
 
 namespace {
 class SequenceSurfaceReferenceFactoryImpl
-    : public cc::SequenceSurfaceReferenceFactory {
+    : public viz::SequenceSurfaceReferenceFactory {
  public:
   SequenceSurfaceReferenceFactoryImpl(base::WeakPtr<SurfaceLayerBridge> bridge)
       : bridge_(bridge) {}
@@ -36,12 +36,12 @@
 
   // cc::SequenceSurfaceReferenceFactory implementation:
   void RequireSequence(const viz::SurfaceId& id,
-                       const cc::SurfaceSequence& sequence) const override {
+                       const viz::SurfaceSequence& sequence) const override {
     DCHECK(bridge_);
     bridge_->RequireCallback(id, sequence);
   }
 
-  void SatisfySequence(const cc::SurfaceSequence& sequence) const override {
+  void SatisfySequence(const viz::SurfaceSequence& sequence) const override {
     if (bridge_)
       bridge_->SatisfyCallback(sequence);
   }
@@ -85,12 +85,12 @@
   }
 }
 
-void SurfaceLayerBridge::SatisfyCallback(const cc::SurfaceSequence& sequence) {
+void SurfaceLayerBridge::SatisfyCallback(const viz::SurfaceSequence& sequence) {
   service_->Satisfy(sequence);
 }
 
 void SurfaceLayerBridge::RequireCallback(const viz::SurfaceId& surface_id,
-                                         const cc::SurfaceSequence& sequence) {
+                                         const viz::SurfaceSequence& sequence) {
   service_->Require(surface_id, sequence);
 }
 
diff --git a/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.h b/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.h
index 6c2757b..9647aff 100644
--- a/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.h
+++ b/third_party/WebKit/Source/platform/graphics/SurfaceLayerBridge.h
@@ -8,8 +8,8 @@
 #include <memory>
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
-#include "cc/surfaces/surface_reference_factory.h"
 #include "components/viz/common/surfaces/surface_id.h"
+#include "components/viz/common/surfaces/surface_reference_factory.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "platform/PlatformExport.h"
 #include "public/platform/WebSurfaceLayerBridge.h"
@@ -48,8 +48,8 @@
 
   // Implementation of blink::mojom::blink::OffscreenCanvasSurfaceClient
   void OnSurfaceCreated(const viz::SurfaceInfo&) override;
-  void SatisfyCallback(const cc::SurfaceSequence&);
-  void RequireCallback(const viz::SurfaceId&, const cc::SurfaceSequence&);
+  void SatisfyCallback(const viz::SurfaceSequence&);
+  void RequireCallback(const viz::SurfaceId&, const viz::SurfaceSequence&);
 
   // Implementation of WebSurfaceLayerBridge.
   WebLayer* GetWebLayer() const override { return web_layer_.get(); }
@@ -62,7 +62,7 @@
   scoped_refptr<cc::Layer> cc_layer_;
   std::unique_ptr<WebLayer> web_layer_;
 
-  scoped_refptr<cc::SurfaceReferenceFactory> ref_factory_;
+  scoped_refptr<viz::SurfaceReferenceFactory> ref_factory_;
   base::WeakPtrFactory<SurfaceLayerBridge> weak_factory_;
 
   SurfaceLayerBridgeObserver* observer_;
diff --git a/third_party/WebKit/public/BUILD.gn b/third_party/WebKit/public/BUILD.gn
index 4a105f3..bc23e84 100644
--- a/third_party/WebKit/public/BUILD.gn
+++ b/third_party/WebKit/public/BUILD.gn
@@ -656,7 +656,7 @@
     "//base:base",
     "//cc:cc",
     "//cc/paint:paint",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//device/screen_orientation/public/interfaces:interfaces_shared_cpp_sources",
     "//media/midi:mojo_shared_cpp_sources",
     "//mojo/public/cpp/bindings:bindings",
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
index b088686..d2cba5c 100644
--- a/ui/android/BUILD.gn
+++ b/ui/android/BUILD.gn
@@ -61,7 +61,7 @@
     "//base",
     "//cc",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//components/viz/service",
     "//skia",
     "//ui/base",
diff --git a/ui/aura/local/window_port_local.cc b/ui/aura/local/window_port_local.cc
index 8b987fc..aeb7ebf 100644
--- a/ui/aura/local/window_port_local.cc
+++ b/ui/aura/local/window_port_local.cc
@@ -130,7 +130,7 @@
   DCHECK_EQ(surface_id.frame_sink_id(), frame_sink_id_);
   local_surface_id_ = surface_id.local_surface_id();
   viz::SurfaceInfo surface_info(surface_id, 1.0f, surface_size);
-  scoped_refptr<cc::SurfaceReferenceFactory> reference_factory =
+  scoped_refptr<viz::SurfaceReferenceFactory> reference_factory =
       aura::Env::GetInstance()
           ->context_factory_private()
           ->GetFrameSinkManager()
diff --git a/ui/aura/mus/client_surface_embedder.h b/ui/aura/mus/client_surface_embedder.h
index 2c63b03e..eda967fe 100644
--- a/ui/aura/mus/client_surface_embedder.h
+++ b/ui/aura/mus/client_surface_embedder.h
@@ -6,7 +6,7 @@
 
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "cc/surfaces/surface_reference_factory.h"
+#include "components/viz/common/surfaces/surface_reference_factory.h"
 #include "ui/gfx/geometry/insets.h"
 
 namespace gfx {
@@ -64,7 +64,7 @@
 
   gfx::Insets client_area_insets_;
 
-  scoped_refptr<cc::SurfaceReferenceFactory> ref_factory_;
+  scoped_refptr<viz::SurfaceReferenceFactory> ref_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(ClientSurfaceEmbedder);
 };
diff --git a/ui/compositor/BUILD.gn b/ui/compositor/BUILD.gn
index 4612fd1..a992c272 100644
--- a/ui/compositor/BUILD.gn
+++ b/ui/compositor/BUILD.gn
@@ -87,7 +87,6 @@
     "//cc/animation",
     "//cc/paint",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
     "//cc/surfaces:surfaces",
     "//components/viz/common",
     "//components/viz/host",
@@ -213,7 +212,7 @@
     "//cc",
     "//cc:test_support",
     "//cc/surfaces",
-    "//cc/surfaces:surface_id",
+    "//components/viz/common",
     "//mojo/edk/system",
     "//skia",
     "//testing/gmock",
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
index 7917df9..3664ff58 100644
--- a/ui/compositor/compositor.h
+++ b/ui/compositor/compositor.h
@@ -18,9 +18,9 @@
 #include "base/time/time.h"
 #include "build/build_config.h"
 #include "cc/output/begin_frame_args.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "cc/trees/layer_tree_host_client.h"
 #include "cc/trees/layer_tree_host_single_thread_client.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/compositor/compositor_animation_observer.h"
 #include "ui/compositor/compositor_export.h"
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 6646e58..6219155 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -687,7 +687,7 @@
 
 void Layer::SetShowPrimarySurface(
     const viz::SurfaceInfo& surface_info,
-    scoped_refptr<cc::SurfaceReferenceFactory> ref_factory) {
+    scoped_refptr<viz::SurfaceReferenceFactory> ref_factory) {
   DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR);
 
   if (!surface_layer_) {
diff --git a/ui/compositor/layer.h b/ui/compositor/layer.h
index 3f69b63..9cf998d 100644
--- a/ui/compositor/layer.h
+++ b/ui/compositor/layer.h
@@ -21,8 +21,8 @@
 #include "cc/layers/layer_client.h"
 #include "cc/layers/surface_layer.h"
 #include "cc/layers/texture_layer_client.h"
-#include "cc/surfaces/sequence_surface_reference_factory.h"
 #include "components/viz/common/quads/texture_mailbox.h"
+#include "components/viz/common/surfaces/sequence_surface_reference_factory.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "third_party/skia/include/core/SkRegion.h"
 #include "ui/compositor/compositor.h"
@@ -304,7 +304,7 @@
   // Begins showing content from a surface with a particular ID.
   void SetShowPrimarySurface(
       const viz::SurfaceInfo& surface_info,
-      scoped_refptr<cc::SurfaceReferenceFactory> surface_ref);
+      scoped_refptr<viz::SurfaceReferenceFactory> surface_ref);
 
   // In the event that the primary surface is not yet available in the
   // display compositor, the fallback surface will be used.
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc
index 5bd37a2..ed147083 100644
--- a/ui/compositor/layer_unittest.cc
+++ b/ui/compositor/layer_unittest.cc
@@ -26,11 +26,11 @@
 #include "cc/layers/layer.h"
 #include "cc/output/copy_output_request.h"
 #include "cc/output/copy_output_result.h"
-#include "cc/surfaces/sequence_surface_reference_factory.h"
-#include "cc/surfaces/surface_reference_factory.h"
-#include "cc/surfaces/surface_sequence.h"
 #include "cc/test/pixel_test_utils.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_reference_factory.h"
+#include "components/viz/common/surfaces/surface_sequence.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/khronos/GLES2/gl2.h"
 #include "ui/compositor/compositor_observer.h"
@@ -1734,7 +1734,8 @@
 
 namespace {
 
-class TestSurfaceReferenceFactory : public cc::SequenceSurfaceReferenceFactory {
+class TestSurfaceReferenceFactory
+    : public viz::SequenceSurfaceReferenceFactory {
  public:
   TestSurfaceReferenceFactory() = default;
 
@@ -1742,9 +1743,9 @@
   ~TestSurfaceReferenceFactory() override = default;
 
   // cc::SequenceSurfaceReferenceFactory implementation:
-  void SatisfySequence(const cc::SurfaceSequence& seq) const override {}
+  void SatisfySequence(const viz::SurfaceSequence& seq) const override {}
   void RequireSequence(const viz::SurfaceId& id,
-                       const cc::SurfaceSequence& seq) const override {}
+                       const viz::SurfaceSequence& seq) const override {}
 
   DISALLOW_COPY_AND_ASSIGN(TestSurfaceReferenceFactory);
 };
@@ -1784,7 +1785,7 @@
 
 TEST_F(LayerWithDelegateTest, ExternalContentMirroring) {
   std::unique_ptr<Layer> layer(CreateLayer(LAYER_SOLID_COLOR));
-  scoped_refptr<cc::SurfaceReferenceFactory> reference_factory(
+  scoped_refptr<viz::SurfaceReferenceFactory> reference_factory(
       new TestSurfaceReferenceFactory());
 
   viz::SurfaceId surface_id(