Qt: add hook after call from native
This commit is contained in:
@@ -51,11 +51,6 @@ DoricJSEngine::DoricJSEngine(QObject *parent) : QObject(parent) {
|
||||
mJSE->injectGlobalJSFunction(DoricConstant::INJECT_LOG, nativeLog,
|
||||
"function");
|
||||
|
||||
// inject empty
|
||||
DoricNativeEmpty *nativeEmpty = new DoricNativeEmpty();
|
||||
mJSE->injectGlobalJSFunction(DoricConstant::INJECT_EMPTY, nativeEmpty,
|
||||
"function");
|
||||
|
||||
// inject require
|
||||
DoricNativeRequire *nativeRequire = new DoricNativeRequire();
|
||||
mJSE->injectGlobalJSFunction(DoricConstant::INJECT_REQUIRE, nativeRequire,
|
||||
@@ -110,7 +105,15 @@ QString DoricJSEngine::destroyContext(QString contextId) {
|
||||
|
||||
QString DoricJSEngine::invokeDoricMethod(QString method,
|
||||
QVariantList arguments) {
|
||||
return mJSE->invokeObject(DoricConstant::GLOBAL_DORIC, method, arguments);
|
||||
QString ret = mJSE->invokeObject(DoricConstant::GLOBAL_DORIC, method, arguments);
|
||||
|
||||
if (method != DoricConstant::DORIC_CONTEXT_INVOKE_PURE) {
|
||||
QVariantList newArguments;
|
||||
newArguments.append(0);
|
||||
newArguments.append(false);
|
||||
mJSE->invokeObject(DoricConstant::GLOBAL_DORIC, DoricConstant::DORIC_HOOK_NATIVE_CALL, newArguments);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void DoricJSEngine::loadBuiltinJS(QString assetName) {
|
||||
|
@@ -239,24 +239,6 @@ static void InjectedFunction(const v8::FunctionCallbackInfo<v8::Value> &args) {
|
||||
Q_ARG(QString, QString::fromUtf8(argString3.c_str())),
|
||||
Q_ARG(QString, QString::fromUtf8(argString4.c_str())));
|
||||
}
|
||||
|
||||
// begin check to perform micro task checkpoint
|
||||
|
||||
std::string objectNameString = "global";
|
||||
std::string functionKeyString = "nativeEmpty";
|
||||
|
||||
int objectCompareResult = strncmp(objectKey.c_str(), objectNameString.c_str(),
|
||||
strlen(objectKey.c_str()));
|
||||
|
||||
if (objectCompareResult == 0) {
|
||||
int functionCompareResult =
|
||||
strncmp(functionKey.c_str(), functionKeyString.c_str(),
|
||||
strlen(functionKey.c_str()));
|
||||
if (functionCompareResult == 0) {
|
||||
isolate->PerformMicrotaskCheckpoint();
|
||||
}
|
||||
}
|
||||
// end check
|
||||
}
|
||||
|
||||
void V8Executor::injectFunctions(const char *objectName,
|
||||
|
Reference in New Issue
Block a user