| Index: third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| index 2f61561838833701bb4b939b2d8219fef1929795..0f51f116d4a29032c6fa466314be807c1bffe72c 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| @@ -552,7 +552,7 @@ int SerializedScriptValueWriter::v8StringWriteOptions()
|
| return v8::String::NO_NULL_TERMINATION;
|
| }
|
|
|
| -ScriptValueSerializer::StateBase* ScriptValueSerializer::AbstractObjectState::serializeProperties(bool ignoreIndexed, ScriptValueSerializer& serializer)
|
| +ScriptValueSerializer::StateBase* ScriptValueSerializer::AbstractObjectState::serializeProperties(ScriptValueSerializer& serializer)
|
| {
|
| while (m_index < m_propertyNames->Length()) {
|
| v8::Local<v8::Value> propertyName;
|
| @@ -563,7 +563,7 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::AbstractObjectState::se
|
| if (propertyName->IsString()) {
|
| hasProperty = v8CallBoolean(composite()->HasRealNamedProperty(serializer.context(), propertyName.As<v8::String>()));
|
| } else if (propertyName->IsUint32()) {
|
| - hasProperty = v8CallBoolean(composite()->HasRealIndexedProperty(serializer.context(), propertyName.As<v8::Uint32>()->Value())) && !ignoreIndexed;
|
| + hasProperty = v8CallBoolean(composite()->HasRealIndexedProperty(serializer.context(), propertyName.As<v8::Uint32>()->Value()));
|
| }
|
| if (StateBase* newState = serializer.checkException(this))
|
| return newState;
|
| @@ -595,7 +595,7 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::ObjectState::advance(Sc
|
| if (!composite()->GetOwnPropertyNames(serializer.context()).ToLocal(&m_propertyNames))
|
| return serializer.checkException(this);
|
| }
|
| - return serializeProperties(false, serializer);
|
| + return serializeProperties(serializer);
|
| }
|
|
|
| ScriptValueSerializer::StateBase* ScriptValueSerializer::ObjectState::objectDone(unsigned numProperties, ScriptValueSerializer& serializer)
|
| @@ -615,7 +615,7 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::DenseArrayState::advanc
|
| if (StateBase* newState = serializer.doSerialize(value, this))
|
| return newState;
|
| }
|
| - return serializeProperties(true, serializer);
|
| + return serializeProperties(serializer);
|
| }
|
|
|
| ScriptValueSerializer::StateBase* ScriptValueSerializer::DenseArrayState::objectDone(unsigned numProperties, ScriptValueSerializer& serializer)
|
| @@ -625,7 +625,7 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::DenseArrayState::object
|
|
|
| ScriptValueSerializer::StateBase* ScriptValueSerializer::SparseArrayState::advance(ScriptValueSerializer& serializer)
|
| {
|
| - return serializeProperties(false, serializer);
|
| + return serializeProperties(serializer);
|
| }
|
|
|
| ScriptValueSerializer::StateBase* ScriptValueSerializer::SparseArrayState::objectDone(unsigned numProperties, ScriptValueSerializer& serializer)
|
| @@ -1206,6 +1206,10 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::startArrayState(v8::Loc
|
|
|
| if (shouldSerializeDensely(length, propertyNames->Length())) {
|
| m_writer.writeGenerateFreshDenseArray(length);
|
| + // In serializing a dense array, indexed properties are ignored, so we get
|
| + // non indexed own property names here.
|
| + if (!array->GetPropertyNames(context(), v8::KeyCollectionMode::kIncludePrototypes, static_cast<v8::PropertyFilter>(v8::ONLY_ENUMERABLE | v8::SKIP_SYMBOLS), v8::IndexFilter::kSkipIndices).ToLocal(&propertyNames))
|
| + return checkException(next);
|
| return push(new DenseArrayState(array, propertyNames, next, isolate()));
|
| }
|
|
|
|
|