Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
index fbde1a813b59e4f64d6382e24968e55d773221b6..d0413720b5198e87c859becab42fb499f7298e47 100644 |
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
@@ -26,6 +26,8 @@ |
#ifndef WebGLRenderingContextBase_h |
#define WebGLRenderingContextBase_h |
+#include <memory> |
+#include <set> |
#include "bindings/core/v8/Nullable.h" |
#include "bindings/core/v8/ScriptState.h" |
#include "bindings/core/v8/ScriptValue.h" |
@@ -33,6 +35,7 @@ |
#include "bindings/core/v8/ScriptWrappableVisitor.h" |
#include "core/CoreExport.h" |
#include "core/dom/DOMTypedArray.h" |
+#include "core/dom/MaybeShared.h" |
#include "core/dom/TypedFlexibleArrayBufferView.h" |
#include "core/html/canvas/CanvasContextCreationAttributes.h" |
#include "core/html/canvas/CanvasRenderingContext.h" |
@@ -51,8 +54,6 @@ |
#include "third_party/khronos/GLES2/gl2.h" |
#include "wtf/CheckedNumeric.h" |
#include "wtf/text/WTFString.h" |
-#include <memory> |
-#include <set> |
namespace blink { |
class WebLayer; |
@@ -467,19 +468,19 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, |
void uniform4iv(const WebGLUniformLocation*, Vector<GLint>&); |
void uniformMatrix2fv(const WebGLUniformLocation*, |
GLboolean transpose, |
- DOMFloat32Array* value); |
+ const MaybeShared<DOMFloat32Array>& value); |
void uniformMatrix2fv(const WebGLUniformLocation*, |
GLboolean transpose, |
Vector<GLfloat>& value); |
void uniformMatrix3fv(const WebGLUniformLocation*, |
GLboolean transpose, |
- DOMFloat32Array* value); |
+ const MaybeShared<DOMFloat32Array>& value); |
void uniformMatrix3fv(const WebGLUniformLocation*, |
GLboolean transpose, |
Vector<GLfloat>& value); |
void uniformMatrix4fv(const WebGLUniformLocation*, |
GLboolean transpose, |
- DOMFloat32Array* value); |
+ const MaybeShared<DOMFloat32Array>& value); |
void uniformMatrix4fv(const WebGLUniformLocation*, |
GLboolean transpose, |
Vector<GLfloat>& value); |
@@ -488,16 +489,20 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, |
void validateProgram(WebGLProgram*); |
void vertexAttrib1f(GLuint index, GLfloat x); |
- void vertexAttrib1fv(GLuint index, const DOMFloat32Array* values); |
+ void vertexAttrib1fv(GLuint index, |
+ const MaybeShared<const DOMFloat32Array>& values); |
void vertexAttrib1fv(GLuint index, const Vector<GLfloat>& values); |
void vertexAttrib2f(GLuint index, GLfloat x, GLfloat y); |
- void vertexAttrib2fv(GLuint index, const DOMFloat32Array* values); |
+ void vertexAttrib2fv(GLuint index, |
+ const MaybeShared<const DOMFloat32Array>& values); |
void vertexAttrib2fv(GLuint index, const Vector<GLfloat>& values); |
void vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); |
- void vertexAttrib3fv(GLuint index, const DOMFloat32Array* values); |
+ void vertexAttrib3fv(GLuint index, |
+ const MaybeShared<const DOMFloat32Array>& values); |
void vertexAttrib3fv(GLuint index, const Vector<GLfloat>& values); |
void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); |
- void vertexAttrib4fv(GLuint index, const DOMFloat32Array* values); |
+ void vertexAttrib4fv(GLuint index, |
+ const MaybeShared<const DOMFloat32Array>& values); |
void vertexAttrib4fv(GLuint index, const Vector<GLfloat>& values); |
void vertexAttribPointer(GLuint index, |
GLint size, |
@@ -1358,7 +1363,7 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, |
bool validateUniformMatrixParameters(const char* functionName, |
const WebGLUniformLocation*, |
GLboolean transpose, |
- DOMFloat32Array*, |
+ const MaybeShared<DOMFloat32Array>&, |
GLsizei mod, |
GLuint srcOffset, |
GLuint srcLength); |
@@ -1388,6 +1393,18 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, |
requiredMinSize, srcOffset, srcLength); |
} |
+ template <typename TypedArray> |
+ bool validateNotSharedArrayBuffer(const char* functionName, |
+ const MaybeShared<TypedArray>& v) { |
+ // TODO(binji): Disallow for now. |
+ if (v.isShared()) { |
+ synthesizeGLError(GL_INVALID_VALUE, functionName, |
+ "array is backed by SharedArrayBuffer."); |
+ return false; |
+ } |
+ return true; |
+ } |
+ |
// Helper function to validate the target for bufferData and |
// getBufferParameter. |
virtual bool validateBufferTarget(const char* functionName, GLenum target); |