Index: third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h |
diff --git a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h |
index 5276efa7e34bd2d44d84d871e727a9a894c9b189..f693688c9afdce686f9df0c5aef3cf91b3cf6edd 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h |
+++ b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h |
@@ -430,13 +430,10 @@ struct NativeValueTraits<IDLRecord<K, V>> |
// While we could pass v8::ONLY_ENUMERABLE below, doing so breaks |
// web-platform-tests' headers-record.html and deviates from the spec |
// algorithm. |
- // Symbols are being skipped due to |
- // https://github.com/heycam/webidl/issues/294. |
if (!v8_object |
->GetOwnPropertyNames(context, |
static_cast<v8::PropertyFilter>( |
- v8::PropertyFilter::ALL_PROPERTIES | |
- v8::PropertyFilter::SKIP_SYMBOLS)) |
+ v8::PropertyFilter::ALL_PROPERTIES)) |
.ToLocal(&keys)) { |
exception_state.RethrowV8Exception(block.Exception()); |
return ImplType(); |
@@ -464,11 +461,14 @@ struct NativeValueTraits<IDLRecord<K, V>> |
return ImplType(); |
} |
+ // V8's GetOwnPropertyNames() does not convert numeric property indices |
+ // to strings, so we have to do it ourselves. |
+ if (!key->IsName()) |
+ key = key->ToString(context).ToLocalChecked(); |
+ |
// "4.1. Let desc be ? O.[[GetOwnProperty]](key)." |
v8::Local<v8::Value> desc; |
- if (!v8_object |
- ->GetOwnPropertyDescriptor( |
- context, key->ToString(context).ToLocalChecked()) |
+ if (!v8_object->GetOwnPropertyDescriptor(context, key.As<v8::Name>()) |
.ToLocal(&desc)) { |
exception_state.RethrowV8Exception(block.Exception()); |
return ImplType(); |