diff options
author | Steve Block <steveblock@google.com> | 2011-05-18 13:36:51 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-05-24 15:38:28 +0100 |
commit | 2fc2651226baac27029e38c9d6ef883fa32084db (patch) | |
tree | e396d4bf89dcce6ed02071be66212495b1df1dec /Source/WebCore/bindings/v8/V8Binding.cpp | |
parent | b3725cedeb43722b3b175aaeff70552e562d2c94 (diff) | |
download | external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.zip external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.tar.gz external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.tar.bz2 |
Merge WebKit at r78450: Initial merge by git.
Change-Id: I6d3e5f1f868ec266a0aafdef66182ddc3f265dc1
Diffstat (limited to 'Source/WebCore/bindings/v8/V8Binding.cpp')
-rw-r--r-- | Source/WebCore/bindings/v8/V8Binding.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/WebCore/bindings/v8/V8Binding.cpp b/Source/WebCore/bindings/v8/V8Binding.cpp index 52b23bd..2acd29a 100644 --- a/Source/WebCore/bindings/v8/V8Binding.cpp +++ b/Source/WebCore/bindings/v8/V8Binding.cpp @@ -31,6 +31,7 @@ #include "config.h" #include "V8Binding.h" +#include "DOMStringList.h" #include "Element.h" #include "MathExtras.h" #include "PlatformString.h" @@ -412,6 +413,13 @@ String v8NonStringValueToWebCoreString(v8::Handle<v8::Value> object) throwError(block.Exception()); return StringImpl::empty(); } + // This path is unexpected. However there is hypothesis that it + // might be combination of v8 and v8 bindings bugs. For now + // just bailout as we'll crash if attempt to convert empty handle into a string. + if (v8String.IsEmpty()) { + ASSERT_NOT_REACHED(); + return StringImpl::empty(); + } return v8StringToWebCoreString<String>(v8String, DoNotExternalize); } @@ -578,4 +586,19 @@ void setElementStringAttr(const v8::AccessorInfo& info, imp->setAttribute(name, v); } +PassRefPtr<DOMStringList> v8ValueToWebCoreDOMStringList(v8::Handle<v8::Value> value) +{ + v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(value)); + if (!v8Value->IsArray()) + return 0; + + RefPtr<DOMStringList> ret = DOMStringList::create(); + v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(v8Value); + for (size_t i = 0; i < v8Array->Length(); ++i) { + v8::Local<v8::Value> indexedValue = v8Array->Get(v8::Integer::New(i)); + ret->append(v8ValueToWebCoreString(indexedValue)); + } + return ret.release(); +} + } // namespace WebCore |