| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 }; | 284 }; |
| 285 | 285 |
| 286 static void getObjectParameter(const v8::FunctionCallbackInfo<v8::Value>& info,
ObjectType objectType, ExceptionState& exceptionState) | 286 static void getObjectParameter(const v8::FunctionCallbackInfo<v8::Value>& info,
ObjectType objectType, ExceptionState& exceptionState) |
| 287 { | 287 { |
| 288 if (info.Length() != 2) { | 288 if (info.Length() != 2) { |
| 289 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); | 289 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); |
| 290 exceptionState.throwIfNeeded(); | 290 exceptionState.throwIfNeeded(); |
| 291 return; | 291 return; |
| 292 } | 292 } |
| 293 | 293 |
| 294 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 294 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 295 unsigned target; | 295 unsigned target; |
| 296 unsigned pname; | 296 unsigned pname; |
| 297 { | 297 { |
| 298 v8::TryCatch block; | 298 v8::TryCatch block; |
| 299 V8RethrowTryCatchScope rethrow(block); | 299 V8RethrowTryCatchScope rethrow(block); |
| 300 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(target, toUInt32(info[0], exceptio
nState), exceptionState); | 300 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(target, toUInt32(info[0], exceptio
nState), exceptionState); |
| 301 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[1], exception
State), exceptionState); | 301 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[1], exception
State), exceptionState); |
| 302 } | 302 } |
| 303 WebGLGetInfo args; | 303 WebGLGetInfo args; |
| 304 switch (objectType) { | 304 switch (objectType) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 317 break; | 317 break; |
| 318 default: | 318 default: |
| 319 notImplemented(); | 319 notImplemented(); |
| 320 break; | 320 break; |
| 321 } | 321 } |
| 322 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); | 322 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); |
| 323 } | 323 } |
| 324 | 324 |
| 325 static WebGLUniformLocation* toWebGLUniformLocation(v8::Handle<v8::Value> value,
v8::Isolate* isolate) | 325 static WebGLUniformLocation* toWebGLUniformLocation(v8::Handle<v8::Value> value,
v8::Isolate* isolate) |
| 326 { | 326 { |
| 327 return V8WebGLUniformLocation::toNativeWithTypeCheck(isolate, value); | 327 return V8WebGLUniformLocation::toImplWithTypeCheck(isolate, value); |
| 328 } | 328 } |
| 329 | 329 |
| 330 void V8WebGLRenderingContext::getBufferParameterMethodCustom(const v8::FunctionC
allbackInfo<v8::Value>& info) | 330 void V8WebGLRenderingContext::getBufferParameterMethodCustom(const v8::FunctionC
allbackInfo<v8::Value>& info) |
| 331 { | 331 { |
| 332 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getBufferPa
rameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 332 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getBufferPa
rameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 333 getObjectParameter(info, kBuffer, exceptionState); | 333 getObjectParameter(info, kBuffer, exceptionState); |
| 334 } | 334 } |
| 335 | 335 |
| 336 void V8WebGLRenderingContext::getExtensionMethodCustom(const v8::FunctionCallbac
kInfo<v8::Value>& info) | 336 void V8WebGLRenderingContext::getExtensionMethodCustom(const v8::FunctionCallbac
kInfo<v8::Value>& info) |
| 337 { | 337 { |
| 338 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getExtensio
n", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 338 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getExtensio
n", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 339 WebGLRenderingContext* impl = V8WebGLRenderingContext::toNative(info.Holder(
)); | 339 WebGLRenderingContext* impl = V8WebGLRenderingContext::toImpl(info.Holder())
; |
| 340 if (info.Length() < 1) { | 340 if (info.Length() < 1) { |
| 341 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, i
nfo.Length())); | 341 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, i
nfo.Length())); |
| 342 exceptionState.throwIfNeeded(); | 342 exceptionState.throwIfNeeded(); |
| 343 return; | 343 return; |
| 344 } | 344 } |
| 345 TOSTRING_VOID(V8StringResource<>, name, info[0]); | 345 TOSTRING_VOID(V8StringResource<>, name, info[0]); |
| 346 RefPtrWillBeRawPtr<WebGLExtension> extension(impl->getExtension(name)); | 346 RefPtrWillBeRawPtr<WebGLExtension> extension(impl->getExtension(name)); |
| 347 v8SetReturnValue(info, toV8Object(extension.get(), info.Holder(), info.GetIs
olate())); | 347 v8SetReturnValue(info, toV8Object(extension.get(), info.Holder(), info.GetIs
olate())); |
| 348 } | 348 } |
| 349 | 349 |
| 350 void V8WebGLRenderingContext::getFramebufferAttachmentParameterMethodCustom(cons
t v8::FunctionCallbackInfo<v8::Value>& info) | 350 void V8WebGLRenderingContext::getFramebufferAttachmentParameterMethodCustom(cons
t v8::FunctionCallbackInfo<v8::Value>& info) |
| 351 { | 351 { |
| 352 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getFramebuf
ferAttachmentParameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate
()); | 352 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getFramebuf
ferAttachmentParameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate
()); |
| 353 if (info.Length() != 3) { | 353 if (info.Length() != 3) { |
| 354 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(3, i
nfo.Length())); | 354 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(3, i
nfo.Length())); |
| 355 exceptionState.throwIfNeeded(); | 355 exceptionState.throwIfNeeded(); |
| 356 return; | 356 return; |
| 357 } | 357 } |
| 358 | 358 |
| 359 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 359 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 360 unsigned target; | 360 unsigned target; |
| 361 unsigned attachment; | 361 unsigned attachment; |
| 362 unsigned pname; | 362 unsigned pname; |
| 363 { | 363 { |
| 364 v8::TryCatch block; | 364 v8::TryCatch block; |
| 365 V8RethrowTryCatchScope rethrow(block); | 365 V8RethrowTryCatchScope rethrow(block); |
| 366 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(target, toUInt32(info[0], exceptio
nState), exceptionState); | 366 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(target, toUInt32(info[0], exceptio
nState), exceptionState); |
| 367 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(attachment, toUInt32(info[1], exce
ptionState), exceptionState); | 367 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(attachment, toUInt32(info[1], exce
ptionState), exceptionState); |
| 368 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[2], exception
State), exceptionState); | 368 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[2], exception
State), exceptionState); |
| 369 } | 369 } |
| 370 WebGLGetInfo args = context->getFramebufferAttachmentParameter(target, attac
hment, pname); | 370 WebGLGetInfo args = context->getFramebufferAttachmentParameter(target, attac
hment, pname); |
| 371 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); | 371 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); |
| 372 } | 372 } |
| 373 | 373 |
| 374 void V8WebGLRenderingContext::getParameterMethodCustom(const v8::FunctionCallbac
kInfo<v8::Value>& info) | 374 void V8WebGLRenderingContext::getParameterMethodCustom(const v8::FunctionCallbac
kInfo<v8::Value>& info) |
| 375 { | 375 { |
| 376 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getParamete
r", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 376 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getParamete
r", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 377 if (info.Length() != 1) { | 377 if (info.Length() != 1) { |
| 378 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, i
nfo.Length())); | 378 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, i
nfo.Length())); |
| 379 exceptionState.throwIfNeeded(); | 379 exceptionState.throwIfNeeded(); |
| 380 return; | 380 return; |
| 381 } | 381 } |
| 382 | 382 |
| 383 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 383 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 384 unsigned pname; | 384 unsigned pname; |
| 385 { | 385 { |
| 386 v8::TryCatch block; | 386 v8::TryCatch block; |
| 387 V8RethrowTryCatchScope rethrow(block); | 387 V8RethrowTryCatchScope rethrow(block); |
| 388 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[0], exception
State), exceptionState); | 388 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[0], exception
State), exceptionState); |
| 389 } | 389 } |
| 390 WebGLGetInfo args = context->getParameter(pname); | 390 WebGLGetInfo args = context->getParameter(pname); |
| 391 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); | 391 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); |
| 392 } | 392 } |
| 393 | 393 |
| 394 void V8WebGLRenderingContext::getProgramParameterMethodCustom(const v8::Function
CallbackInfo<v8::Value>& info) | 394 void V8WebGLRenderingContext::getProgramParameterMethodCustom(const v8::Function
CallbackInfo<v8::Value>& info) |
| 395 { | 395 { |
| 396 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getProgramP
arameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 396 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getProgramP
arameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 397 if (info.Length() != 2) { | 397 if (info.Length() != 2) { |
| 398 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); | 398 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); |
| 399 exceptionState.throwIfNeeded(); | 399 exceptionState.throwIfNeeded(); |
| 400 return; | 400 return; |
| 401 } | 401 } |
| 402 | 402 |
| 403 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 403 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 404 WebGLProgram* program; | 404 WebGLProgram* program; |
| 405 unsigned pname; | 405 unsigned pname; |
| 406 { | 406 { |
| 407 v8::TryCatch block; | 407 v8::TryCatch block; |
| 408 V8RethrowTryCatchScope rethrow(block); | 408 V8RethrowTryCatchScope rethrow(block); |
| 409 if (info.Length() > 0 && !isUndefinedOrNull(info[0]) && !V8WebGLProgram:
:hasInstance(info[0], info.GetIsolate())) { | 409 if (info.Length() > 0 && !isUndefinedOrNull(info[0]) && !V8WebGLProgram:
:hasInstance(info[0], info.GetIsolate())) { |
| 410 exceptionState.throwTypeError("parameter 1 is not of type 'WebGLProg
ram'."); | 410 exceptionState.throwTypeError("parameter 1 is not of type 'WebGLProg
ram'."); |
| 411 exceptionState.throwIfNeeded(); | 411 exceptionState.throwIfNeeded(); |
| 412 return; | 412 return; |
| 413 } | 413 } |
| 414 TONATIVE_VOID_INTERNAL(program, V8WebGLProgram::toNativeWithTypeCheck(in
fo.GetIsolate(), info[0])); | 414 TONATIVE_VOID_INTERNAL(program, V8WebGLProgram::toImplWithTypeCheck(info
.GetIsolate(), info[0])); |
| 415 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[1], exception
State), exceptionState); | 415 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[1], exception
State), exceptionState); |
| 416 } | 416 } |
| 417 WebGLGetInfo args = context->getProgramParameter(program, pname); | 417 WebGLGetInfo args = context->getProgramParameter(program, pname); |
| 418 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); | 418 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); |
| 419 } | 419 } |
| 420 | 420 |
| 421 void V8WebGLRenderingContext::getRenderbufferParameterMethodCustom(const v8::Fun
ctionCallbackInfo<v8::Value>& info) | 421 void V8WebGLRenderingContext::getRenderbufferParameterMethodCustom(const v8::Fun
ctionCallbackInfo<v8::Value>& info) |
| 422 { | 422 { |
| 423 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getRenderbu
fferParameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 423 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getRenderbu
fferParameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 424 getObjectParameter(info, kRenderbuffer, exceptionState); | 424 getObjectParameter(info, kRenderbuffer, exceptionState); |
| 425 } | 425 } |
| 426 | 426 |
| 427 void V8WebGLRenderingContext::getShaderParameterMethodCustom(const v8::FunctionC
allbackInfo<v8::Value>& info) | 427 void V8WebGLRenderingContext::getShaderParameterMethodCustom(const v8::FunctionC
allbackInfo<v8::Value>& info) |
| 428 { | 428 { |
| 429 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getShaderPa
rameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 429 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getShaderPa
rameter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 430 if (info.Length() != 2) { | 430 if (info.Length() != 2) { |
| 431 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); | 431 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); |
| 432 exceptionState.throwIfNeeded(); | 432 exceptionState.throwIfNeeded(); |
| 433 return; | 433 return; |
| 434 } | 434 } |
| 435 | 435 |
| 436 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 436 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 437 WebGLShader* shader; | 437 WebGLShader* shader; |
| 438 unsigned pname; | 438 unsigned pname; |
| 439 { | 439 { |
| 440 v8::TryCatch block; | 440 v8::TryCatch block; |
| 441 V8RethrowTryCatchScope rethrow(block); | 441 V8RethrowTryCatchScope rethrow(block); |
| 442 if (info.Length() > 0 && !isUndefinedOrNull(info[0]) && !V8WebGLShader::
hasInstance(info[0], info.GetIsolate())) { | 442 if (info.Length() > 0 && !isUndefinedOrNull(info[0]) && !V8WebGLShader::
hasInstance(info[0], info.GetIsolate())) { |
| 443 exceptionState.throwTypeError("parameter 1 is not of type 'WebGLShad
er'."); | 443 exceptionState.throwTypeError("parameter 1 is not of type 'WebGLShad
er'."); |
| 444 exceptionState.throwIfNeeded(); | 444 exceptionState.throwIfNeeded(); |
| 445 return; | 445 return; |
| 446 } | 446 } |
| 447 TONATIVE_VOID_INTERNAL(shader, V8WebGLShader::toNativeWithTypeCheck(info
.GetIsolate(), info[0])); | 447 TONATIVE_VOID_INTERNAL(shader, V8WebGLShader::toImplWithTypeCheck(info.G
etIsolate(), info[0])); |
| 448 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[1], exception
State), exceptionState); | 448 TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(pname, toUInt32(info[1], exception
State), exceptionState); |
| 449 } | 449 } |
| 450 WebGLGetInfo args = context->getShaderParameter(shader, pname); | 450 WebGLGetInfo args = context->getShaderParameter(shader, pname); |
| 451 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); | 451 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); |
| 452 } | 452 } |
| 453 | 453 |
| 454 void V8WebGLRenderingContext::getTexParameterMethodCustom(const v8::FunctionCall
backInfo<v8::Value>& info) | 454 void V8WebGLRenderingContext::getTexParameterMethodCustom(const v8::FunctionCall
backInfo<v8::Value>& info) |
| 455 { | 455 { |
| 456 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getTexParam
eter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 456 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getTexParam
eter", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 457 getObjectParameter(info, kTexture, exceptionState); | 457 getObjectParameter(info, kTexture, exceptionState); |
| 458 } | 458 } |
| 459 | 459 |
| 460 void V8WebGLRenderingContext::getUniformMethodCustom(const v8::FunctionCallbackI
nfo<v8::Value>& info) | 460 void V8WebGLRenderingContext::getUniformMethodCustom(const v8::FunctionCallbackI
nfo<v8::Value>& info) |
| 461 { | 461 { |
| 462 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getUniform"
, "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 462 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getUniform"
, "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 463 if (info.Length() != 2) { | 463 if (info.Length() != 2) { |
| 464 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); | 464 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); |
| 465 exceptionState.throwIfNeeded(); | 465 exceptionState.throwIfNeeded(); |
| 466 return; | 466 return; |
| 467 } | 467 } |
| 468 | 468 |
| 469 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 469 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 470 WebGLProgram* program; | 470 WebGLProgram* program; |
| 471 WebGLUniformLocation* location; | 471 WebGLUniformLocation* location; |
| 472 { | 472 { |
| 473 v8::TryCatch block; | 473 v8::TryCatch block; |
| 474 V8RethrowTryCatchScope rethrow(block); | 474 V8RethrowTryCatchScope rethrow(block); |
| 475 if (info.Length() > 0 && !isUndefinedOrNull(info[0]) && !V8WebGLProgram:
:hasInstance(info[0], info.GetIsolate())) { | 475 if (info.Length() > 0 && !isUndefinedOrNull(info[0]) && !V8WebGLProgram:
:hasInstance(info[0], info.GetIsolate())) { |
| 476 V8ThrowException::throwTypeError(ExceptionMessages::failedToExecute(
"getUniform", "WebGLRenderingContext", "parameter 1 is not of type 'WebGLProgram
'."), info.GetIsolate()); | 476 V8ThrowException::throwTypeError(ExceptionMessages::failedToExecute(
"getUniform", "WebGLRenderingContext", "parameter 1 is not of type 'WebGLProgram
'."), info.GetIsolate()); |
| 477 return; | 477 return; |
| 478 } | 478 } |
| 479 TONATIVE_VOID_INTERNAL(program, V8WebGLProgram::toNativeWithTypeCheck(in
fo.GetIsolate(), info[0])); | 479 TONATIVE_VOID_INTERNAL(program, V8WebGLProgram::toImplWithTypeCheck(info
.GetIsolate(), info[0])); |
| 480 if (info.Length() > 1 && !isUndefinedOrNull(info[1]) && !V8WebGLUniformL
ocation::hasInstance(info[1], info.GetIsolate())) { | 480 if (info.Length() > 1 && !isUndefinedOrNull(info[1]) && !V8WebGLUniformL
ocation::hasInstance(info[1], info.GetIsolate())) { |
| 481 V8ThrowException::throwTypeError(ExceptionMessages::failedToExecute(
"getUniform", "WebGLRenderingContext", "parameter 2 is not of type 'WebGLUniform
Location'."), info.GetIsolate()); | 481 V8ThrowException::throwTypeError(ExceptionMessages::failedToExecute(
"getUniform", "WebGLRenderingContext", "parameter 2 is not of type 'WebGLUniform
Location'."), info.GetIsolate()); |
| 482 return; | 482 return; |
| 483 } | 483 } |
| 484 TONATIVE_VOID_INTERNAL(location, V8WebGLUniformLocation::toNativeWithTyp
eCheck(info.GetIsolate(), info[1])); | 484 TONATIVE_VOID_INTERNAL(location, V8WebGLUniformLocation::toImplWithTypeC
heck(info.GetIsolate(), info[1])); |
| 485 } | 485 } |
| 486 WebGLGetInfo args = context->getUniform(program, location); | 486 WebGLGetInfo args = context->getUniform(program, location); |
| 487 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); | 487 v8SetReturnValue(info, toV8Object(args, info.Holder(), info.GetIsolate())); |
| 488 } | 488 } |
| 489 | 489 |
| 490 void V8WebGLRenderingContext::getVertexAttribMethodCustom(const v8::FunctionCall
backInfo<v8::Value>& info) | 490 void V8WebGLRenderingContext::getVertexAttribMethodCustom(const v8::FunctionCall
backInfo<v8::Value>& info) |
| 491 { | 491 { |
| 492 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getVertexAt
trib", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 492 ExceptionState exceptionState(ExceptionState::ExecutionContext, "getVertexAt
trib", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 493 getObjectParameter(info, kVertexAttrib, exceptionState); | 493 getObjectParameter(info, kVertexAttrib, exceptionState); |
| 494 } | 494 } |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 } else { | 548 } else { |
| 549 const int uniformLocationArgumentIndex = 0; | 549 const int uniformLocationArgumentIndex = 0; |
| 550 if (info.Length() > 0 && !isUndefinedOrNull(info[uniformLocationArgument
Index]) && !V8WebGLUniformLocation::hasInstance(info[uniformLocationArgumentInde
x], info.GetIsolate())) { | 550 if (info.Length() > 0 && !isUndefinedOrNull(info[uniformLocationArgument
Index]) && !V8WebGLUniformLocation::hasInstance(info[uniformLocationArgumentInde
x], info.GetIsolate())) { |
| 551 exceptionState.throwTypeError(ExceptionMessages::argumentNullOrIncor
rectType(uniformLocationArgumentIndex + 1, "WebGLUniformLocation")); | 551 exceptionState.throwTypeError(ExceptionMessages::argumentNullOrIncor
rectType(uniformLocationArgumentIndex + 1, "WebGLUniformLocation")); |
| 552 exceptionState.throwIfNeeded(); | 552 exceptionState.throwIfNeeded(); |
| 553 return; | 553 return; |
| 554 } | 554 } |
| 555 location = toWebGLUniformLocation(info[uniformLocationArgumentIndex], in
fo.GetIsolate()); | 555 location = toWebGLUniformLocation(info[uniformLocationArgumentIndex], in
fo.GetIsolate()); |
| 556 } | 556 } |
| 557 | 557 |
| 558 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 558 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 559 | 559 |
| 560 const int indexArrayArgument = 1; | 560 const int indexArrayArgument = 1; |
| 561 if (V8Float32Array::hasInstance(info[indexArrayArgument], info.GetIsolate())
) { | 561 if (V8Float32Array::hasInstance(info[indexArrayArgument], info.GetIsolate())
) { |
| 562 Float32Array* array = V8Float32Array::toNative(info[indexArrayArgument]-
>ToObject()); | 562 Float32Array* array = V8Float32Array::toImpl(info[indexArrayArgument]->T
oObject()); |
| 563 ASSERT(array); | 563 ASSERT(array); |
| 564 switch (functionToCall) { | 564 switch (functionToCall) { |
| 565 case kUniform1v: context->uniform1fv(location, array); break; | 565 case kUniform1v: context->uniform1fv(location, array); break; |
| 566 case kUniform2v: context->uniform2fv(location, array); break; | 566 case kUniform2v: context->uniform2fv(location, array); break; |
| 567 case kUniform3v: context->uniform3fv(location, array); break; | 567 case kUniform3v: context->uniform3fv(location, array); break; |
| 568 case kUniform4v: context->uniform4fv(location, array); break; | 568 case kUniform4v: context->uniform4fv(location, array); break; |
| 569 case kVertexAttrib1v: context->vertexAttrib1fv(index, array); break; | 569 case kVertexAttrib1v: context->vertexAttrib1fv(index, array); break; |
| 570 case kVertexAttrib2v: context->vertexAttrib2fv(index, array); break; | 570 case kVertexAttrib2v: context->vertexAttrib2fv(index, array); break; |
| 571 case kVertexAttrib3v: context->vertexAttrib3fv(index, array); break; | 571 case kVertexAttrib3v: context->vertexAttrib3fv(index, array); break; |
| 572 case kVertexAttrib4v: context->vertexAttrib4fv(index, array); break; | 572 case kVertexAttrib4v: context->vertexAttrib4fv(index, array); break; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 // * glUniform4iv(GLUniformLocation location, Array data); | 617 // * glUniform4iv(GLUniformLocation location, Array data); |
| 618 // * glUniform4iv(GLUniformLocation location, Int32Array data); | 618 // * glUniform4iv(GLUniformLocation location, Int32Array data); |
| 619 | 619 |
| 620 if (info.Length() != 2) { | 620 if (info.Length() != 2) { |
| 621 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); | 621 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, i
nfo.Length())); |
| 622 exceptionState.throwIfNeeded(); | 622 exceptionState.throwIfNeeded(); |
| 623 return; | 623 return; |
| 624 } | 624 } |
| 625 | 625 |
| 626 const int uniformLocationArgumentIndex = 0; | 626 const int uniformLocationArgumentIndex = 0; |
| 627 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 627 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 628 if (info.Length() > 0 && !isUndefinedOrNull(info[uniformLocationArgumentInde
x]) && !V8WebGLUniformLocation::hasInstance(info[uniformLocationArgumentIndex],
info.GetIsolate())) { | 628 if (info.Length() > 0 && !isUndefinedOrNull(info[uniformLocationArgumentInde
x]) && !V8WebGLUniformLocation::hasInstance(info[uniformLocationArgumentIndex],
info.GetIsolate())) { |
| 629 exceptionState.throwTypeError(ExceptionMessages::argumentNullOrIncorrect
Type(uniformLocationArgumentIndex + 1, "WebGLUniformLocation")); | 629 exceptionState.throwTypeError(ExceptionMessages::argumentNullOrIncorrect
Type(uniformLocationArgumentIndex + 1, "WebGLUniformLocation")); |
| 630 exceptionState.throwIfNeeded(); | 630 exceptionState.throwIfNeeded(); |
| 631 return; | 631 return; |
| 632 } | 632 } |
| 633 WebGLUniformLocation* location = toWebGLUniformLocation(info[uniformLocation
ArgumentIndex], info.GetIsolate()); | 633 WebGLUniformLocation* location = toWebGLUniformLocation(info[uniformLocation
ArgumentIndex], info.GetIsolate()); |
| 634 | 634 |
| 635 const int indexArrayArgumentIndex = 1; | 635 const int indexArrayArgumentIndex = 1; |
| 636 if (V8Int32Array::hasInstance(info[indexArrayArgumentIndex], info.GetIsolate
())) { | 636 if (V8Int32Array::hasInstance(info[indexArrayArgumentIndex], info.GetIsolate
())) { |
| 637 Int32Array* array = V8Int32Array::toNative(info[indexArrayArgumentIndex]
->ToObject()); | 637 Int32Array* array = V8Int32Array::toImpl(info[indexArrayArgumentIndex]->
ToObject()); |
| 638 ASSERT(array); | 638 ASSERT(array); |
| 639 switch (functionToCall) { | 639 switch (functionToCall) { |
| 640 case kUniform1v: context->uniform1iv(location, array); break; | 640 case kUniform1v: context->uniform1iv(location, array); break; |
| 641 case kUniform2v: context->uniform2iv(location, array); break; | 641 case kUniform2v: context->uniform2iv(location, array); break; |
| 642 case kUniform3v: context->uniform3iv(location, array); break; | 642 case kUniform3v: context->uniform3iv(location, array); break; |
| 643 case kUniform4v: context->uniform4iv(location, array); break; | 643 case kUniform4v: context->uniform4iv(location, array); break; |
| 644 default: ASSERT_NOT_REACHED(); break; | 644 default: ASSERT_NOT_REACHED(); break; |
| 645 } | 645 } |
| 646 return; | 646 return; |
| 647 } | 647 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 // * glUniformMatrix4fv(GLint location, GLboolean transpose, Array data); | 730 // * glUniformMatrix4fv(GLint location, GLboolean transpose, Array data); |
| 731 // * glUniformMatrix4fv(GLint location, GLboolean transpose, Float32Array da
ta); | 731 // * glUniformMatrix4fv(GLint location, GLboolean transpose, Float32Array da
ta); |
| 732 // | 732 // |
| 733 // FIXME: need to change to accept Float32Array as well. | 733 // FIXME: need to change to accept Float32Array as well. |
| 734 if (info.Length() != 3) { | 734 if (info.Length() != 3) { |
| 735 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(3, i
nfo.Length())); | 735 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(3, i
nfo.Length())); |
| 736 exceptionState.throwIfNeeded(); | 736 exceptionState.throwIfNeeded(); |
| 737 return; | 737 return; |
| 738 } | 738 } |
| 739 | 739 |
| 740 WebGLRenderingContext* context = V8WebGLRenderingContext::toNative(info.Hold
er()); | 740 WebGLRenderingContext* context = V8WebGLRenderingContext::toImpl(info.Holder
()); |
| 741 | 741 |
| 742 const int uniformLocationArgumentIndex = 0; | 742 const int uniformLocationArgumentIndex = 0; |
| 743 if (info.Length() > 0 && !isUndefinedOrNull(info[uniformLocationArgumentInde
x]) && !V8WebGLUniformLocation::hasInstance(info[uniformLocationArgumentIndex],
info.GetIsolate())) { | 743 if (info.Length() > 0 && !isUndefinedOrNull(info[uniformLocationArgumentInde
x]) && !V8WebGLUniformLocation::hasInstance(info[uniformLocationArgumentIndex],
info.GetIsolate())) { |
| 744 exceptionState.throwTypeError(ExceptionMessages::argumentNullOrIncorrect
Type(uniformLocationArgumentIndex + 1, "WebGLUniformLocation")); | 744 exceptionState.throwTypeError(ExceptionMessages::argumentNullOrIncorrect
Type(uniformLocationArgumentIndex + 1, "WebGLUniformLocation")); |
| 745 exceptionState.throwIfNeeded(); | 745 exceptionState.throwIfNeeded(); |
| 746 return; | 746 return; |
| 747 } | 747 } |
| 748 WebGLUniformLocation* location = toWebGLUniformLocation(info[uniformLocation
ArgumentIndex], info.GetIsolate()); | 748 WebGLUniformLocation* location = toWebGLUniformLocation(info[uniformLocation
ArgumentIndex], info.GetIsolate()); |
| 749 | 749 |
| 750 bool transpose = info[1]->BooleanValue(); | 750 bool transpose = info[1]->BooleanValue(); |
| 751 const int arrayArgumentIndex = 2; | 751 const int arrayArgumentIndex = 2; |
| 752 if (V8Float32Array::hasInstance(info[arrayArgumentIndex], info.GetIsolate())
) { | 752 if (V8Float32Array::hasInstance(info[arrayArgumentIndex], info.GetIsolate())
) { |
| 753 Float32Array* array = V8Float32Array::toNative(info[arrayArgumentIndex]-
>ToObject()); | 753 Float32Array* array = V8Float32Array::toImpl(info[arrayArgumentIndex]->T
oObject()); |
| 754 ASSERT(array); | 754 ASSERT(array); |
| 755 switch (matrixSize) { | 755 switch (matrixSize) { |
| 756 case 2: context->uniformMatrix2fv(location, transpose, array); break; | 756 case 2: context->uniformMatrix2fv(location, transpose, array); break; |
| 757 case 3: context->uniformMatrix3fv(location, transpose, array); break; | 757 case 3: context->uniformMatrix3fv(location, transpose, array); break; |
| 758 case 4: context->uniformMatrix4fv(location, transpose, array); break; | 758 case 4: context->uniformMatrix4fv(location, transpose, array); break; |
| 759 default: ASSERT_NOT_REACHED(); break; | 759 default: ASSERT_NOT_REACHED(); break; |
| 760 } | 760 } |
| 761 return; | 761 return; |
| 762 } | 762 } |
| 763 | 763 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 822 vertexAttribAndUniformHelperf(info, kVertexAttrib3v, exceptionState); | 822 vertexAttribAndUniformHelperf(info, kVertexAttrib3v, exceptionState); |
| 823 } | 823 } |
| 824 | 824 |
| 825 void V8WebGLRenderingContext::vertexAttrib4fvMethodCustom(const v8::FunctionCall
backInfo<v8::Value>& info) | 825 void V8WebGLRenderingContext::vertexAttrib4fvMethodCustom(const v8::FunctionCall
backInfo<v8::Value>& info) |
| 826 { | 826 { |
| 827 ExceptionState exceptionState(ExceptionState::ExecutionContext, "vertexAttri
b4fv", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); | 827 ExceptionState exceptionState(ExceptionState::ExecutionContext, "vertexAttri
b4fv", "WebGLRenderingContext", info.Holder(), info.GetIsolate()); |
| 828 vertexAttribAndUniformHelperf(info, kVertexAttrib4v, exceptionState); | 828 vertexAttribAndUniformHelperf(info, kVertexAttrib4v, exceptionState); |
| 829 } | 829 } |
| 830 | 830 |
| 831 } // namespace blink | 831 } // namespace blink |
| OLD | NEW |