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 2863df303511f9dbf33204113c5724b874e8a994..895e12660fb9acd615e07944b62de2061ffae4a6 100644 |
--- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
+++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp |
@@ -6,6 +6,8 @@ |
#include "bindings/modules/v8/OffscreenCanvasRenderingContext2DOrWebGLRenderingContextOrWebGL2RenderingContext.h" |
#include "core/frame/ImageBitmap.h" |
+#include "core/frame/Settings.h" |
+#include "core/workers/WorkerSettings.h" |
#include "platform/graphics/ImageBuffer.h" |
#include "platform/graphics/StaticBitmapImage.h" |
#include "wtf/Assertions.h" |
@@ -18,10 +20,21 @@ OffscreenCanvasRenderingContext2D::~OffscreenCanvasRenderingContext2D() |
{ |
} |
-OffscreenCanvasRenderingContext2D::OffscreenCanvasRenderingContext2D(OffscreenCanvas* canvas, const CanvasContextCreationAttributes& attrs) |
+OffscreenCanvasRenderingContext2D::OffscreenCanvasRenderingContext2D(ScriptState* scriptState, OffscreenCanvas* canvas, const CanvasContextCreationAttributes& attrs) |
: CanvasRenderingContext(nullptr, canvas) |
, m_hasAlpha(attrs.alpha()) |
{ |
+ ExecutionContext* executionContext = scriptState->getExecutionContext(); |
+ if (executionContext->isDocument()) { |
+ m_disableReadingFromCanvas = toDocument(executionContext)->settings()->disableReadingFromCanvas(); |
+ return; |
+ } |
+ |
+ WorkerSettings* workerSettings = WorkerSettings::from(executionContext); |
+ if (workerSettings) |
+ m_disableReadingFromCanvas = workerSettings->disableReadingFromCanvas(); |
+ else |
+ m_disableReadingFromCanvas = false; |
} |
DEFINE_TRACE(OffscreenCanvasRenderingContext2D) |
@@ -33,7 +46,7 @@ DEFINE_TRACE(OffscreenCanvasRenderingContext2D) |
// BaseRenderingContext2D implementation |
bool OffscreenCanvasRenderingContext2D::originClean() const |
{ |
- return getOffscreenCanvas()->originClean(); |
+ return getOffscreenCanvas()->originClean() && !m_disableReadingFromCanvas; |
} |
void OffscreenCanvasRenderingContext2D::setOriginTainted() |