| Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp | 
| diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp | 
| index a376b6c1e45025880a6e39a082736ecacc529a4a..0e94076dcecfab557301124d102a294b5e695397 100644 | 
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp | 
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp | 
| @@ -649,6 +649,27 @@ ImageBitmap* WebGLRenderingContextBase::transferToImageBitmapBase() | 
| return ImageBitmap::create(drawingBuffer()->transferToStaticBitmapImage()); | 
| } | 
|  | 
| +PassRefPtr<Image> WebGLRenderingContextBase::getImage(SnapshotReason reason) const | 
| +{ | 
| +    if (!drawingBuffer()) | 
| +        return nullptr; | 
| + | 
| +    drawingBuffer()->commit(); | 
| +    IntSize size = clampedCanvasSize(); | 
| +    OpacityMode opacityMode = hasAlpha() ? NonOpaque : Opaque; | 
| +    std::unique_ptr<AcceleratedImageBufferSurface> surface = wrapUnique(new AcceleratedImageBufferSurface(size, opacityMode)); | 
| +    if (!surface->isValid()) | 
| +        return nullptr; | 
| +    std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(std::move(surface)); | 
| +    if (!buffer->copyRenderingResultsFromDrawingBuffer(drawingBuffer(), BackBuffer)) { | 
| +        // copyRenderingResultsFromDrawingBuffer is expected to always succeed because we've | 
| +        // explicitly created an Accelerated surface and have already validated it. | 
| +        NOTREACHED(); | 
| +        return nullptr; | 
| +    } | 
| +    return buffer->newImageSnapshot(PreferAcceleration, reason); | 
| +} | 
| + | 
| namespace { | 
|  | 
| // ES2 enums | 
| @@ -6300,7 +6321,7 @@ void WebGLRenderingContextBase::enableOrDisable(GLenum capability, bool enable) | 
| contextGL()->Disable(capability); | 
| } | 
|  | 
| -IntSize WebGLRenderingContextBase::clampedCanvasSize() | 
| +IntSize WebGLRenderingContextBase::clampedCanvasSize() const | 
| { | 
| int width, height; | 
| if (canvas()) { | 
|  |