| 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 324450bc7340d13d7a713c69f3de9b8adb00b591..7e17e141211ca98ff7786ec50caa4d3e455f6b32 100644
|
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
|
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
|
| @@ -4506,14 +4506,10 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLint int
|
| }
|
|
|
| void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLint internalformat,
|
| - GLenum format, GLenum type, PassRefPtrWillBeRawPtr<ImageBitmap> bitmap)
|
| + GLenum format, GLenum type, PassRefPtrWillBeRawPtr<ImageBitmap> bitmap, ExceptionState& exceptionState)
|
| {
|
| ASSERT(bitmap->bitmapImage());
|
| - if (bitmap->isNeutered()) {
|
| - synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "The source data has been neutered.");
|
| - return;
|
| - }
|
| - if (isContextLost() || !validateTexFunc("texImage2D", TexImage, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 1, 0, format, type, 0, 0, 0))
|
| + if (isContextLost() || !validateImageBitmap("texImage2D", bitmap.get(), exceptionState) || !validateTexFunc("texImage2D", TexImage, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 1, 0, format, type, 0, 0, 0))
|
| return;
|
| StaticBitmapImage* imageForRender = bitmap->bitmapImage();
|
| texImage2DImpl(target, level, internalformat, format, type, imageForRender, WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackPremultiplyAlpha);
|
| @@ -4732,14 +4728,10 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint
|
| }
|
|
|
| void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
| - GLenum format, GLenum type, PassRefPtrWillBeRawPtr<ImageBitmap> bitmap)
|
| + GLenum format, GLenum type, PassRefPtrWillBeRawPtr<ImageBitmap> bitmap, ExceptionState& exceptionState)
|
| {
|
| ASSERT(bitmap->bitmapImage());
|
| - if (bitmap->isNeutered()) {
|
| - synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "The source data has been neutered.");
|
| - return;
|
| - }
|
| - if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 1, 0, format, type, 0, 0, 0))
|
| + if (isContextLost() || !validateImageBitmap("texSubImage2D", bitmap.get(), exceptionState) || !validateTexFunc("texSubImage2D", TexSubImage, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 1, 0, format, type, 0, 0, 0))
|
| return;
|
| StaticBitmapImage* imageForRender = bitmap->bitmapImage();
|
| texSubImage2DImpl(target, level, xoffset, yoffset, format, type, imageForRender, WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackPremultiplyAlpha);
|
| @@ -6504,6 +6496,19 @@ bool WebGLRenderingContextBase::validateHTMLVideoElement(const char* functionNam
|
| return true;
|
| }
|
|
|
| +bool WebGLRenderingContextBase::validateImageBitmap(const char* functionName, ImageBitmap* bitmap, ExceptionState& exceptionState)
|
| +{
|
| + if (bitmap->isNeutered()) {
|
| + synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "The source data has been neutered.");
|
| + return false;
|
| + }
|
| + if (!bitmap->originClean()) {
|
| + exceptionState.throwSecurityError("The ImageBitmap contains cross-origin data, and may not be loaded.");
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| bool WebGLRenderingContextBase::validateDrawArrays(const char* functionName, GLenum mode, GLint first, GLsizei count)
|
| {
|
| if (isContextLost())
|
|
|