| Index: cc/raster/one_copy_raster_buffer_provider.h
 | 
| diff --git a/cc/raster/one_copy_raster_buffer_provider.h b/cc/raster/one_copy_raster_buffer_provider.h
 | 
| index d30c3b59a6f8dc472305745898bcb8c32163630a..44ceb7a744418e5ec398d4c8b78699ce467a02b2 100644
 | 
| --- a/cc/raster/one_copy_raster_buffer_provider.h
 | 
| +++ b/cc/raster/one_copy_raster_buffer_provider.h
 | 
| @@ -12,6 +12,7 @@
 | 
|  #include "cc/raster/raster_buffer_provider.h"
 | 
|  #include "cc/raster/staging_buffer_pool.h"
 | 
|  #include "cc/resources/resource_provider.h"
 | 
| +#include "gpu/command_buffer/common/sync_token.h"
 | 
|  
 | 
|  namespace cc {
 | 
|  struct StagingBuffer;
 | 
| @@ -27,7 +28,8 @@
 | 
|                                int max_copy_texture_chromium_size,
 | 
|                                bool use_partial_raster,
 | 
|                                int max_staging_buffer_usage_in_bytes,
 | 
| -                              ResourceFormat preferred_tile_format);
 | 
| +                              ResourceFormat preferred_tile_format,
 | 
| +                              bool async_worker_context_enabled);
 | 
|    ~OneCopyRasterBufferProvider() override;
 | 
|  
 | 
|    // Overridden from RasterBufferProvider:
 | 
| @@ -45,6 +47,7 @@
 | 
|    void PlaybackAndCopyOnWorkerThread(
 | 
|        const Resource* resource,
 | 
|        ResourceProvider::ScopedWriteLockGL* resource_lock,
 | 
| +      const gpu::SyncToken& sync_token,
 | 
|        const RasterSource* raster_source,
 | 
|        const gfx::Rect& raster_full_rect,
 | 
|        const gfx::Rect& raster_dirty_rect,
 | 
| @@ -54,6 +57,39 @@
 | 
|        uint64_t new_content_id);
 | 
|  
 | 
|   private:
 | 
| +  class RasterBufferImpl : public RasterBuffer {
 | 
| +   public:
 | 
| +    RasterBufferImpl(OneCopyRasterBufferProvider* client,
 | 
| +                     ResourceProvider* resource_provider,
 | 
| +                     const Resource* resource,
 | 
| +                     uint64_t previous_content_id,
 | 
| +                     bool async_worker_context_enabled);
 | 
| +    ~RasterBufferImpl() override;
 | 
| +
 | 
| +    // Overridden from RasterBuffer:
 | 
| +    void Playback(
 | 
| +        const RasterSource* raster_source,
 | 
| +        const gfx::Rect& raster_full_rect,
 | 
| +        const gfx::Rect& raster_dirty_rect,
 | 
| +        uint64_t new_content_id,
 | 
| +        float scale,
 | 
| +        const RasterSource::PlaybackSettings& playback_settings) override;
 | 
| +
 | 
| +    void set_sync_token(const gpu::SyncToken& sync_token) {
 | 
| +      sync_token_ = sync_token;
 | 
| +    }
 | 
| +
 | 
| +   private:
 | 
| +    OneCopyRasterBufferProvider* client_;
 | 
| +    const Resource* resource_;
 | 
| +    ResourceProvider::ScopedWriteLockGL lock_;
 | 
| +    uint64_t previous_content_id_;
 | 
| +
 | 
| +    gpu::SyncToken sync_token_;
 | 
| +
 | 
| +    DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl);
 | 
| +  };
 | 
| +
 | 
|    void PlaybackToStagingBuffer(
 | 
|        StagingBuffer* staging_buffer,
 | 
|        const Resource* resource,
 | 
| @@ -65,8 +101,8 @@
 | 
|        uint64_t previous_content_id,
 | 
|        uint64_t new_content_id);
 | 
|    void CopyOnWorkerThread(StagingBuffer* staging_buffer,
 | 
| -                          const Resource* resource,
 | 
|                            ResourceProvider::ScopedWriteLockGL* resource_lock,
 | 
| +                          const gpu::SyncToken& sync_token,
 | 
|                            const RasterSource* raster_source,
 | 
|                            uint64_t previous_content_id,
 | 
|                            uint64_t new_content_id);
 | 
| @@ -75,13 +111,17 @@
 | 
|    ContextProvider* const worker_context_provider_;
 | 
|    ResourceProvider* const resource_provider_;
 | 
|    const int max_bytes_per_copy_operation_;
 | 
| -  bool use_partial_raster_;
 | 
| +  const bool use_partial_raster_;
 | 
|  
 | 
|    // Context lock must be acquired when accessing this member.
 | 
|    int bytes_scheduled_since_last_flush_;
 | 
|  
 | 
| -  ResourceFormat preferred_tile_format_;
 | 
| +  const ResourceFormat preferred_tile_format_;
 | 
|    StagingBufferPool staging_pool_;
 | 
| +
 | 
| +  const bool async_worker_context_enabled_;
 | 
| +
 | 
| +  std::set<RasterBufferImpl*> pending_raster_buffers_;
 | 
|  
 | 
|    DISALLOW_COPY_AND_ASSIGN(OneCopyRasterBufferProvider);
 | 
|  };
 | 
| 
 |