| Index: third_party/WebKit/Source/bindings/core/v8/V8HiddenValue.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8HiddenValue.cpp b/third_party/WebKit/Source/bindings/core/v8/V8HiddenValue.cpp
|
| index c0e1cc64ca5db06b60c0461146fdd027c87356c2..478729ed4873cbb409a88d73f2c2988a44b6a951 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8HiddenValue.cpp
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8HiddenValue.cpp
|
| @@ -25,17 +25,25 @@
|
|
|
| v8::Local<v8::Value> V8HiddenValue::getHiddenValue(ScriptState* scriptState, v8::Local<v8::Object> object, v8::Local<v8::String> key)
|
| {
|
| - return object->GetHiddenValue(key);
|
| + v8::Local<v8::Context> context = scriptState->context();
|
| + v8::Local<v8::Private> privateKey = v8::Private::ForApi(scriptState->isolate(), key);
|
| + v8::Local<v8::Value> value;
|
| + // Callsites interpret an empty handle has absence of a result.
|
| + if (!v8CallBoolean(object->HasPrivate(context, privateKey)))
|
| + return v8::Local<v8::Value>();
|
| + if (object->GetPrivate(context, privateKey).ToLocal(&value))
|
| + return value;
|
| + return v8::Local<v8::Value>();
|
| }
|
|
|
| bool V8HiddenValue::setHiddenValue(ScriptState* scriptState, v8::Local<v8::Object> object, v8::Local<v8::String> key, v8::Local<v8::Value> value)
|
| {
|
| - return object->SetHiddenValue(key, value);
|
| + return v8CallBoolean(object->SetPrivate(scriptState->context(), v8::Private::ForApi(scriptState->isolate(), key), value));
|
| }
|
|
|
| bool V8HiddenValue::deleteHiddenValue(ScriptState* scriptState, v8::Local<v8::Object> object, v8::Local<v8::String> key)
|
| {
|
| - return object->DeleteHiddenValue(key);
|
| + return v8CallBoolean(object->DeletePrivate(scriptState->context(), v8::Private::ForApi(scriptState->isolate(), key)));
|
| }
|
|
|
| v8::Local<v8::Value> V8HiddenValue::getHiddenValueFromMainWorldWrapper(ScriptState* scriptState, ScriptWrappable* wrappable, v8::Local<v8::String> key)
|
|
|