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 202212cc1ffdb1fc6624314e2f76e6b1c5b9c310..839a8687eb16ad21f15f55e5e2aa61a5422d58a0 100644 |
--- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
+++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
@@ -58,9 +58,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()); |
@@ -127,6 +127,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); |