| Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h | 
| diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h | 
| index f1634335890d30b9660e505ba873b80c4cf69d24..63da730d8e72dd4e90224d740237ec87f592b939 100644 | 
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h | 
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h | 
| @@ -132,7 +132,9 @@ class ScopedRGBEmulationColorMask { | 
| const bool m_requiresEmulation; | 
| }; | 
|  | 
| -class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext { | 
| +class MODULES_EXPORT WebGLRenderingContextBase | 
| +    : public CanvasRenderingContext, | 
| +      public DrawingBufferStateTracker { | 
| WTF_MAKE_NONCOPYABLE(WebGLRenderingContextBase); | 
|  | 
| public: | 
| @@ -545,11 +547,7 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext { | 
| void restoreScissorEnabled(); | 
| void restoreScissorBox(); | 
| void restoreClearColor(); | 
| -  void restoreClearDepthf(); | 
| -  void restoreClearStencil(); | 
| -  void restoreStencilMaskSeparate(); | 
| void restoreColorMask(); | 
| -  void restoreDepthMask(); | 
|  | 
| gpu::gles2::GLES2Interface* contextGL() const { | 
| DrawingBuffer* d = drawingBuffer(); | 
| @@ -617,6 +615,7 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext { | 
| friend class WebGLCompressedTextureS3TCsRGB; | 
| friend class WebGLRenderingContextErrorMessageCallback; | 
| friend class WebGLVertexArrayObjectBase; | 
| +  friend class ScopedDrawingBufferBinder; | 
| friend class ScopedTexture2DRestorer; | 
| friend class ScopedFramebufferRestorer; | 
| // To allow V8WebGL[2]RenderingContext to call visitChildDOMWrappers. | 
| @@ -643,6 +642,9 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext { | 
| WebLayer* platformLayer() const override; | 
| void stop() override; | 
|  | 
| +  // DrawingBufferRestoreStateSource implementation. | 
| +  void GetDrawingBufferRestoreState(DrawingBufferRestoreState*) override; | 
| + | 
| void addSharedObject(WebGLSharedObject*); | 
| void addContextObject(WebGLContextObject*); | 
| void detachAndRemoveAllObjects(); | 
| @@ -913,7 +915,7 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext { | 
| m_readFramebufferBinding(framebufferBinding) { | 
| // Commit DrawingBuffer if needed (e.g., for multisampling) | 
| if (!m_readFramebufferBinding && m_drawingBuffer) | 
| -        m_drawingBuffer->commit(); | 
| +        m_drawingBuffer->resolveAndBindForReadAndDraw(); | 
| } | 
|  | 
| ~ScopedDrawingBufferBinder() { | 
| @@ -973,9 +975,6 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext { | 
| }; | 
| HowToClear clearIfComposited(GLbitfield clearMask = 0); | 
|  | 
| -  // Helper to restore state that clearing the framebuffer may destroy. | 
| -  void restoreStateAfterClear(); | 
| - | 
| // Convert texture internal format. | 
| GLenum convertTexInternalFormat(GLenum internalformat, GLenum type); | 
|  | 
|  |