114cf0368Sopenharmony_ci/*
214cf0368Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
314cf0368Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
414cf0368Sopenharmony_ci * you may not use this file except in compliance with the License.
514cf0368Sopenharmony_ci * You may obtain a copy of the License at
614cf0368Sopenharmony_ci *
714cf0368Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
814cf0368Sopenharmony_ci *
914cf0368Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1014cf0368Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1114cf0368Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1214cf0368Sopenharmony_ci * See the License for the specific language governing permissions and
1314cf0368Sopenharmony_ci * limitations under the License.
1414cf0368Sopenharmony_ci */
1514cf0368Sopenharmony_ci#define LOG_TAG "Uds"
1614cf0368Sopenharmony_ci
1714cf0368Sopenharmony_ci#include "uds.h"
1814cf0368Sopenharmony_ci#include "logger.h"
1914cf0368Sopenharmony_ci#include "securec.h"
2014cf0368Sopenharmony_ci#include "unified_meta.h"
2114cf0368Sopenharmony_ci#include "udmf_capi_common.h"
2214cf0368Sopenharmony_ci#include "udmf_meta.h"
2314cf0368Sopenharmony_ci#include "udmf_err_code.h"
2414cf0368Sopenharmony_ci#include "pixel_map.h"
2514cf0368Sopenharmony_ci#include "pixelmap_native_impl.h"
2614cf0368Sopenharmony_ci
2714cf0368Sopenharmony_ciusing namespace OHOS::UDMF;
2814cf0368Sopenharmony_ci
2914cf0368Sopenharmony_cistatic const char* GetUdsStrValue(UdsObject* pThis, NdkStructId ndkStructId, const char* paramName)
3014cf0368Sopenharmony_ci{
3114cf0368Sopenharmony_ci    if (IsInvalidUdsObjectPtr(pThis, ndkStructId)) {
3214cf0368Sopenharmony_ci        return nullptr;
3314cf0368Sopenharmony_ci    }
3414cf0368Sopenharmony_ci    auto value = pThis->GetUdsValue<std::string>(paramName);
3514cf0368Sopenharmony_ci    return value == nullptr ? nullptr : value->c_str();
3614cf0368Sopenharmony_ci}
3714cf0368Sopenharmony_ci
3814cf0368Sopenharmony_cistatic int GetUdsUint8Value(UdsObject* pThis, const char* paramName, const char* paramNameLen, unsigned char** data,
3914cf0368Sopenharmony_ci    unsigned int* len)
4014cf0368Sopenharmony_ci{
4114cf0368Sopenharmony_ci    auto value = pThis->GetUdsValue<std::vector<uint8_t>>(paramName);
4214cf0368Sopenharmony_ci    if (value == nullptr) {
4314cf0368Sopenharmony_ci        return UDMF_ERR;
4414cf0368Sopenharmony_ci    }
4514cf0368Sopenharmony_ci    auto lengthPtr = pThis->GetUdsValue<int>(paramNameLen);
4614cf0368Sopenharmony_ci    int length;
4714cf0368Sopenharmony_ci    if (lengthPtr == nullptr) {
4814cf0368Sopenharmony_ci        if (value->size() > MAX_GENERAL_ENTRY_SIZE) {
4914cf0368Sopenharmony_ci            LOG_ERROR(UDMF_CAPI, "length invalid. value'size = %{public}zu", value->size());
5014cf0368Sopenharmony_ci            return UDMF_ERR;
5114cf0368Sopenharmony_ci        }
5214cf0368Sopenharmony_ci        length = static_cast<int>(value->size());
5314cf0368Sopenharmony_ci    } else {
5414cf0368Sopenharmony_ci        length = *lengthPtr;
5514cf0368Sopenharmony_ci    }
5614cf0368Sopenharmony_ci    if (length < 0 || length > MAX_GENERAL_ENTRY_SIZE) {
5714cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "length invalid! length'size = %{public}d", length);
5814cf0368Sopenharmony_ci        return UDMF_ERR;
5914cf0368Sopenharmony_ci    }
6014cf0368Sopenharmony_ci    *data = value->data();
6114cf0368Sopenharmony_ci    *len = length;
6214cf0368Sopenharmony_ci    return UDMF_E_OK;
6314cf0368Sopenharmony_ci}
6414cf0368Sopenharmony_ci
6514cf0368Sopenharmony_cibool IsInvalidUdsObjectPtr(const UdsObject *pThis, int cid)
6614cf0368Sopenharmony_ci{
6714cf0368Sopenharmony_ci    return pThis == nullptr || pThis->cid != cid || pThis->obj == nullptr;
6814cf0368Sopenharmony_ci}
6914cf0368Sopenharmony_ci
7014cf0368Sopenharmony_cibool IsInvalidUdsObjectByType(const UdsObject* pThis, const UDType& type)
7114cf0368Sopenharmony_ci{
7214cf0368Sopenharmony_ci    switch (type) {
7314cf0368Sopenharmony_ci        case PLAIN_TEXT:
7414cf0368Sopenharmony_ci            return IsInvalidUdsObjectPtr(pThis, UDS_PLAIN_TEXT_STRUCT_ID);
7514cf0368Sopenharmony_ci        case HYPERLINK:
7614cf0368Sopenharmony_ci            return IsInvalidUdsObjectPtr(pThis, UDS_HYPERLINK_STRUCT_ID);
7714cf0368Sopenharmony_ci        case HTML:
7814cf0368Sopenharmony_ci            return IsInvalidUdsObjectPtr(pThis, UDS_HTML_STRUCT_ID);
7914cf0368Sopenharmony_ci        case SYSTEM_DEFINED_APP_ITEM:
8014cf0368Sopenharmony_ci            return IsInvalidUdsObjectPtr(pThis, UDS_APP_ITEM_STRUCT_ID);
8114cf0368Sopenharmony_ci        case FILE_URI:
8214cf0368Sopenharmony_ci            return IsInvalidUdsObjectPtr(pThis, UDS_FILE_URI_STRUCT_ID);
8314cf0368Sopenharmony_ci        case SYSTEM_DEFINED_PIXEL_MAP:
8414cf0368Sopenharmony_ci            return IsInvalidUdsObjectPtr(pThis, UDS_PIXEL_MAP_STRUCT_ID);
8514cf0368Sopenharmony_ci        default:
8614cf0368Sopenharmony_ci            return false;
8714cf0368Sopenharmony_ci    }
8814cf0368Sopenharmony_ci}
8914cf0368Sopenharmony_ci
9014cf0368Sopenharmony_ciUdsObject::UdsObject(const int cid) : cid(cid) {}
9114cf0368Sopenharmony_ci
9214cf0368Sopenharmony_ciOH_UdsPlainText::OH_UdsPlainText() : UdsObject(NdkStructId::UDS_PLAIN_TEXT_STRUCT_ID) {}
9314cf0368Sopenharmony_ci
9414cf0368Sopenharmony_ciOH_UdsHyperlink::OH_UdsHyperlink() : UdsObject(NdkStructId::UDS_HYPERLINK_STRUCT_ID) {}
9514cf0368Sopenharmony_ci
9614cf0368Sopenharmony_ciOH_UdsHtml::OH_UdsHtml() : UdsObject(NdkStructId::UDS_HTML_STRUCT_ID) {}
9714cf0368Sopenharmony_ci
9814cf0368Sopenharmony_ciOH_UdsAppItem::OH_UdsAppItem() : UdsObject(NdkStructId::UDS_APP_ITEM_STRUCT_ID) {}
9914cf0368Sopenharmony_ci
10014cf0368Sopenharmony_ciOH_UdsFileUri::OH_UdsFileUri() : UdsObject(NdkStructId::UDS_FILE_URI_STRUCT_ID) {}
10114cf0368Sopenharmony_ci
10214cf0368Sopenharmony_ciOH_UdsPixelMap::OH_UdsPixelMap() : UdsObject(NdkStructId::UDS_PIXEL_MAP_STRUCT_ID) {}
10314cf0368Sopenharmony_ci
10414cf0368Sopenharmony_ciOH_UdsArrayBuffer::OH_UdsArrayBuffer() : UdsObject(NdkStructId::UDS_ARRAY_BUFFER_STRUCT_ID) {}
10514cf0368Sopenharmony_ci
10614cf0368Sopenharmony_ciOH_UdsContentForm::OH_UdsContentForm() : UdsObject(NdkStructId::UDS_CONTENT_FORM_STRUCT_ID) {}
10714cf0368Sopenharmony_ci
10814cf0368Sopenharmony_citemplate <typename T> bool UdsObject::HasObjectKey(const char* paramName)
10914cf0368Sopenharmony_ci{
11014cf0368Sopenharmony_ci    auto it = obj->value_.find(paramName);
11114cf0368Sopenharmony_ci    if (it == obj->value_.end() || !std::holds_alternative<T>(it->second)) {
11214cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Don't have property %{public}s.", paramName);
11314cf0368Sopenharmony_ci        return false;
11414cf0368Sopenharmony_ci    }
11514cf0368Sopenharmony_ci    return true;
11614cf0368Sopenharmony_ci}
11714cf0368Sopenharmony_ci
11814cf0368Sopenharmony_citemplate<typename T>
11914cf0368Sopenharmony_ciT* UdsObject::GetUdsValue(const char* paramName)
12014cf0368Sopenharmony_ci{
12114cf0368Sopenharmony_ci    if (!HasObjectKey<T>(paramName)) {
12214cf0368Sopenharmony_ci        return nullptr;
12314cf0368Sopenharmony_ci    }
12414cf0368Sopenharmony_ci    return std::get_if<T>(&(obj->value_[paramName]));
12514cf0368Sopenharmony_ci}
12614cf0368Sopenharmony_ci
12714cf0368Sopenharmony_citemplate<typename T>
12814cf0368Sopenharmony_ciint UdsObject::SetUdsValue(const char* paramName, const T &pramValue)
12914cf0368Sopenharmony_ci{
13014cf0368Sopenharmony_ci    if (!HasObjectKey<T>(paramName)) {
13114cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
13214cf0368Sopenharmony_ci    }
13314cf0368Sopenharmony_ci    std::lock_guard<std::mutex> lock(mutex);
13414cf0368Sopenharmony_ci    obj->value_[paramName] = pramValue;
13514cf0368Sopenharmony_ci    return Udmf_ErrCode::UDMF_E_OK;
13614cf0368Sopenharmony_ci}
13714cf0368Sopenharmony_ci
13814cf0368Sopenharmony_ciOH_UdsPlainText* OH_UdsPlainText_Create()
13914cf0368Sopenharmony_ci{
14014cf0368Sopenharmony_ci    OH_UdsPlainText* plainText = new (std::nothrow) OH_UdsPlainText();
14114cf0368Sopenharmony_ci    if (plainText == nullptr) {
14214cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
14314cf0368Sopenharmony_ci        return nullptr;
14414cf0368Sopenharmony_ci    }
14514cf0368Sopenharmony_ci    plainText->obj = std::make_shared<Object>();
14614cf0368Sopenharmony_ci    plainText->obj->value_[UNIFORM_DATA_TYPE] = UDMF_META_PLAIN_TEXT;
14714cf0368Sopenharmony_ci    plainText->obj->value_[CONTENT] = "";
14814cf0368Sopenharmony_ci    plainText->obj->value_[ABSTRACT] = "";
14914cf0368Sopenharmony_ci    return plainText;
15014cf0368Sopenharmony_ci}
15114cf0368Sopenharmony_ci
15214cf0368Sopenharmony_civoid OH_UdsPlainText_Destroy(OH_UdsPlainText* pThis)
15314cf0368Sopenharmony_ci{
15414cf0368Sopenharmony_ci    if (pThis != nullptr && pThis->cid == NdkStructId::UDS_PLAIN_TEXT_STRUCT_ID) {
15514cf0368Sopenharmony_ci        delete pThis;
15614cf0368Sopenharmony_ci    }
15714cf0368Sopenharmony_ci}
15814cf0368Sopenharmony_ci
15914cf0368Sopenharmony_ciconst char* OH_UdsPlainText_GetType(OH_UdsPlainText* pThis)
16014cf0368Sopenharmony_ci{
16114cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_PLAIN_TEXT_STRUCT_ID, UNIFORM_DATA_TYPE);
16214cf0368Sopenharmony_ci}
16314cf0368Sopenharmony_ci
16414cf0368Sopenharmony_ciconst char* OH_UdsPlainText_GetContent(OH_UdsPlainText* pThis)
16514cf0368Sopenharmony_ci{
16614cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_PLAIN_TEXT_STRUCT_ID, CONTENT);
16714cf0368Sopenharmony_ci}
16814cf0368Sopenharmony_ci
16914cf0368Sopenharmony_ciconst char* OH_UdsPlainText_GetAbstract(OH_UdsPlainText* pThis)
17014cf0368Sopenharmony_ci{
17114cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_PLAIN_TEXT_STRUCT_ID, ABSTRACT);
17214cf0368Sopenharmony_ci}
17314cf0368Sopenharmony_ci
17414cf0368Sopenharmony_ciint OH_UdsPlainText_SetContent(OH_UdsPlainText* pThis, const char* content)
17514cf0368Sopenharmony_ci{
17614cf0368Sopenharmony_ci    if (content == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_PLAIN_TEXT_STRUCT_ID)) {
17714cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
17814cf0368Sopenharmony_ci    }
17914cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(CONTENT, content);
18014cf0368Sopenharmony_ci}
18114cf0368Sopenharmony_ci
18214cf0368Sopenharmony_ciint OH_UdsPlainText_SetAbstract(OH_UdsPlainText* pThis, const char* abstract)
18314cf0368Sopenharmony_ci{
18414cf0368Sopenharmony_ci    if (abstract == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_PLAIN_TEXT_STRUCT_ID)) {
18514cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
18614cf0368Sopenharmony_ci    }
18714cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(ABSTRACT, abstract);
18814cf0368Sopenharmony_ci}
18914cf0368Sopenharmony_ci
19014cf0368Sopenharmony_ciOH_UdsHyperlink* OH_UdsHyperlink_Create()
19114cf0368Sopenharmony_ci{
19214cf0368Sopenharmony_ci    OH_UdsHyperlink* hyperlink = new (std::nothrow) OH_UdsHyperlink();
19314cf0368Sopenharmony_ci    if (hyperlink == nullptr) {
19414cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
19514cf0368Sopenharmony_ci        return nullptr;
19614cf0368Sopenharmony_ci    }
19714cf0368Sopenharmony_ci    hyperlink->obj = std::make_shared<Object>();
19814cf0368Sopenharmony_ci    hyperlink->obj->value_[UNIFORM_DATA_TYPE] = UDMF_META_HYPERLINK;
19914cf0368Sopenharmony_ci    hyperlink->obj->value_[URL] = "";
20014cf0368Sopenharmony_ci    hyperlink->obj->value_[DESCRIPTION] = "";
20114cf0368Sopenharmony_ci    return hyperlink;
20214cf0368Sopenharmony_ci}
20314cf0368Sopenharmony_ci
20414cf0368Sopenharmony_civoid OH_UdsHyperlink_Destroy(OH_UdsHyperlink* pThis)
20514cf0368Sopenharmony_ci{
20614cf0368Sopenharmony_ci    if (pThis != nullptr && pThis->cid == NdkStructId::UDS_HYPERLINK_STRUCT_ID) {
20714cf0368Sopenharmony_ci        delete pThis;
20814cf0368Sopenharmony_ci    }
20914cf0368Sopenharmony_ci}
21014cf0368Sopenharmony_ci
21114cf0368Sopenharmony_ciconst char* OH_UdsHyperlink_GetType(OH_UdsHyperlink* pThis)
21214cf0368Sopenharmony_ci{
21314cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_HYPERLINK_STRUCT_ID, UNIFORM_DATA_TYPE);
21414cf0368Sopenharmony_ci}
21514cf0368Sopenharmony_ci
21614cf0368Sopenharmony_ciconst char* OH_UdsHyperlink_GetUrl(OH_UdsHyperlink* pThis)
21714cf0368Sopenharmony_ci{
21814cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_HYPERLINK_STRUCT_ID, URL);
21914cf0368Sopenharmony_ci}
22014cf0368Sopenharmony_ci
22114cf0368Sopenharmony_ciconst char* OH_UdsHyperlink_GetDescription(OH_UdsHyperlink* pThis)
22214cf0368Sopenharmony_ci{
22314cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_HYPERLINK_STRUCT_ID, DESCRIPTION);
22414cf0368Sopenharmony_ci}
22514cf0368Sopenharmony_ci
22614cf0368Sopenharmony_ciint OH_UdsHyperlink_SetUrl(OH_UdsHyperlink* pThis, const char* url)
22714cf0368Sopenharmony_ci{
22814cf0368Sopenharmony_ci    if (url == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_HYPERLINK_STRUCT_ID)) {
22914cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
23014cf0368Sopenharmony_ci    }
23114cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(URL, url);
23214cf0368Sopenharmony_ci}
23314cf0368Sopenharmony_ci
23414cf0368Sopenharmony_ciint OH_UdsHyperlink_SetDescription(OH_UdsHyperlink* pThis, const char* description)
23514cf0368Sopenharmony_ci{
23614cf0368Sopenharmony_ci    if (description == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_HYPERLINK_STRUCT_ID)) {
23714cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
23814cf0368Sopenharmony_ci    }
23914cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(DESCRIPTION, description);
24014cf0368Sopenharmony_ci}
24114cf0368Sopenharmony_ci
24214cf0368Sopenharmony_ciOH_UdsHtml* OH_UdsHtml_Create()
24314cf0368Sopenharmony_ci{
24414cf0368Sopenharmony_ci    OH_UdsHtml* html = new (std::nothrow) OH_UdsHtml();
24514cf0368Sopenharmony_ci    if (html == nullptr) {
24614cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
24714cf0368Sopenharmony_ci        return nullptr;
24814cf0368Sopenharmony_ci    }
24914cf0368Sopenharmony_ci    html->obj = std::make_shared<Object>();
25014cf0368Sopenharmony_ci    html->obj->value_[UNIFORM_DATA_TYPE] = UDMF_META_HTML;
25114cf0368Sopenharmony_ci    html->obj->value_[HTML_CONTENT] = "";
25214cf0368Sopenharmony_ci    html->obj->value_[PLAIN_CONTENT] = "";
25314cf0368Sopenharmony_ci    return html;
25414cf0368Sopenharmony_ci}
25514cf0368Sopenharmony_ci
25614cf0368Sopenharmony_civoid OH_UdsHtml_Destroy(OH_UdsHtml* pThis)
25714cf0368Sopenharmony_ci{
25814cf0368Sopenharmony_ci    if (pThis != nullptr && pThis->cid == NdkStructId::UDS_HTML_STRUCT_ID) {
25914cf0368Sopenharmony_ci        delete pThis;
26014cf0368Sopenharmony_ci    }
26114cf0368Sopenharmony_ci}
26214cf0368Sopenharmony_ci
26314cf0368Sopenharmony_ciconst char* OH_UdsHtml_GetType(OH_UdsHtml* pThis)
26414cf0368Sopenharmony_ci{
26514cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_HTML_STRUCT_ID, UNIFORM_DATA_TYPE);
26614cf0368Sopenharmony_ci}
26714cf0368Sopenharmony_ci
26814cf0368Sopenharmony_ciconst char* OH_UdsHtml_GetContent(OH_UdsHtml* pThis)
26914cf0368Sopenharmony_ci{
27014cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_HTML_STRUCT_ID, HTML_CONTENT);
27114cf0368Sopenharmony_ci}
27214cf0368Sopenharmony_ci
27314cf0368Sopenharmony_ciconst char* OH_UdsHtml_GetPlainContent(OH_UdsHtml* pThis)
27414cf0368Sopenharmony_ci{
27514cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_HTML_STRUCT_ID, PLAIN_CONTENT);
27614cf0368Sopenharmony_ci}
27714cf0368Sopenharmony_ci
27814cf0368Sopenharmony_ciint OH_UdsHtml_SetContent(OH_UdsHtml* pThis, const char* content)
27914cf0368Sopenharmony_ci{
28014cf0368Sopenharmony_ci    if (content == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_HTML_STRUCT_ID)) {
28114cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
28214cf0368Sopenharmony_ci    }
28314cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(HTML_CONTENT, content);
28414cf0368Sopenharmony_ci}
28514cf0368Sopenharmony_ci
28614cf0368Sopenharmony_ciint OH_UdsHtml_SetPlainContent(OH_UdsHtml* pThis, const char* plainContent)
28714cf0368Sopenharmony_ci{
28814cf0368Sopenharmony_ci    if (plainContent == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_HTML_STRUCT_ID)) {
28914cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
29014cf0368Sopenharmony_ci    }
29114cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(PLAIN_CONTENT, plainContent);
29214cf0368Sopenharmony_ci}
29314cf0368Sopenharmony_ci
29414cf0368Sopenharmony_ciOH_UdsAppItem* OH_UdsAppItem_Create()
29514cf0368Sopenharmony_ci{
29614cf0368Sopenharmony_ci    OH_UdsAppItem* appItem = new (std::nothrow) OH_UdsAppItem();
29714cf0368Sopenharmony_ci    if (appItem == nullptr) {
29814cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
29914cf0368Sopenharmony_ci        return nullptr;
30014cf0368Sopenharmony_ci    }
30114cf0368Sopenharmony_ci    appItem->obj = std::make_shared<Object>();
30214cf0368Sopenharmony_ci    appItem->obj->value_[UNIFORM_DATA_TYPE] = UDMF_META_OPENHARMONY_APP_ITEM;
30314cf0368Sopenharmony_ci    appItem->obj->value_[APP_ID] = "";
30414cf0368Sopenharmony_ci    appItem->obj->value_[APP_NAME] = "";
30514cf0368Sopenharmony_ci    appItem->obj->value_[APP_ICON_ID] = "";
30614cf0368Sopenharmony_ci    appItem->obj->value_[APP_LABEL_ID] = "";
30714cf0368Sopenharmony_ci    appItem->obj->value_[BUNDLE_NAME] = "";
30814cf0368Sopenharmony_ci    appItem->obj->value_[ABILITY_NAME] = "";
30914cf0368Sopenharmony_ci    return appItem;
31014cf0368Sopenharmony_ci}
31114cf0368Sopenharmony_ci
31214cf0368Sopenharmony_civoid OH_UdsAppItem_Destroy(OH_UdsAppItem* pThis)
31314cf0368Sopenharmony_ci{
31414cf0368Sopenharmony_ci    if (pThis != nullptr && pThis->cid == NdkStructId::UDS_APP_ITEM_STRUCT_ID) {
31514cf0368Sopenharmony_ci        delete pThis;
31614cf0368Sopenharmony_ci    }
31714cf0368Sopenharmony_ci}
31814cf0368Sopenharmony_ci
31914cf0368Sopenharmony_ciconst char* OH_UdsAppItem_GetType(OH_UdsAppItem* pThis)
32014cf0368Sopenharmony_ci{
32114cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID, UNIFORM_DATA_TYPE);
32214cf0368Sopenharmony_ci}
32314cf0368Sopenharmony_ci
32414cf0368Sopenharmony_ciconst char* OH_UdsAppItem_GetId(OH_UdsAppItem* pThis)
32514cf0368Sopenharmony_ci{
32614cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID, APP_ID);
32714cf0368Sopenharmony_ci}
32814cf0368Sopenharmony_ci
32914cf0368Sopenharmony_ciconst char* OH_UdsAppItem_GetName(OH_UdsAppItem* pThis)
33014cf0368Sopenharmony_ci{
33114cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID, APP_NAME);
33214cf0368Sopenharmony_ci}
33314cf0368Sopenharmony_ci
33414cf0368Sopenharmony_ciconst char* OH_UdsAppItem_GetIconId(OH_UdsAppItem* pThis)
33514cf0368Sopenharmony_ci{
33614cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID, APP_ICON_ID);
33714cf0368Sopenharmony_ci}
33814cf0368Sopenharmony_ci
33914cf0368Sopenharmony_ciconst char* OH_UdsAppItem_GetLabelId(OH_UdsAppItem* pThis)
34014cf0368Sopenharmony_ci{
34114cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID, APP_LABEL_ID);
34214cf0368Sopenharmony_ci}
34314cf0368Sopenharmony_ci
34414cf0368Sopenharmony_ciconst char* OH_UdsAppItem_GetBundleName(OH_UdsAppItem* pThis)
34514cf0368Sopenharmony_ci{
34614cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID, BUNDLE_NAME);
34714cf0368Sopenharmony_ci}
34814cf0368Sopenharmony_ci
34914cf0368Sopenharmony_ciconst char* OH_UdsAppItem_GetAbilityName(OH_UdsAppItem* pThis)
35014cf0368Sopenharmony_ci{
35114cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID, ABILITY_NAME);
35214cf0368Sopenharmony_ci}
35314cf0368Sopenharmony_ci
35414cf0368Sopenharmony_ciint OH_UdsAppItem_SetId(OH_UdsAppItem* pThis, const char* appId)
35514cf0368Sopenharmony_ci{
35614cf0368Sopenharmony_ci    if (appId == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID)) {
35714cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
35814cf0368Sopenharmony_ci    }
35914cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(APP_ID, appId);
36014cf0368Sopenharmony_ci}
36114cf0368Sopenharmony_ci
36214cf0368Sopenharmony_ciint OH_UdsAppItem_SetName(OH_UdsAppItem* pThis, const char* appName)
36314cf0368Sopenharmony_ci{
36414cf0368Sopenharmony_ci    if (appName == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID)) {
36514cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
36614cf0368Sopenharmony_ci    }
36714cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(APP_NAME, appName);
36814cf0368Sopenharmony_ci}
36914cf0368Sopenharmony_ci
37014cf0368Sopenharmony_ciint OH_UdsAppItem_SetIconId(OH_UdsAppItem* pThis, const char* appIconId)
37114cf0368Sopenharmony_ci{
37214cf0368Sopenharmony_ci    if (appIconId == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID)) {
37314cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
37414cf0368Sopenharmony_ci    }
37514cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(APP_ICON_ID, appIconId);
37614cf0368Sopenharmony_ci}
37714cf0368Sopenharmony_ci
37814cf0368Sopenharmony_ciint OH_UdsAppItem_SetLabelId(OH_UdsAppItem* pThis, const char* appLabelId)
37914cf0368Sopenharmony_ci{
38014cf0368Sopenharmony_ci    if (appLabelId == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID)) {
38114cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
38214cf0368Sopenharmony_ci    }
38314cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(APP_LABEL_ID, appLabelId);
38414cf0368Sopenharmony_ci}
38514cf0368Sopenharmony_ci
38614cf0368Sopenharmony_ciint OH_UdsAppItem_SetBundleName(OH_UdsAppItem* pThis, const char* bundleName)
38714cf0368Sopenharmony_ci{
38814cf0368Sopenharmony_ci    if (bundleName == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID)) {
38914cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
39014cf0368Sopenharmony_ci    }
39114cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(BUNDLE_NAME, bundleName);
39214cf0368Sopenharmony_ci}
39314cf0368Sopenharmony_ci
39414cf0368Sopenharmony_ciint OH_UdsAppItem_SetAbilityName(OH_UdsAppItem* pThis, const char* abilityName)
39514cf0368Sopenharmony_ci{
39614cf0368Sopenharmony_ci    if (abilityName == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_APP_ITEM_STRUCT_ID)) {
39714cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
39814cf0368Sopenharmony_ci    }
39914cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(ABILITY_NAME, abilityName);
40014cf0368Sopenharmony_ci}
40114cf0368Sopenharmony_ci
40214cf0368Sopenharmony_ciOH_UdsFileUri* OH_UdsFileUri_Create()
40314cf0368Sopenharmony_ci{
40414cf0368Sopenharmony_ci    OH_UdsFileUri* fileUri = new (std::nothrow) OH_UdsFileUri();
40514cf0368Sopenharmony_ci    if (fileUri == nullptr) {
40614cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
40714cf0368Sopenharmony_ci        return nullptr;
40814cf0368Sopenharmony_ci    }
40914cf0368Sopenharmony_ci    fileUri->obj = std::make_shared<Object>();
41014cf0368Sopenharmony_ci    fileUri->obj->value_[UNIFORM_DATA_TYPE] = UDMF_META_GENERAL_FILE_URI;
41114cf0368Sopenharmony_ci    fileUri->obj->value_[FILE_URI_PARAM] = "";
41214cf0368Sopenharmony_ci    fileUri->obj->value_[FILE_TYPE] = "";
41314cf0368Sopenharmony_ci    return fileUri;
41414cf0368Sopenharmony_ci}
41514cf0368Sopenharmony_ci
41614cf0368Sopenharmony_civoid OH_UdsFileUri_Destroy(OH_UdsFileUri* pThis)
41714cf0368Sopenharmony_ci{
41814cf0368Sopenharmony_ci    if (pThis != nullptr && pThis->cid == NdkStructId::UDS_FILE_URI_STRUCT_ID) {
41914cf0368Sopenharmony_ci        delete pThis;
42014cf0368Sopenharmony_ci    }
42114cf0368Sopenharmony_ci}
42214cf0368Sopenharmony_ci
42314cf0368Sopenharmony_ciconst char* OH_UdsFileUri_GetType(OH_UdsFileUri* pThis)
42414cf0368Sopenharmony_ci{
42514cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_FILE_URI_STRUCT_ID, UNIFORM_DATA_TYPE);
42614cf0368Sopenharmony_ci}
42714cf0368Sopenharmony_ci
42814cf0368Sopenharmony_ciconst char* OH_UdsFileUri_GetFileUri(OH_UdsFileUri* pThis)
42914cf0368Sopenharmony_ci{
43014cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_FILE_URI_STRUCT_ID, FILE_URI_PARAM);
43114cf0368Sopenharmony_ci}
43214cf0368Sopenharmony_ci
43314cf0368Sopenharmony_ciconst char* OH_UdsFileUri_GetFileType(OH_UdsFileUri* pThis)
43414cf0368Sopenharmony_ci{
43514cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_FILE_URI_STRUCT_ID, FILE_TYPE);
43614cf0368Sopenharmony_ci}
43714cf0368Sopenharmony_ci
43814cf0368Sopenharmony_ciint OH_UdsFileUri_SetFileUri(OH_UdsFileUri* pThis, const char* fileUri)
43914cf0368Sopenharmony_ci{
44014cf0368Sopenharmony_ci    if (fileUri == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_FILE_URI_STRUCT_ID)) {
44114cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
44214cf0368Sopenharmony_ci    }
44314cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(FILE_URI_PARAM, fileUri);
44414cf0368Sopenharmony_ci}
44514cf0368Sopenharmony_ci
44614cf0368Sopenharmony_ciint OH_UdsFileUri_SetFileType(OH_UdsFileUri* pThis, const char* fileType)
44714cf0368Sopenharmony_ci{
44814cf0368Sopenharmony_ci    if (fileType == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_FILE_URI_STRUCT_ID)) {
44914cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
45014cf0368Sopenharmony_ci    }
45114cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(FILE_TYPE, fileType);
45214cf0368Sopenharmony_ci}
45314cf0368Sopenharmony_ci
45414cf0368Sopenharmony_ciOH_UdsPixelMap* OH_UdsPixelMap_Create()
45514cf0368Sopenharmony_ci{
45614cf0368Sopenharmony_ci    OH_UdsPixelMap* pixelMap = new (std::nothrow) OH_UdsPixelMap();
45714cf0368Sopenharmony_ci    if (pixelMap == nullptr) {
45814cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
45914cf0368Sopenharmony_ci        return nullptr;
46014cf0368Sopenharmony_ci    }
46114cf0368Sopenharmony_ci    pixelMap->obj = std::make_shared<Object>();
46214cf0368Sopenharmony_ci    pixelMap->obj->value_[UNIFORM_DATA_TYPE] = UDMF_META_OPENHARMONY_PIXEL_MAP;
46314cf0368Sopenharmony_ci    pixelMap->obj->value_[PIXEL_MAP] = std::make_shared<OHOS::Media::PixelMap>();
46414cf0368Sopenharmony_ci    return pixelMap;
46514cf0368Sopenharmony_ci}
46614cf0368Sopenharmony_ci
46714cf0368Sopenharmony_civoid OH_UdsPixelMap_Destroy(OH_UdsPixelMap* pThis)
46814cf0368Sopenharmony_ci{
46914cf0368Sopenharmony_ci    if (pThis != nullptr && pThis->cid == NdkStructId::UDS_PIXEL_MAP_STRUCT_ID) {
47014cf0368Sopenharmony_ci        delete pThis;
47114cf0368Sopenharmony_ci    }
47214cf0368Sopenharmony_ci}
47314cf0368Sopenharmony_ci
47414cf0368Sopenharmony_ciconst char* OH_UdsPixelMap_GetType(OH_UdsPixelMap* pThis)
47514cf0368Sopenharmony_ci{
47614cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_PIXEL_MAP_STRUCT_ID, UNIFORM_DATA_TYPE);
47714cf0368Sopenharmony_ci}
47814cf0368Sopenharmony_ci
47914cf0368Sopenharmony_civoid OH_UdsPixelMap_GetPixelMap(OH_UdsPixelMap* pThis, OH_PixelmapNative* pixelmapNative)
48014cf0368Sopenharmony_ci{
48114cf0368Sopenharmony_ci    if (IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_PIXEL_MAP_STRUCT_ID)) {
48214cf0368Sopenharmony_ci        return;
48314cf0368Sopenharmony_ci    }
48414cf0368Sopenharmony_ci    auto pixelMap = pThis->GetUdsValue<std::shared_ptr<OHOS::Media::PixelMap>>(PIXEL_MAP);
48514cf0368Sopenharmony_ci    if (pixelMap == nullptr) {
48614cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Get pixelMap value is null.");
48714cf0368Sopenharmony_ci        return;
48814cf0368Sopenharmony_ci    }
48914cf0368Sopenharmony_ci    *pixelmapNative = OH_PixelmapNative(*pixelMap);
49014cf0368Sopenharmony_ci}
49114cf0368Sopenharmony_ci
49214cf0368Sopenharmony_ciint OH_UdsPixelMap_SetPixelMap(OH_UdsPixelMap* pThis, OH_PixelmapNative* pixelmapNative)
49314cf0368Sopenharmony_ci{
49414cf0368Sopenharmony_ci    if (pixelmapNative == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_PIXEL_MAP_STRUCT_ID)) {
49514cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
49614cf0368Sopenharmony_ci    }
49714cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::shared_ptr<OHOS::Media::PixelMap>>(PIXEL_MAP, pixelmapNative->GetInnerPixelmap());
49814cf0368Sopenharmony_ci}
49914cf0368Sopenharmony_ci
50014cf0368Sopenharmony_ciOH_UdsArrayBuffer* OH_UdsArrayBuffer_Create()
50114cf0368Sopenharmony_ci{
50214cf0368Sopenharmony_ci    auto *buffer = new (std::nothrow) OH_UdsArrayBuffer();
50314cf0368Sopenharmony_ci    if (buffer == nullptr) {
50414cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
50514cf0368Sopenharmony_ci        return nullptr;
50614cf0368Sopenharmony_ci    }
50714cf0368Sopenharmony_ci    buffer->obj = std::make_shared<Object>();
50814cf0368Sopenharmony_ci    buffer->obj->value_[UNIFORM_DATA_TYPE] = "";
50914cf0368Sopenharmony_ci    buffer->obj->value_[ARRAY_BUFFER] = std::vector<uint8_t>();
51014cf0368Sopenharmony_ci    buffer->obj->value_[ARRAY_BUFFER_LENGTH] = 0;
51114cf0368Sopenharmony_ci    return buffer;
51214cf0368Sopenharmony_ci}
51314cf0368Sopenharmony_ci
51414cf0368Sopenharmony_ciint OH_UdsArrayBuffer_Destroy(OH_UdsArrayBuffer* buffer)
51514cf0368Sopenharmony_ci{
51614cf0368Sopenharmony_ci    if (IsInvalidUdsObjectPtr(buffer, NdkStructId::UDS_ARRAY_BUFFER_STRUCT_ID)) {
51714cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Param is invalid.");
51814cf0368Sopenharmony_ci        return UDMF_E_INVALID_PARAM;
51914cf0368Sopenharmony_ci    }
52014cf0368Sopenharmony_ci    delete buffer;
52114cf0368Sopenharmony_ci    return UDMF_E_OK;
52214cf0368Sopenharmony_ci}
52314cf0368Sopenharmony_ci
52414cf0368Sopenharmony_ciint OH_UdsArrayBuffer_SetData(OH_UdsArrayBuffer* buffer, unsigned char* data, unsigned int len)
52514cf0368Sopenharmony_ci{
52614cf0368Sopenharmony_ci    if (data == nullptr || len == 0 || IsInvalidUdsObjectPtr(buffer, NdkStructId::UDS_ARRAY_BUFFER_STRUCT_ID) ||
52714cf0368Sopenharmony_ci        len > MAX_GENERAL_ENTRY_SIZE) {
52814cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Param is invalid.");
52914cf0368Sopenharmony_ci        return UDMF_E_INVALID_PARAM;
53014cf0368Sopenharmony_ci    }
53114cf0368Sopenharmony_ci    std::vector<uint8_t> arrayBuffer(data, data + len);
53214cf0368Sopenharmony_ci    int ret = buffer->SetUdsValue<std::vector<uint8_t>>(ARRAY_BUFFER, arrayBuffer);
53314cf0368Sopenharmony_ci    if (ret != UDMF_E_OK) {
53414cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory. ret: %{public}d", ret);
53514cf0368Sopenharmony_ci        return ret;
53614cf0368Sopenharmony_ci    }
53714cf0368Sopenharmony_ci    ret = buffer->SetUdsValue<int>(ARRAY_BUFFER_LENGTH, static_cast<int>(len));
53814cf0368Sopenharmony_ci    return ret;
53914cf0368Sopenharmony_ci}
54014cf0368Sopenharmony_ci
54114cf0368Sopenharmony_ciint OH_UdsArrayBuffer_GetData(OH_UdsArrayBuffer* buffer, unsigned char** data, unsigned int* len)
54214cf0368Sopenharmony_ci{
54314cf0368Sopenharmony_ci    if (IsInvalidUdsObjectPtr(buffer, NdkStructId::UDS_ARRAY_BUFFER_STRUCT_ID)) {
54414cf0368Sopenharmony_ci        return UDMF_E_INVALID_PARAM;
54514cf0368Sopenharmony_ci    }
54614cf0368Sopenharmony_ci    return GetUdsUint8Value(buffer, ARRAY_BUFFER, ARRAY_BUFFER_LENGTH, data, len);
54714cf0368Sopenharmony_ci}
54814cf0368Sopenharmony_ci
54914cf0368Sopenharmony_ciOH_UdsContentForm* OH_UdsContentForm_Create()
55014cf0368Sopenharmony_ci{
55114cf0368Sopenharmony_ci    auto contentForm = new (std::nothrow) OH_UdsContentForm();
55214cf0368Sopenharmony_ci    if (contentForm == nullptr) {
55314cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory.");
55414cf0368Sopenharmony_ci        return nullptr;
55514cf0368Sopenharmony_ci    }
55614cf0368Sopenharmony_ci    contentForm->obj = std::make_shared<Object>();
55714cf0368Sopenharmony_ci    contentForm->obj->value_[UNIFORM_DATA_TYPE] = UDMF_METE_GENERAL_CONTENT_FORM;
55814cf0368Sopenharmony_ci    contentForm->obj->value_[THUMB_DATA] = std::vector<uint8_t>();
55914cf0368Sopenharmony_ci    contentForm->obj->value_[THUMB_DATA_LENGTH] = 0;
56014cf0368Sopenharmony_ci    contentForm->obj->value_[DESCRIPTION] = "";
56114cf0368Sopenharmony_ci    contentForm->obj->value_[TITLE] = "";
56214cf0368Sopenharmony_ci    contentForm->obj->value_[APP_ICON] = std::vector<uint8_t>();
56314cf0368Sopenharmony_ci    contentForm->obj->value_[APP_ICON_LENGTH] = 0;
56414cf0368Sopenharmony_ci    contentForm->obj->value_[APP_NAME] = "";
56514cf0368Sopenharmony_ci    contentForm->obj->value_[LINK_URL] = "";
56614cf0368Sopenharmony_ci    return contentForm;
56714cf0368Sopenharmony_ci}
56814cf0368Sopenharmony_ci
56914cf0368Sopenharmony_civoid OH_UdsContentForm_Destroy(OH_UdsContentForm* pThis)
57014cf0368Sopenharmony_ci{
57114cf0368Sopenharmony_ci    if (pThis != nullptr && pThis->cid == NdkStructId::UDS_CONTENT_FORM_STRUCT_ID) {
57214cf0368Sopenharmony_ci        delete pThis;
57314cf0368Sopenharmony_ci    }
57414cf0368Sopenharmony_ci}
57514cf0368Sopenharmony_ci
57614cf0368Sopenharmony_ciconst char* OH_UdsContentForm_GetType(OH_UdsContentForm* pThis)
57714cf0368Sopenharmony_ci{
57814cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID, UNIFORM_DATA_TYPE);
57914cf0368Sopenharmony_ci}
58014cf0368Sopenharmony_ci
58114cf0368Sopenharmony_ciint OH_UdsContentForm_GetThumbData(OH_UdsContentForm* pThis, unsigned char** thumbData, unsigned int* len)
58214cf0368Sopenharmony_ci{
58314cf0368Sopenharmony_ci    if (IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID)) {
58414cf0368Sopenharmony_ci        return UDMF_E_INVALID_PARAM;
58514cf0368Sopenharmony_ci    }
58614cf0368Sopenharmony_ci    return GetUdsUint8Value(pThis, THUMB_DATA, THUMB_DATA_LENGTH, thumbData, len);
58714cf0368Sopenharmony_ci}
58814cf0368Sopenharmony_ci
58914cf0368Sopenharmony_ciconst char* OH_UdsContentForm_GetDescription(OH_UdsContentForm* pThis)
59014cf0368Sopenharmony_ci{
59114cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID, DESCRIPTION);
59214cf0368Sopenharmony_ci}
59314cf0368Sopenharmony_ci
59414cf0368Sopenharmony_ciconst char* OH_UdsContentForm_GetTitle(OH_UdsContentForm* pThis)
59514cf0368Sopenharmony_ci{
59614cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID, TITLE);
59714cf0368Sopenharmony_ci}
59814cf0368Sopenharmony_ci
59914cf0368Sopenharmony_ciint OH_UdsContentForm_GetAppIcon(OH_UdsContentForm* pThis, unsigned char** appIcon, unsigned int* len)
60014cf0368Sopenharmony_ci{
60114cf0368Sopenharmony_ci    if (IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID)) {
60214cf0368Sopenharmony_ci        return UDMF_E_INVALID_PARAM;
60314cf0368Sopenharmony_ci    }
60414cf0368Sopenharmony_ci    return GetUdsUint8Value(pThis, APP_ICON, APP_ICON_LENGTH, appIcon, len);
60514cf0368Sopenharmony_ci}
60614cf0368Sopenharmony_ci
60714cf0368Sopenharmony_ciconst char* OH_UdsContentForm_GetAppName(OH_UdsContentForm* pThis)
60814cf0368Sopenharmony_ci{
60914cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID, APP_NAME);
61014cf0368Sopenharmony_ci}
61114cf0368Sopenharmony_ci
61214cf0368Sopenharmony_ciconst char* OH_UdsContentForm_GetLinkUri(OH_UdsContentForm* pThis)
61314cf0368Sopenharmony_ci{
61414cf0368Sopenharmony_ci    return GetUdsStrValue(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID, LINK_URL);
61514cf0368Sopenharmony_ci}
61614cf0368Sopenharmony_ci
61714cf0368Sopenharmony_ciint OH_UdsContentForm_SetThumbData(OH_UdsContentForm* pThis, const unsigned char* thumbData, unsigned int len)
61814cf0368Sopenharmony_ci{
61914cf0368Sopenharmony_ci    if (thumbData == nullptr || len == 0 || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID) ||
62014cf0368Sopenharmony_ci        len > MAX_GENERAL_ENTRY_SIZE) {
62114cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Param is invalid.");
62214cf0368Sopenharmony_ci        return UDMF_E_INVALID_PARAM;
62314cf0368Sopenharmony_ci    }
62414cf0368Sopenharmony_ci    std::vector<uint8_t> data(thumbData, thumbData + len);
62514cf0368Sopenharmony_ci    int ret = pThis->SetUdsValue<std::vector<uint8_t>>(THUMB_DATA, data);
62614cf0368Sopenharmony_ci    if (ret != UDMF_E_OK) {
62714cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory. ret: %{public}d", ret);
62814cf0368Sopenharmony_ci        return ret;
62914cf0368Sopenharmony_ci    }
63014cf0368Sopenharmony_ci    ret = pThis->SetUdsValue<int>(THUMB_DATA_LENGTH, static_cast<int>(len));
63114cf0368Sopenharmony_ci    return ret;
63214cf0368Sopenharmony_ci}
63314cf0368Sopenharmony_ci
63414cf0368Sopenharmony_ciint OH_UdsContentForm_SetDescription(OH_UdsContentForm* pThis, const char* description)
63514cf0368Sopenharmony_ci{
63614cf0368Sopenharmony_ci    if (description == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID)) {
63714cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
63814cf0368Sopenharmony_ci    }
63914cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(DESCRIPTION, description);
64014cf0368Sopenharmony_ci}
64114cf0368Sopenharmony_ci
64214cf0368Sopenharmony_ciint OH_UdsContentForm_SetTitle(OH_UdsContentForm* pThis, const char* title)
64314cf0368Sopenharmony_ci{
64414cf0368Sopenharmony_ci    if (title == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID)) {
64514cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
64614cf0368Sopenharmony_ci    }
64714cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(TITLE, title);
64814cf0368Sopenharmony_ci}
64914cf0368Sopenharmony_ci
65014cf0368Sopenharmony_ciint OH_UdsContentForm_SetAppIcon(OH_UdsContentForm* pThis, const unsigned char* appIcon, unsigned int len)
65114cf0368Sopenharmony_ci{
65214cf0368Sopenharmony_ci    if (appIcon == nullptr || len == 0 || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID) ||
65314cf0368Sopenharmony_ci        len > MAX_GENERAL_ENTRY_SIZE) {
65414cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Param is invalid.");
65514cf0368Sopenharmony_ci        return UDMF_E_INVALID_PARAM;
65614cf0368Sopenharmony_ci    }
65714cf0368Sopenharmony_ci    std::vector<uint8_t> data(appIcon, appIcon + len);
65814cf0368Sopenharmony_ci    int ret = pThis->SetUdsValue<std::vector<uint8_t>>(APP_ICON, data);
65914cf0368Sopenharmony_ci    if (ret != UDMF_E_OK) {
66014cf0368Sopenharmony_ci        LOG_ERROR(UDMF_CAPI, "Failed to apply for memory. ret: %{public}d", ret);
66114cf0368Sopenharmony_ci        return ret;
66214cf0368Sopenharmony_ci    }
66314cf0368Sopenharmony_ci    ret = pThis->SetUdsValue<int>(APP_ICON_LENGTH, static_cast<int>(len));
66414cf0368Sopenharmony_ci    return ret;
66514cf0368Sopenharmony_ci}
66614cf0368Sopenharmony_ci
66714cf0368Sopenharmony_ciint OH_UdsContentForm_SetAppName(OH_UdsContentForm* pThis, const char* appName)
66814cf0368Sopenharmony_ci{
66914cf0368Sopenharmony_ci    if (appName == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID)) {
67014cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
67114cf0368Sopenharmony_ci    }
67214cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(APP_NAME, appName);
67314cf0368Sopenharmony_ci}
67414cf0368Sopenharmony_ci
67514cf0368Sopenharmony_ciint OH_UdsContentForm_SetLinkUri(OH_UdsContentForm* pThis, const char* linkUri)
67614cf0368Sopenharmony_ci{
67714cf0368Sopenharmony_ci    if (linkUri == nullptr || IsInvalidUdsObjectPtr(pThis, NdkStructId::UDS_CONTENT_FORM_STRUCT_ID)) {
67814cf0368Sopenharmony_ci        return Udmf_ErrCode::UDMF_E_INVALID_PARAM;
67914cf0368Sopenharmony_ci    }
68014cf0368Sopenharmony_ci    return pThis->SetUdsValue<std::string>(LINK_URL, linkUri);
68114cf0368Sopenharmony_ci}