Index: third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
diff --git a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
index 65f3f5bb41907120e921840bbce2dae8adacd2a1..ae0e35226b0398dfb5801e9c570396cebce20d0d 100644 |
--- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
+++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
@@ -59,9 +59,9 @@ void OffscreenCanvasRenderingContext2D::setOriginTainted() |
bool OffscreenCanvasRenderingContext2D::wouldTaintOrigin(CanvasImageSource* source, ExecutionContext* executionContext) |
{ |
if (executionContext->isWorkerGlobalScope()) { |
- // Currently, we only support passing in ImageBitmap as source image in |
- // drawImage() or createPattern() in a OffscreenCanvas2d in worker. |
- ASSERT(source->isImageBitmap()); |
+ // We only support passing in ImageBitmap and OffscreenCanvases as source images |
+ // in drawImage() or createPattern() in a OffscreenCanvas2d in worker. |
+ DCHECK(source->isImageBitmap() || source->isOffscreenCanvas()); |
} |
return CanvasRenderingContext::wouldTaintOrigin(source, executionContext->getSecurityOrigin()); |
@@ -128,6 +128,15 @@ ImageBitmap* OffscreenCanvasRenderingContext2D::transferToImageBitmap(ExceptionS |
return ImageBitmap::create(image.release()); |
} |
+PassRefPtr<Image> OffscreenCanvasRenderingContext2D::getImage(SnapshotReason reason) const |
+{ |
+ if (!imageBuffer()) |
+ return nullptr; |
+ RefPtr<SkImage> skImage = m_imageBuffer->newSkImageSnapshot(PreferAcceleration, reason); |
+ RefPtr<StaticBitmapImage> image = StaticBitmapImage::create(skImage.release()); |
+ return image; |
+} |
+ |
void OffscreenCanvasRenderingContext2D::setOffscreenCanvasGetContextResult(OffscreenRenderingContext& result) |
{ |
result.setOffscreenCanvasRenderingContext2D(this); |