| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Ericsson AB. All rights reserved. | 3 * Copyright (C) 2012 Ericsson AB. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 return toCoreString(value); | 173 return toCoreString(value); |
| 174 } | 174 } |
| 175 | 175 |
| 176 inline AtomicString toCoreAtomicString(v8::Handle<v8::String> value) | 176 inline AtomicString toCoreAtomicString(v8::Handle<v8::String> value) |
| 177 { | 177 { |
| 178 return v8StringToWebCoreString<AtomicString>(value, Externalize); | 178 return v8StringToWebCoreString<AtomicString>(value, Externalize); |
| 179 } | 179 } |
| 180 | 180 |
| 181 // This method will return a null String if the v8::Value does not contain a v8:
:String. | 181 // This method will return a null String if the v8::Value does not contain a v8:
:String. |
| 182 // It will not call ToString() on the v8::Value. If you want ToString() to be ca
lled, | 182 // It will not call ToString() on the v8::Value. If you want ToString() to be ca
lled, |
| 183 // please use the V8TRYCATCH_FOR_V8STRINGRESOURCE_*() macros instead. | 183 // please use the TONATIVE_FOR_V8STRINGRESOURCE_*() macros instead. |
| 184 inline String toCoreStringWithUndefinedOrNullCheck(v8::Handle<v8::Value> value) | 184 inline String toCoreStringWithUndefinedOrNullCheck(v8::Handle<v8::Value> value) |
| 185 { | 185 { |
| 186 if (value.IsEmpty() || !value->IsString()) | 186 if (value.IsEmpty() || !value->IsString()) |
| 187 return String(); | 187 return String(); |
| 188 return toCoreString(value.As<v8::String>()); | 188 return toCoreString(value.As<v8::String>()); |
| 189 } | 189 } |
| 190 | 190 |
| 191 // Convert a string to a V8 string. | 191 // Convert a string to a V8 string. |
| 192 // Return a V8 external string that shares the underlying buffer with the given | 192 // Return a V8 external string that shares the underlying buffer with the given |
| 193 // WebCore string. The reference counting mechanism is used to keep the | 193 // WebCore string. The reference counting mechanism is used to keep the |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 // FIXME: Remove the special casing for NodeFilter and XPathNSResolver. | 442 // FIXME: Remove the special casing for NodeFilter and XPathNSResolver. |
| 443 PassRefPtr<NodeFilter> toNodeFilter(v8::Handle<v8::Value>, v8::Isolate*); | 443 PassRefPtr<NodeFilter> toNodeFilter(v8::Handle<v8::Value>, v8::Isolate*); |
| 444 PassRefPtrWillBeRawPtr<XPathNSResolver> toXPathNSResolver(v8::Handle<v8::Value>,
v8::Isolate*); | 444 PassRefPtrWillBeRawPtr<XPathNSResolver> toXPathNSResolver(v8::Handle<v8::Value>,
v8::Isolate*); |
| 445 | 445 |
| 446 template<class T> struct NativeValueTraits; | 446 template<class T> struct NativeValueTraits; |
| 447 | 447 |
| 448 template<> | 448 template<> |
| 449 struct NativeValueTraits<String> { | 449 struct NativeValueTraits<String> { |
| 450 static inline String nativeValue(const v8::Handle<v8::Value>& value, v8::Iso
late* isolate) | 450 static inline String nativeValue(const v8::Handle<v8::Value>& value, v8::Iso
late* isolate) |
| 451 { | 451 { |
| 452 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue,
value, String()); | 452 TOSTRING_BOOL(V8StringResource<>, stringValue, value, String()); |
| 453 return stringValue; | 453 return stringValue; |
| 454 } | 454 } |
| 455 }; | 455 }; |
| 456 | 456 |
| 457 template<> | 457 template<> |
| 458 struct NativeValueTraits<unsigned> { | 458 struct NativeValueTraits<unsigned> { |
| 459 static inline unsigned nativeValue(const v8::Handle<v8::Value>& value, v8::I
solate* isolate) | 459 static inline unsigned nativeValue(const v8::Handle<v8::Value>& value, v8::I
solate* isolate) |
| 460 { | 460 { |
| 461 return toUInt32(value); | 461 return toUInt32(value); |
| 462 } | 462 } |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 return v8Undefined(); | 628 return v8Undefined(); |
| 629 } | 629 } |
| 630 | 630 |
| 631 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 631 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
| 632 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); | 632 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); |
| 633 v8::Local<v8::String> lengthSymbol = v8AtomicString(isolate, "length"); | 633 v8::Local<v8::String> lengthSymbol = v8AtomicString(isolate, "length"); |
| 634 | 634 |
| 635 // FIXME: The specification states that the length property should be used a
s fallback, if value | 635 // FIXME: The specification states that the length property should be used a
s fallback, if value |
| 636 // is not a platform object that supports indexed properties. If it supports
indexed properties, | 636 // is not a platform object that supports indexed properties. If it supports
indexed properties, |
| 637 // length should actually be one greater than value’s maximum indexed proper
ty index. | 637 // length should actually be one greater than value’s maximum indexed proper
ty index. |
| 638 V8TRYCATCH(v8::Local<v8::Value>, lengthValue, object->Get(lengthSymbol)); | 638 TONATIVE_EXCEPTION(v8::Local<v8::Value>, lengthValue, object->Get(lengthSymb
ol)); |
| 639 | 639 |
| 640 if (lengthValue->IsUndefined() || lengthValue->IsNull()) { | 640 if (lengthValue->IsUndefined() || lengthValue->IsNull()) { |
| 641 // The caller is responsible for reporting a TypeError. | 641 // The caller is responsible for reporting a TypeError. |
| 642 return v8Undefined(); | 642 return v8Undefined(); |
| 643 } | 643 } |
| 644 | 644 |
| 645 V8TRYCATCH(uint32_t, sequenceLength, lengthValue->Int32Value()); | 645 TONATIVE_EXCEPTION(uint32_t, sequenceLength, lengthValue->Int32Value()); |
| 646 length = sequenceLength; | 646 length = sequenceLength; |
| 647 return v8Value; | 647 return v8Value; |
| 648 } | 648 } |
| 649 | 649 |
| 650 v8::Isolate* toIsolate(ExecutionContext*); | 650 v8::Isolate* toIsolate(ExecutionContext*); |
| 651 v8::Isolate* toIsolate(LocalFrame*); | 651 v8::Isolate* toIsolate(LocalFrame*); |
| 652 | 652 |
| 653 DOMWindow* toDOMWindow(v8::Handle<v8::Value>, v8::Isolate*); | 653 DOMWindow* toDOMWindow(v8::Handle<v8::Value>, v8::Isolate*); |
| 654 DOMWindow* toDOMWindow(v8::Handle<v8::Context>); | 654 DOMWindow* toDOMWindow(v8::Handle<v8::Context>); |
| 655 DOMWindow* enteredDOMWindow(v8::Isolate*); | 655 DOMWindow* enteredDOMWindow(v8::Isolate*); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 759 | 759 |
| 760 private: | 760 private: |
| 761 v8::HandleScope m_handleScope; | 761 v8::HandleScope m_handleScope; |
| 762 v8::Context::Scope m_contextScope; | 762 v8::Context::Scope m_contextScope; |
| 763 RefPtr<NewScriptState> m_scriptState; | 763 RefPtr<NewScriptState> m_scriptState; |
| 764 }; | 764 }; |
| 765 | 765 |
| 766 } // namespace WebCore | 766 } // namespace WebCore |
| 767 | 767 |
| 768 #endif // V8Binding_h | 768 #endif // V8Binding_h |
| OLD | NEW |