Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h

Issue 2707243006: [SharedArrayBuffer] Prevent SharedArrayBuffer being used in Web APIs (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #ifndef WebGLRenderingContextBase_h 26 #ifndef WebGLRenderingContextBase_h
27 #define WebGLRenderingContextBase_h 27 #define WebGLRenderingContextBase_h
28 28
29 #include <memory>
30 #include <set>
29 #include "bindings/core/v8/Nullable.h" 31 #include "bindings/core/v8/Nullable.h"
30 #include "bindings/core/v8/ScriptState.h" 32 #include "bindings/core/v8/ScriptState.h"
31 #include "bindings/core/v8/ScriptValue.h" 33 #include "bindings/core/v8/ScriptValue.h"
32 #include "bindings/core/v8/ScriptWrappable.h" 34 #include "bindings/core/v8/ScriptWrappable.h"
33 #include "bindings/core/v8/ScriptWrappableVisitor.h" 35 #include "bindings/core/v8/ScriptWrappableVisitor.h"
34 #include "core/CoreExport.h" 36 #include "core/CoreExport.h"
35 #include "core/dom/DOMTypedArray.h" 37 #include "core/dom/DOMTypedArray.h"
38 #include "core/dom/MaybeShared.h"
36 #include "core/dom/TypedFlexibleArrayBufferView.h" 39 #include "core/dom/TypedFlexibleArrayBufferView.h"
37 #include "core/html/canvas/CanvasContextCreationAttributes.h" 40 #include "core/html/canvas/CanvasContextCreationAttributes.h"
38 #include "core/html/canvas/CanvasRenderingContext.h" 41 #include "core/html/canvas/CanvasRenderingContext.h"
39 #include "core/layout/ContentChangeType.h" 42 #include "core/layout/ContentChangeType.h"
40 #include "modules/webgl/WebGLContextAttributes.h" 43 #include "modules/webgl/WebGLContextAttributes.h"
41 #include "modules/webgl/WebGLExtensionName.h" 44 #include "modules/webgl/WebGLExtensionName.h"
42 #include "modules/webgl/WebGLTexture.h" 45 #include "modules/webgl/WebGLTexture.h"
43 #include "modules/webgl/WebGLVertexArrayObjectBase.h" 46 #include "modules/webgl/WebGLVertexArrayObjectBase.h"
44 #include "platform/Timer.h" 47 #include "platform/Timer.h"
45 #include "platform/graphics/ImageBuffer.h" 48 #include "platform/graphics/ImageBuffer.h"
46 #include "platform/graphics/gpu/DrawingBuffer.h" 49 #include "platform/graphics/gpu/DrawingBuffer.h"
47 #include "platform/graphics/gpu/Extensions3DUtil.h" 50 #include "platform/graphics/gpu/Extensions3DUtil.h"
48 #include "platform/graphics/gpu/WebGLImageConversion.h" 51 #include "platform/graphics/gpu/WebGLImageConversion.h"
49 #include "public/platform/Platform.h" 52 #include "public/platform/Platform.h"
50 #include "public/platform/WebGraphicsContext3DProvider.h" 53 #include "public/platform/WebGraphicsContext3DProvider.h"
51 #include "third_party/khronos/GLES2/gl2.h" 54 #include "third_party/khronos/GLES2/gl2.h"
52 #include "wtf/CheckedNumeric.h" 55 #include "wtf/CheckedNumeric.h"
53 #include "wtf/text/WTFString.h" 56 #include "wtf/text/WTFString.h"
54 #include <memory>
55 #include <set>
56 57
57 namespace blink { 58 namespace blink {
58 class WebLayer; 59 class WebLayer;
59 } 60 }
60 61
61 namespace gpu { 62 namespace gpu {
62 namespace gles2 { 63 namespace gles2 {
63 class GLES2Interface; 64 class GLES2Interface;
64 } 65 }
65 } 66 }
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 void uniform4fv(const WebGLUniformLocation*, Vector<GLfloat>&); 461 void uniform4fv(const WebGLUniformLocation*, Vector<GLfloat>&);
461 void uniform4i(const WebGLUniformLocation*, 462 void uniform4i(const WebGLUniformLocation*,
462 GLint x, 463 GLint x,
463 GLint y, 464 GLint y,
464 GLint z, 465 GLint z,
465 GLint w); 466 GLint w);
466 void uniform4iv(const WebGLUniformLocation*, const FlexibleInt32ArrayView&); 467 void uniform4iv(const WebGLUniformLocation*, const FlexibleInt32ArrayView&);
467 void uniform4iv(const WebGLUniformLocation*, Vector<GLint>&); 468 void uniform4iv(const WebGLUniformLocation*, Vector<GLint>&);
468 void uniformMatrix2fv(const WebGLUniformLocation*, 469 void uniformMatrix2fv(const WebGLUniformLocation*,
469 GLboolean transpose, 470 GLboolean transpose,
470 DOMFloat32Array* value); 471 const MaybeShared<DOMFloat32Array>& value);
471 void uniformMatrix2fv(const WebGLUniformLocation*, 472 void uniformMatrix2fv(const WebGLUniformLocation*,
472 GLboolean transpose, 473 GLboolean transpose,
473 Vector<GLfloat>& value); 474 Vector<GLfloat>& value);
474 void uniformMatrix3fv(const WebGLUniformLocation*, 475 void uniformMatrix3fv(const WebGLUniformLocation*,
475 GLboolean transpose, 476 GLboolean transpose,
476 DOMFloat32Array* value); 477 const MaybeShared<DOMFloat32Array>& value);
477 void uniformMatrix3fv(const WebGLUniformLocation*, 478 void uniformMatrix3fv(const WebGLUniformLocation*,
478 GLboolean transpose, 479 GLboolean transpose,
479 Vector<GLfloat>& value); 480 Vector<GLfloat>& value);
480 void uniformMatrix4fv(const WebGLUniformLocation*, 481 void uniformMatrix4fv(const WebGLUniformLocation*,
481 GLboolean transpose, 482 GLboolean transpose,
482 DOMFloat32Array* value); 483 const MaybeShared<DOMFloat32Array>& value);
483 void uniformMatrix4fv(const WebGLUniformLocation*, 484 void uniformMatrix4fv(const WebGLUniformLocation*,
484 GLboolean transpose, 485 GLboolean transpose,
485 Vector<GLfloat>& value); 486 Vector<GLfloat>& value);
486 487
487 void useProgram(WebGLProgram*); 488 void useProgram(WebGLProgram*);
488 void validateProgram(WebGLProgram*); 489 void validateProgram(WebGLProgram*);
489 490
490 void vertexAttrib1f(GLuint index, GLfloat x); 491 void vertexAttrib1f(GLuint index, GLfloat x);
491 void vertexAttrib1fv(GLuint index, const DOMFloat32Array* values); 492 void vertexAttrib1fv(GLuint index,
493 const MaybeShared<const DOMFloat32Array>& values);
492 void vertexAttrib1fv(GLuint index, const Vector<GLfloat>& values); 494 void vertexAttrib1fv(GLuint index, const Vector<GLfloat>& values);
493 void vertexAttrib2f(GLuint index, GLfloat x, GLfloat y); 495 void vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
494 void vertexAttrib2fv(GLuint index, const DOMFloat32Array* values); 496 void vertexAttrib2fv(GLuint index,
497 const MaybeShared<const DOMFloat32Array>& values);
495 void vertexAttrib2fv(GLuint index, const Vector<GLfloat>& values); 498 void vertexAttrib2fv(GLuint index, const Vector<GLfloat>& values);
496 void vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); 499 void vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
497 void vertexAttrib3fv(GLuint index, const DOMFloat32Array* values); 500 void vertexAttrib3fv(GLuint index,
501 const MaybeShared<const DOMFloat32Array>& values);
498 void vertexAttrib3fv(GLuint index, const Vector<GLfloat>& values); 502 void vertexAttrib3fv(GLuint index, const Vector<GLfloat>& values);
499 void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 503 void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
500 void vertexAttrib4fv(GLuint index, const DOMFloat32Array* values); 504 void vertexAttrib4fv(GLuint index,
505 const MaybeShared<const DOMFloat32Array>& values);
501 void vertexAttrib4fv(GLuint index, const Vector<GLfloat>& values); 506 void vertexAttrib4fv(GLuint index, const Vector<GLfloat>& values);
502 void vertexAttribPointer(GLuint index, 507 void vertexAttribPointer(GLuint index,
503 GLint size, 508 GLint size,
504 GLenum type, 509 GLenum type,
505 GLboolean normalized, 510 GLboolean normalized,
506 GLsizei stride, 511 GLsizei stride,
507 long long offset); 512 long long offset);
508 513
509 void vertexAttribDivisorANGLE(GLuint index, GLuint divisor); 514 void vertexAttribDivisorANGLE(GLuint index, GLuint divisor);
510 515
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after
1351 bool validateUniformParameters(const char* functionName, 1356 bool validateUniformParameters(const char* functionName,
1352 const WebGLUniformLocation*, 1357 const WebGLUniformLocation*,
1353 void*, 1358 void*,
1354 GLsizei, 1359 GLsizei,
1355 GLsizei mod, 1360 GLsizei mod,
1356 GLuint srcOffset, 1361 GLuint srcOffset,
1357 GLuint srcLength); 1362 GLuint srcLength);
1358 bool validateUniformMatrixParameters(const char* functionName, 1363 bool validateUniformMatrixParameters(const char* functionName,
1359 const WebGLUniformLocation*, 1364 const WebGLUniformLocation*,
1360 GLboolean transpose, 1365 GLboolean transpose,
1361 DOMFloat32Array*, 1366 const MaybeShared<DOMFloat32Array>&,
1362 GLsizei mod, 1367 GLsizei mod,
1363 GLuint srcOffset, 1368 GLuint srcOffset,
1364 GLuint srcLength); 1369 GLuint srcLength);
1365 bool validateUniformMatrixParameters(const char* functionName, 1370 bool validateUniformMatrixParameters(const char* functionName,
1366 const WebGLUniformLocation*, 1371 const WebGLUniformLocation*,
1367 GLboolean transpose, 1372 GLboolean transpose,
1368 void*, 1373 void*,
1369 GLsizei, 1374 GLsizei,
1370 GLsizei mod, 1375 GLsizei mod,
1371 GLuint srcOffset, 1376 GLuint srcOffset,
1372 GLuint srcLength); 1377 GLuint srcLength);
1373 1378
1374 template <typename WTFTypedArray> 1379 template <typename WTFTypedArray>
1375 bool validateUniformParameters( 1380 bool validateUniformParameters(
1376 const char* functionName, 1381 const char* functionName,
1377 const WebGLUniformLocation* location, 1382 const WebGLUniformLocation* location,
1378 const TypedFlexibleArrayBufferView<WTFTypedArray>& v, 1383 const TypedFlexibleArrayBufferView<WTFTypedArray>& v,
1379 GLsizei requiredMinSize, 1384 GLsizei requiredMinSize,
1380 GLuint srcOffset, 1385 GLuint srcOffset,
1381 GLuint srcLength) { 1386 GLuint srcLength) {
1382 if (!v.dataMaybeOnStack()) { 1387 if (!v.dataMaybeOnStack()) {
1383 synthesizeGLError(GL_INVALID_VALUE, functionName, "no array"); 1388 synthesizeGLError(GL_INVALID_VALUE, functionName, "no array");
1384 return false; 1389 return false;
1385 } 1390 }
1386 return validateUniformMatrixParameters( 1391 return validateUniformMatrixParameters(
1387 functionName, location, false, v.dataMaybeOnStack(), v.length(), 1392 functionName, location, false, v.dataMaybeOnStack(), v.length(),
1388 requiredMinSize, srcOffset, srcLength); 1393 requiredMinSize, srcOffset, srcLength);
1389 } 1394 }
1390 1395
1396 template <typename TypedArray>
1397 bool validateNotSharedArrayBuffer(const char* functionName,
1398 const MaybeShared<TypedArray>& v) {
1399 // TODO(binji): Disallow for now.
1400 if (v.isShared()) {
1401 synthesizeGLError(GL_INVALID_VALUE, functionName,
1402 "array is backed by SharedArrayBuffer.");
1403 return false;
1404 }
1405 return true;
1406 }
1407
1391 // Helper function to validate the target for bufferData and 1408 // Helper function to validate the target for bufferData and
1392 // getBufferParameter. 1409 // getBufferParameter.
1393 virtual bool validateBufferTarget(const char* functionName, GLenum target); 1410 virtual bool validateBufferTarget(const char* functionName, GLenum target);
1394 1411
1395 // Helper function to validate the target for bufferData. 1412 // Helper function to validate the target for bufferData.
1396 // Return the current bound buffer to target, or 0 if the target is invalid. 1413 // Return the current bound buffer to target, or 0 if the target is invalid.
1397 virtual WebGLBuffer* validateBufferDataTarget(const char* functionName, 1414 virtual WebGLBuffer* validateBufferDataTarget(const char* functionName,
1398 GLenum target); 1415 GLenum target);
1399 // Helper function to validate the usage for bufferData. 1416 // Helper function to validate the usage for bufferData.
1400 virtual bool validateBufferDataUsage(const char* functionName, GLenum usage); 1417 virtual bool validateBufferDataUsage(const char* functionName, GLenum usage);
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 context, 1678 context,
1662 context->is3d(), 1679 context->is3d(),
1663 context.is3d()); 1680 context.is3d());
1664 1681
1665 } // namespace blink 1682 } // namespace blink
1666 1683
1667 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS( 1684 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(
1668 blink::WebGLRenderingContextBase::TextureUnitState); 1685 blink::WebGLRenderingContextBase::TextureUnitState);
1669 1686
1670 #endif // WebGLRenderingContextBase_h 1687 #endif // WebGLRenderingContextBase_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698