!175 解决测试用例运行闪退问题

Merge pull request !175 from wangxiyue/master
This commit is contained in:
openharmony_ci
2022-07-11 03:59:14 +00:00
committed by Gitee
4 changed files with 24 additions and 10 deletions
@@ -33,6 +33,7 @@ public:
bool isUndefined(char *value);
void AddUndefined(char *value);
void DeleteUndefined(char *value);
void DestroyObject();
private:
DistributedObjectStore *objectStore_;
@@ -55,6 +55,7 @@ napi_value JSDistributedObject::JSGet(napi_env env, napi_callback_info info)
status = napi_unwrap(env, thisVar, (void **)&wrapper);
CHECK_EQUAL_WITH_RETURN_NULL(status, napi_ok);
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper != nullptr);
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper->GetObject() != nullptr);
napi_value result = nullptr;
if (wrapper->isUndefined(key)) {
napi_get_undefined(env, &result);
@@ -88,6 +89,7 @@ napi_value JSDistributedObject::JSPut(napi_env env, napi_callback_info info)
status = napi_unwrap(env, thisVar, (void **)&wrapper);
CHECK_EQUAL_WITH_RETURN_NULL(status, napi_ok);
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper != nullptr);
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper->GetObject() != nullptr);
if (valueType == napi_undefined) {
wrapper->AddUndefined(key);
return nullptr;
@@ -236,6 +238,7 @@ napi_value JSDistributedObject::JSSave(napi_env env, napi_callback_info info)
napi_status status = napi_unwrap(env, ctxt->self, (void **)&wrapper);
CHECK_EQUAL_WITH_RETURN_VOID(status, napi_ok);
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper != nullptr);
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper->GetObject() != nullptr);
ctxt->object = wrapper->GetObject();
};
ctxt->GetCbInfo(env, info, getCbOpe);
@@ -243,8 +246,7 @@ napi_value JSDistributedObject::JSSave(napi_env env, napi_callback_info info)
if (ctxt->status == napi_ok) {
ctxt->status = napi_new_instance(env,
JSDistributedObject::GetSaveResultCons(env, ctxt->object->GetSessionId(),
ctxt->version, ctxt->deviceId),
0, nullptr, &result);
ctxt->version, ctxt->deviceId), 0, nullptr, &result);
CHECK_STATUS_RETURN_VOID(ctxt, "output failed!");
}
};
@@ -285,6 +287,7 @@ napi_value JSDistributedObject::JSRevokeSave(napi_env env, napi_callback_info in
napi_status status = napi_unwrap(env, ctxt->self, (void **)&wrapper);
CHECK_EQUAL_WITH_RETURN_VOID(status, napi_ok);
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper != nullptr);
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper->GetObject() != nullptr);
ctxt->object = wrapper->GetObject();
};
ctxt->GetCbInfo(env, info, getCbOpe);
@@ -97,13 +97,19 @@ napi_value JSDistributedObjectStore::NewDistributedObject(
status = napi_wrap(
env, result, objectWrapper,
[](napi_env env, void *data, void *hint) {
LOG_INFO("start delete object");
if (data == nullptr) {
LOG_WARN("objectWrapper is nullptr.");
return;
}
auto objectWrapper = (JSObjectWrapper *)data;
if (objectWrapper->GetObject() == nullptr) {
delete objectWrapper;
return;
}
LOG_INFO("start delete object");
DistributedObjectStore::GetInstance(JSDistributedObjectStore::GetBundleName(env))
->DeleteObject(objectWrapper->GetObject()->GetSessionId());
if (objectWrapper != nullptr) {
delete objectWrapper;
}
delete objectWrapper;
},
nullptr, nullptr);
RestoreWatchers(env, objectWrapper, objectId);
@@ -172,10 +178,9 @@ napi_value JSDistributedObjectStore::JSDestroyObjectSync(napi_env env, napi_call
ASSERT_MATCH_ELSE_RETURN_NULL(objectInfo != nullptr && objectWrapper->GetObject() != nullptr);
objectWrapper->DeleteWatch(env, CHANGE);
objectWrapper->DeleteWatch(env, STATUS);
uint32_t ret = objectInfo->DeleteObject(objectWrapper->GetObject()->GetSessionId());
napi_value result = nullptr;
napi_create_int32(env, ret, &result);
return result;
objectInfo->DeleteObject(objectWrapper->GetObject()->GetSessionId());
objectWrapper->DestroyObject();
return nullptr;
}
// function on(type: 'change', object: DistributedObject, callback: Callback<ChangedDataObserver>): void;
@@ -87,4 +87,9 @@ void JSObjectWrapper::DeleteUndefined(char *value)
undefinedProperties.erase(it);
}
}
void JSObjectWrapper::DestroyObject()
{
object_ = nullptr;
}
} // namespace OHOS::ObjectStore