| Index: services/ui/ws/server_window_surface_manager.cc
 | 
| diff --git a/services/ui/ws/server_window_surface_manager.cc b/services/ui/ws/server_window_surface_manager.cc
 | 
| index 0bb6277aee68c82f68ce37f93dd7a0eebe830245..147d2c23a9fe40968cfe6349caaa5111c80d258f 100644
 | 
| --- a/services/ui/ws/server_window_surface_manager.cc
 | 
| +++ b/services/ui/ws/server_window_surface_manager.cc
 | 
| @@ -4,7 +4,7 @@
 | 
|  
 | 
|  #include "services/ui/ws/server_window_surface_manager.h"
 | 
|  
 | 
| -#include "services/ui/surfaces/surfaces_state.h"
 | 
| +#include "services/ui/surfaces/display_compositor.h"
 | 
|  #include "services/ui/ws/server_window.h"
 | 
|  #include "services/ui/ws/server_window_delegate.h"
 | 
|  #include "services/ui/ws/server_window_surface.h"
 | 
| @@ -14,9 +14,11 @@ namespace ws {
 | 
|  
 | 
|  ServerWindowSurfaceManager::ServerWindowSurfaceManager(ServerWindow* window)
 | 
|      : window_(window),
 | 
| +      frame_sink_id_(window->id().client_id, window->id().window_id),
 | 
|        waiting_for_initial_frames_(
 | 
|            window_->properties().count(ui::mojom::kWaitForUnderlay_Property) >
 | 
|            0) {
 | 
| +  surface_sequence_generator_.set_frame_sink_id(frame_sink_id_);
 | 
|  }
 | 
|  
 | 
|  ServerWindowSurfaceManager::~ServerWindowSurfaceManager() {
 | 
| @@ -39,11 +41,33 @@ void ServerWindowSurfaceManager::CreateSurface(
 | 
|      mojom::SurfaceType surface_type,
 | 
|      mojo::InterfaceRequest<mojom::Surface> request,
 | 
|      mojom::SurfaceClientPtr client) {
 | 
| +  cc::FrameSinkId id = frame_sink_id_;
 | 
| +  // TODO(fsamuel): For non-default surfaces let's give them a unique ID that's
 | 
| +  // different.
 | 
| +  if (surface_type != mojom::SurfaceType::DEFAULT) {
 | 
| +    // TODO(fsamuel): HUGE HACK!
 | 
| +    id = cc::FrameSinkId(
 | 
| +        100000000,
 | 
| +        window_->delegate()->GetDisplayCompositor()->next_client_id());
 | 
| +  }
 | 
| +
 | 
|    std::unique_ptr<ServerWindowSurface> surface(
 | 
| -      new ServerWindowSurface(this, std::move(request), std::move(client)));
 | 
| +      new ServerWindowSurface(this, id, std::move(request), std::move(client)));
 | 
|    type_to_surface_map_[surface_type] = std::move(surface);
 | 
|  }
 | 
|  
 | 
| +cc::SurfaceSequence ServerWindowSurfaceManager::CreateSurfaceSequence() {
 | 
| +  return surface_sequence_generator_.CreateSurfaceSequence();
 | 
| +}
 | 
| +
 | 
| +void ServerWindowSurfaceManager::SatisfySurfaceSequence(
 | 
| +    const cc::SurfaceSequence& sequence) {
 | 
| +  std::vector<uint32_t> sequences;
 | 
| +  sequences.push_back(sequence.sequence);
 | 
| +  window_->delegate()->GetDisplayCompositor()->manager()->
 | 
| +    DidSatisfySequences(sequence.frame_sink_id, &sequences);
 | 
| +}
 | 
| +
 | 
|  ServerWindowSurface* ServerWindowSurfaceManager::GetDefaultSurface() const {
 | 
|    return GetSurfaceByType(mojom::SurfaceType::DEFAULT);
 | 
|  }
 | 
| @@ -68,7 +92,7 @@ bool ServerWindowSurfaceManager::HasAnySurface() const {
 | 
|  }
 | 
|  
 | 
|  cc::SurfaceManager* ServerWindowSurfaceManager::GetSurfaceManager() {
 | 
| -  return window()->delegate()->GetSurfacesState()->manager();
 | 
| +  return window()->delegate()->GetDisplayCompositor()->manager();
 | 
|  }
 | 
|  
 | 
|  bool ServerWindowSurfaceManager::IsSurfaceReadyAndNonEmpty(
 | 
| 
 |