OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 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 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 { | 512 { |
513 NonThrowableExceptionState exceptionState; | 513 NonThrowableExceptionState exceptionState; |
514 return toUInt64(value, NormalConversion, exceptionState); | 514 return toUInt64(value, NormalConversion, exceptionState); |
515 } | 515 } |
516 | 516 |
517 float toFloat(v8::Handle<v8::Value> value, ExceptionState& exceptionState) | 517 float toFloat(v8::Handle<v8::Value> value, ExceptionState& exceptionState) |
518 { | 518 { |
519 return static_cast<float>(toDouble(value, exceptionState)); | 519 return static_cast<float>(toDouble(value, exceptionState)); |
520 } | 520 } |
521 | 521 |
| 522 float toRestrictedFloat(v8::Handle<v8::Value> value, ExceptionState& exceptionSt
ate) |
| 523 { |
| 524 float numberValue = toFloat(value, exceptionState); |
| 525 if (exceptionState.hadException()) |
| 526 return 0; |
| 527 if (!std::isfinite(numberValue)) { |
| 528 exceptionState.throwTypeError("The provided float value is non-finite.")
; |
| 529 return 0; |
| 530 } |
| 531 return numberValue; |
| 532 } |
| 533 |
522 double toDouble(v8::Handle<v8::Value> value, ExceptionState& exceptionState) | 534 double toDouble(v8::Handle<v8::Value> value, ExceptionState& exceptionState) |
523 { | 535 { |
524 if (value->IsNumber()) | 536 if (value->IsNumber()) |
525 return value->NumberValue(); | 537 return value->NumberValue(); |
526 | 538 |
527 v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 539 v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
528 v8::TryCatch block(isolate); | 540 v8::TryCatch block(isolate); |
529 v8::Local<v8::Number> numberObject(value->ToNumber(isolate)); | 541 v8::Local<v8::Number> numberObject(value->ToNumber(isolate)); |
530 if (block.HasCaught()) { | 542 if (block.HasCaught()) { |
531 exceptionState.rethrowV8Exception(block.Exception()); | 543 exceptionState.rethrowV8Exception(block.Exception()); |
532 return 0; | 544 return 0; |
533 } | 545 } |
534 return numberObject->NumberValue(); | 546 return numberObject->NumberValue(); |
535 } | 547 } |
536 | 548 |
| 549 double toRestrictedDouble(v8::Handle<v8::Value> value, ExceptionState& exception
State) |
| 550 { |
| 551 double numberValue = toDouble(value, exceptionState); |
| 552 if (exceptionState.hadException()) |
| 553 return 0; |
| 554 if (!std::isfinite(numberValue)) { |
| 555 exceptionState.throwTypeError("The provided double value is non-finite."
); |
| 556 return 0; |
| 557 } |
| 558 return numberValue; |
| 559 } |
| 560 |
537 String toByteString(v8::Handle<v8::Value> value, ExceptionState& exceptionState) | 561 String toByteString(v8::Handle<v8::Value> value, ExceptionState& exceptionState) |
538 { | 562 { |
539 // Handle null default value. | 563 // Handle null default value. |
540 if (value.IsEmpty()) | 564 if (value.IsEmpty()) |
541 return String(); | 565 return String(); |
542 | 566 |
543 // From the Web IDL spec: http://heycam.github.io/webidl/#es-ByteString | 567 // From the Web IDL spec: http://heycam.github.io/webidl/#es-ByteString |
544 if (value.IsEmpty()) | 568 if (value.IsEmpty()) |
545 return String(); | 569 return String(); |
546 | 570 |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1006 PassRefPtr<TraceEvent::ConvertableToTraceFormat> devToolsTraceEventData(v8::Isol
ate* isolate, ExecutionContext* context, v8::Handle<v8::Function> function) | 1030 PassRefPtr<TraceEvent::ConvertableToTraceFormat> devToolsTraceEventData(v8::Isol
ate* isolate, ExecutionContext* context, v8::Handle<v8::Function> function) |
1007 { | 1031 { |
1008 int scriptId = 0; | 1032 int scriptId = 0; |
1009 String resourceName; | 1033 String resourceName; |
1010 int lineNumber = 1; | 1034 int lineNumber = 1; |
1011 GetDevToolsFunctionInfo(function, isolate, scriptId, resourceName, lineNumbe
r); | 1035 GetDevToolsFunctionInfo(function, isolate, scriptId, resourceName, lineNumbe
r); |
1012 return InspectorFunctionCallEvent::data(context, scriptId, resourceName, lin
eNumber); | 1036 return InspectorFunctionCallEvent::data(context, scriptId, resourceName, lin
eNumber); |
1013 } | 1037 } |
1014 | 1038 |
1015 } // namespace blink | 1039 } // namespace blink |
OLD | NEW |