Use the new v8 interceptor API
The original v8 interceptor API has been deprecated. Update the code to
use the new API.
Change-Id: Icf5a2f2f4bd045d48c8a2143e2cdaa14964d27e0
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/117936
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/fxjs/cfxjs_engine.cpp b/fxjs/cfxjs_engine.cpp
index 03d41f4..13ce5c9 100644
--- a/fxjs/cfxjs_engine.cpp
+++ b/fxjs/cfxjs_engine.cpp
@@ -212,12 +212,11 @@
GetInstanceTemplate()->Set(sMethodName, fun, v8::ReadOnly);
}
- void DefineAllProperties(
- v8::GenericNamedPropertyQueryCallback pPropQurey,
- v8::GenericNamedPropertyGetterCallback pPropGet,
- v8::GenericNamedPropertySetterCallback pPropPut,
- v8::GenericNamedPropertyDeleterCallback pPropDel,
- v8::GenericNamedPropertyEnumeratorCallback pPropEnum) {
+ void DefineAllProperties(v8::NamedPropertyQueryCallback pPropQurey,
+ v8::NamedPropertyGetterCallback pPropGet,
+ v8::NamedPropertySetterCallback pPropPut,
+ v8::NamedPropertyDeleterCallback pPropDel,
+ v8::NamedPropertyEnumeratorCallback pPropEnum) {
GetInstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(
pPropGet, pPropPut, pPropQurey, pPropDel, pPropEnum,
v8::Local<v8::Value>(),
@@ -446,11 +445,11 @@
void CFXJS_Engine::DefineObjAllProperties(
uint32_t nObjDefnID,
- v8::GenericNamedPropertyQueryCallback pPropQurey,
- v8::GenericNamedPropertyGetterCallback pPropGet,
- v8::GenericNamedPropertySetterCallback pPropPut,
- v8::GenericNamedPropertyDeleterCallback pPropDel,
- v8::GenericNamedPropertyEnumeratorCallback pPropEnum) {
+ v8::NamedPropertyQueryCallback pPropQurey,
+ v8::NamedPropertyGetterCallback pPropGet,
+ v8::NamedPropertySetterCallback pPropPut,
+ v8::NamedPropertyDeleterCallback pPropDel,
+ v8::NamedPropertyEnumeratorCallback pPropEnum) {
v8::Isolate::Scope isolate_scope(GetIsolate());
v8::HandleScope handle_scope(GetIsolate());
FXJS_PerIsolateData* pIsolateData = FXJS_PerIsolateData::Get(GetIsolate());
diff --git a/fxjs/cfxjs_engine.h b/fxjs/cfxjs_engine.h
index 55ca561..d491686 100644
--- a/fxjs/cfxjs_engine.h
+++ b/fxjs/cfxjs_engine.h
@@ -110,13 +110,12 @@
const char* sPropName,
v8::AccessorNameGetterCallback pPropGet,
v8::AccessorNameSetterCallback pPropPut);
- void DefineObjAllProperties(
- uint32_t nObjDefnID,
- v8::GenericNamedPropertyQueryCallback pPropQurey,
- v8::GenericNamedPropertyGetterCallback pPropGet,
- v8::GenericNamedPropertySetterCallback pPropPut,
- v8::GenericNamedPropertyDeleterCallback pPropDel,
- v8::GenericNamedPropertyEnumeratorCallback pPropEnum);
+ void DefineObjAllProperties(uint32_t nObjDefnID,
+ v8::NamedPropertyQueryCallback pPropQurey,
+ v8::NamedPropertyGetterCallback pPropGet,
+ v8::NamedPropertySetterCallback pPropPut,
+ v8::NamedPropertyDeleterCallback pPropDel,
+ v8::NamedPropertyEnumeratorCallback pPropEnum);
void DefineObjConst(uint32_t nObjDefnID,
const char* sConstName,
v8::Local<v8::Value> pDefault);
diff --git a/fxjs/cjs_global.cpp b/fxjs/cjs_global.cpp
index da99452..dd0e271 100644
--- a/fxjs/cjs_global.cpp
+++ b/fxjs/cjs_global.cpp
@@ -50,75 +50,95 @@
}
// static
-void CJS_Global::queryprop_static(
+v8::Intercepted CJS_Global::queryprop_static(
v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<v8::Integer>& info) {
auto pObj = JSGetObject<CJS_Global>(info.GetIsolate(), info.Holder());
- if (!pObj)
- return;
+ if (!pObj) {
+ return v8::Intercepted::kNo;
+ }
ByteString bsProp = ByteStringFromV8Name(info.GetIsolate(), property);
- if (pObj->HasProperty(bsProp))
- info.GetReturnValue().Set(static_cast<int>(v8::PropertyAttribute::None));
+ if (!pObj->HasProperty(bsProp)) {
+ return v8::Intercepted::kNo;
+ }
+
+ info.GetReturnValue().Set(static_cast<int>(v8::PropertyAttribute::None));
+ return v8::Intercepted::kYes;
}
// static
-void CJS_Global::getprop_static(
+v8::Intercepted CJS_Global::getprop_static(
v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<v8::Value>& info) {
auto pObj = JSGetObject<CJS_Global>(info.GetIsolate(), info.Holder());
- if (!pObj)
- return;
+ if (!pObj) {
+ return v8::Intercepted::kNo;
+ }
CJS_Runtime* pRuntime = pObj->GetRuntime();
- if (!pRuntime)
- return;
+ if (!pRuntime) {
+ return v8::Intercepted::kNo;
+ }
ByteString bsProp = ByteStringFromV8Name(info.GetIsolate(), property);
CJS_Result result = pObj->GetProperty(pRuntime, bsProp);
if (result.HasError()) {
pRuntime->Error(
JSFormatErrorString("global", "GetProperty", result.Error()));
- return;
+ return v8::Intercepted::kYes;
}
- if (result.HasReturn())
- info.GetReturnValue().Set(result.Return());
+ if (!result.HasReturn()) {
+ return v8::Intercepted::kNo;
+ }
+
+ info.GetReturnValue().Set(result.Return());
+ return v8::Intercepted::kYes;
}
// static
-void CJS_Global::putprop_static(
+v8::Intercepted CJS_Global::putprop_static(
v8::Local<v8::Name> property,
v8::Local<v8::Value> value,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
+ const v8::PropertyCallbackInfo<void>& info) {
auto pObj = JSGetObject<CJS_Global>(info.GetIsolate(), info.Holder());
- if (!pObj)
- return;
+ if (!pObj) {
+ return v8::Intercepted::kNo;
+ }
CJS_Runtime* pRuntime = pObj->GetRuntime();
- if (!pRuntime)
- return;
+ if (!pRuntime) {
+ return v8::Intercepted::kNo;
+ }
ByteString bsProp = ByteStringFromV8Name(info.GetIsolate(), property);
CJS_Result result = pObj->SetProperty(pRuntime, bsProp, value);
if (result.HasError()) {
pRuntime->Error(
JSFormatErrorString("global", "PutProperty", result.Error()));
- return;
+ return v8::Intercepted::kYes;
}
+
info.GetReturnValue().Set(value);
+ return v8::Intercepted::kYes;
}
// static
-void CJS_Global::delprop_static(
+v8::Intercepted CJS_Global::delprop_static(
v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<v8::Boolean>& info) {
auto pObj = JSGetObject<CJS_Global>(info.GetIsolate(), info.Holder());
- if (!pObj)
- return;
+ if (!pObj) {
+ return v8::Intercepted::kNo;
+ }
ByteString bsProp = ByteStringFromV8Name(info.GetIsolate(), property);
- if (pObj->DelProperty(bsProp))
- info.GetReturnValue().Set(true);
+ if (!pObj->DelProperty(bsProp)) {
+ return v8::Intercepted::kNo;
+ }
+
+ info.GetReturnValue().Set(true);
+ return v8::Intercepted::kYes;
}
void CJS_Global::enumprop_static(
diff --git a/fxjs/cjs_global.h b/fxjs/cjs_global.h
index c8c0907..2c53802 100644
--- a/fxjs/cjs_global.h
+++ b/fxjs/cjs_global.h
@@ -35,16 +35,19 @@
static void DefineJSObjects(CFXJS_Engine* pEngine);
static void DefineAllProperties(CFXJS_Engine* pEngine);
- static void queryprop_static(
+ static v8::Intercepted queryprop_static(
v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<v8::Integer>& info);
- static void getprop_static(v8::Local<v8::Name> property,
- const v8::PropertyCallbackInfo<v8::Value>& info);
- static void putprop_static(v8::Local<v8::Name> property,
- v8::Local<v8::Value> value,
- const v8::PropertyCallbackInfo<v8::Value>& info);
- static void delprop_static(v8::Local<v8::Name> property,
- const v8::PropertyCallbackInfo<v8::Boolean>& info);
+ static v8::Intercepted getprop_static(
+ v8::Local<v8::Name> property,
+ const v8::PropertyCallbackInfo<v8::Value>& info);
+ static v8::Intercepted putprop_static(
+ v8::Local<v8::Name> property,
+ v8::Local<v8::Value> value,
+ const v8::PropertyCallbackInfo<void>& info);
+ static v8::Intercepted delprop_static(
+ v8::Local<v8::Name> property,
+ const v8::PropertyCallbackInfo<v8::Boolean>& info);
static void enumprop_static(const v8::PropertyCallbackInfo<v8::Array>& info);
static void setPersistent_static(
diff --git a/fxjs/xfa/cfxjse_class.cpp b/fxjs/xfa/cfxjse_class.cpp
index ce1d465..64b1208 100644
--- a/fxjs/xfa/cfxjse_class.cpp
+++ b/fxjs/xfa/cfxjse_class.cpp
@@ -192,13 +192,14 @@
return nPropType != FXJSE_ClassPropType::kNone;
}
-void NamedPropertyQueryCallback(
+v8::Intercepted NamedPropertyQueryCallback(
v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<v8::Integer>& info) {
const FXJSE_CLASS_DESCRIPTOR* pClass =
AsClassDescriptor(info.Data().As<v8::External>()->Value());
- if (!pClass)
- return;
+ if (!pClass) {
+ return v8::Intercepted::kNo;
+ }
v8::HandleScope scope(info.GetIsolate());
v8::String::Utf8Value szPropName(info.GetIsolate(), property);
@@ -206,35 +207,38 @@
if (DynPropQueryAdapter(info.GetIsolate(), pClass, info.Holder(),
szFxPropName)) {
info.GetReturnValue().Set(v8::DontDelete);
- return;
+ return v8::Intercepted::kYes;
}
- const int32_t iV8Absent = 64;
- info.GetReturnValue().Set(iV8Absent);
+
+ return v8::Intercepted::kNo;
}
-void NamedPropertyGetterCallback(
+v8::Intercepted NamedPropertyGetterCallback(
v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<v8::Value>& info) {
const FXJSE_CLASS_DESCRIPTOR* pClass =
AsClassDescriptor(info.Data().As<v8::External>()->Value());
- if (!pClass)
- return;
+ if (!pClass) {
+ return v8::Intercepted::kNo;
+ }
v8::String::Utf8Value szPropName(info.GetIsolate(), property);
ByteStringView szFxPropName(*szPropName, szPropName.length());
std::unique_ptr<CFXJSE_Value> pNewValue = DynPropGetterAdapter(
info.GetIsolate(), pClass, info.Holder(), szFxPropName);
info.GetReturnValue().Set(pNewValue->DirectGetValue());
+ return v8::Intercepted::kYes;
}
-void NamedPropertySetterCallback(
+v8::Intercepted NamedPropertySetterCallback(
v8::Local<v8::Name> property,
v8::Local<v8::Value> value,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
+ const v8::PropertyCallbackInfo<void>& info) {
const FXJSE_CLASS_DESCRIPTOR* pClass =
AsClassDescriptor(info.Data().As<v8::External>()->Value());
- if (!pClass)
- return;
+ if (!pClass) {
+ return v8::Intercepted::kNo;
+ }
v8::String::Utf8Value szPropName(info.GetIsolate(), property);
ByteStringView szFxPropName(*szPropName, szPropName.length());
@@ -242,6 +246,7 @@
DynPropSetterAdapter(info.GetIsolate(), pClass, info.Holder(), szFxPropName,
pNewValue.get());
info.GetReturnValue().Set(value);
+ return v8::Intercepted::kYes;
}
void NamedPropertyEnumeratorCallback(