From 0c29b93461471169a4bd5cb04c985597a98f4c25 Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Tue, 22 Jul 2025 21:39:40 +0800 Subject: [PATCH 1/9] fix multi entry authorize Signed-off-by: wenjinchao --- .../udmf/preprocess/preprocess_utils.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp index 361358841..a46a68892 100644 --- a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp +++ b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp @@ -359,13 +359,17 @@ void PreProcessUtils::ProcessFileType(std::vector if (!PreProcessUtils::IsFileType(record)) { continue; } - auto obj = std::get>(record->GetOriginValue()); - if (obj == nullptr) { - ZLOGE("ValueType is not Object, Not convert to remote uri!"); - continue; - } - if (!callback(obj)) { - continue; + auto entries = record->GetEntries(); + for (const auto &[type, value] : entries) { + if (!std::holds_alternative>(value)) { + continue; + } + auto obj = std::get>(value); + if (obj == nullptr) { + ZLOGE("ValueType is not Object, Not convert to remote uri!"); + continue; + } + callback(obj); } } } -- Gitee From e9ef951fa63d080054775ab66b41d9a34177efb1 Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Wed, 23 Jul 2025 16:37:42 +0800 Subject: [PATCH 2/9] add Signed-off-by: wenjinchao --- .../test/udmf_preprocess_utils_test.cpp | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp index c42f223a7..0974896ea 100644 --- a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp +++ b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp @@ -158,10 +158,34 @@ HWTEST_F(UdmfPreProcessUtilsTest, GetInstIndex001, TestSize.Level1) */ HWTEST_F(UdmfPreProcessUtilsTest, ProcessFileType001, TestSize.Level1) { - std::vector> records = { nullptr }; - std::function)> callback; - PreProcessUtils preProcessUtils; - EXPECT_NO_FATAL_FAILURE(preProcessUtils.ProcessFileType(records, callback)); + std::shared_ptr record = std::make_shared(); + std::shared_ptr obj = std::make_shared(); + obj->value_[UNIFORM_DATA_TYPE] = "general.file-uri"; + obj->value_[FILE_URI_PARAM] = "http://demo.com.html"; + obj->value_[FILE_TYPE] = "general.html"; + record->AddEntry("general.file-uri", obj); + record->AddEntry("general.file-uri", "1111"); + std::shared_ptr obj1 = std::make_shared(); + obj1->value_[UNIFORM_DATA_TYPE] = "general.file-uri"; + obj1->value_[FILE_URI_PARAM] = "http://demo.com1.png"; + obj1->value_[FILE_TYPE] = "general.png"; + record->AddEntry("general.file-uri", obj1); + + std::shared_ptr record1 = std::make_shared(); + record1->AddEntry("general.file-uri", obj1); + record1->AddEntry("general.file-uri", std::shared_ptr()); + std::vector> records = { record, record1 }; + std::vector uris; + PreProcessUtils::ProcessFileType(records, [&uris](std::shared_ptr obj) { + std::string oriUri; + obj->GetValue(ORI_URI, oriUri); + if (oriUri.empty()) { + return false; + } + uris.push_back(oriUri); + return true; + }); + EXPECT_EQ(uris.size(), 3); } /** -- Gitee From 0ced374a31c4bae435106957722fbd4d475b6f24 Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Wed, 23 Jul 2025 16:47:24 +0800 Subject: [PATCH 3/9] add Signed-off-by: wenjinchao --- .../service/udmf/preprocess/preprocess_utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp index a46a68892..e091df3e6 100644 --- a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp +++ b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp @@ -360,7 +360,7 @@ void PreProcessUtils::ProcessFileType(std::vector continue; } auto entries = record->GetEntries(); - for (const auto &[type, value] : entries) { + for (const auto &[type, value] : *entries) { if (!std::holds_alternative>(value)) { continue; } -- Gitee From 6e5ffe81801bf29f2abe3b4de5f1fd2de3ea1c16 Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Fri, 25 Jul 2025 15:58:11 +0800 Subject: [PATCH 4/9] add Signed-off-by: wenjinchao --- .../service/test/udmf_preprocess_utils_test.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp index 0974896ea..cb2b44c52 100644 --- a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp +++ b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp @@ -166,14 +166,12 @@ HWTEST_F(UdmfPreProcessUtilsTest, ProcessFileType001, TestSize.Level1) record->AddEntry("general.file-uri", obj); record->AddEntry("general.file-uri", "1111"); std::shared_ptr obj1 = std::make_shared(); - obj1->value_[UNIFORM_DATA_TYPE] = "general.file-uri"; - obj1->value_[FILE_URI_PARAM] = "http://demo.com1.png"; - obj1->value_[FILE_TYPE] = "general.png"; - record->AddEntry("general.file-uri", obj1); + obj1->value_[UNIFORM_DATA_TYPE] = "general.content-form"; + obj1->value_["title"] = "test"; + record->AddEntry("general.content-form", obj1); std::shared_ptr record1 = std::make_shared(); record1->AddEntry("general.file-uri", obj1); - record1->AddEntry("general.file-uri", std::shared_ptr()); std::vector> records = { record, record1 }; std::vector uris; PreProcessUtils::ProcessFileType(records, [&uris](std::shared_ptr obj) { @@ -185,7 +183,7 @@ HWTEST_F(UdmfPreProcessUtilsTest, ProcessFileType001, TestSize.Level1) uris.push_back(oriUri); return true; }); - EXPECT_EQ(uris.size(), 3); + EXPECT_EQ(uris.size(), 2); } /** -- Gitee From b74399f537f1492b1fb4af70b22a078531cab6c6 Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Fri, 25 Jul 2025 16:28:36 +0800 Subject: [PATCH 5/9] add Signed-off-by: wenjinchao --- .../udmf/preprocess/preprocess_utils.cpp | 20 ++++--------------- .../udmf/preprocess/preprocess_utils.h | 1 - 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp index e091df3e6..e65cc5182 100644 --- a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp +++ b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp @@ -211,18 +211,6 @@ void PreProcessUtils::SetRemoteData(UnifiedData &data) }); } -bool PreProcessUtils::IsFileType(std::shared_ptr record) -{ - if (record == nullptr) { - return false; - } - if (!std::holds_alternative>(record->GetOriginValue())) { - return false; - } - auto obj = std::get>(record->GetOriginValue()); - return obj->value_.find(ORI_URI) != obj->value_.end(); -} - int32_t PreProcessUtils::SetRemoteUri(uint32_t tokenId, UnifiedData &data) { std::vector uris; @@ -356,9 +344,6 @@ void PreProcessUtils::ProcessFileType(std::vector if (record == nullptr) { continue; } - if (!PreProcessUtils::IsFileType(record)) { - continue; - } auto entries = record->GetEntries(); for (const auto &[type, value] : *entries) { if (!std::holds_alternative>(value)) { @@ -369,7 +354,10 @@ void PreProcessUtils::ProcessFileType(std::vector ZLOGE("ValueType is not Object, Not convert to remote uri!"); continue; } - callback(obj); + std::string dataType; + if (obj->GetValue(UNIFORM_DATA_TYPE, dataType) && dataType == GENERAL_FILE_URI) { + callback(obj); + } } } } diff --git a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.h b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.h index 366dc17c6..2eb84e0a8 100644 --- a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.h +++ b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.h @@ -49,7 +49,6 @@ public: private: static bool CheckUriAuthorization(const std::vector& uris, uint32_t tokenId); static int32_t GetDfsUrisFromLocal(const std::vector &uris, int32_t userId, UnifiedData &data); - static bool IsFileType(std::shared_ptr record); static std::string GetSdkVersionByToken(uint32_t tokenId); static bool GetSpecificBundleName(const std::string &bundleName, int32_t appIndex, std::string &specificBundleName); }; -- Gitee From c9cce5fe8901baf641bbd34d4269c28833ce31df Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Fri, 25 Jul 2025 17:42:13 +0800 Subject: [PATCH 6/9] add Signed-off-by: wenjinchao --- .../test/udmf_preprocess_utils_test.cpp | 7 ++-- .../udmf/preprocess/preprocess_utils.cpp | 32 +++++++++++-------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp index cb2b44c52..149ab8d5a 100644 --- a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp +++ b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp @@ -164,7 +164,6 @@ HWTEST_F(UdmfPreProcessUtilsTest, ProcessFileType001, TestSize.Level1) obj->value_[FILE_URI_PARAM] = "http://demo.com.html"; obj->value_[FILE_TYPE] = "general.html"; record->AddEntry("general.file-uri", obj); - record->AddEntry("general.file-uri", "1111"); std::shared_ptr obj1 = std::make_shared(); obj1->value_[UNIFORM_DATA_TYPE] = "general.content-form"; obj1->value_["title"] = "test"; @@ -172,7 +171,11 @@ HWTEST_F(UdmfPreProcessUtilsTest, ProcessFileType001, TestSize.Level1) std::shared_ptr record1 = std::make_shared(); record1->AddEntry("general.file-uri", obj1); - std::vector> records = { record, record1 }; + std::shared_ptr record2 = std::make_shared(); + record2->AddEntry("general.file-uri", "1111"); + std::shared_ptr record3 = std::make_shared(); + record3->AddEntry("general.file-uri", 1); + std::vector> records = { record, record1, record2, record3 }; std::vector uris; PreProcessUtils::ProcessFileType(records, [&uris](std::shared_ptr obj) { std::string oriUri; diff --git a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp index e65cc5182..be8e9ecfc 100644 --- a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp +++ b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp @@ -345,19 +345,25 @@ void PreProcessUtils::ProcessFileType(std::vector continue; } auto entries = record->GetEntries(); - for (const auto &[type, value] : *entries) { - if (!std::holds_alternative>(value)) { - continue; - } - auto obj = std::get>(value); - if (obj == nullptr) { - ZLOGE("ValueType is not Object, Not convert to remote uri!"); - continue; - } - std::string dataType; - if (obj->GetValue(UNIFORM_DATA_TYPE, dataType) && dataType == GENERAL_FILE_URI) { - callback(obj); - } + if (entries == nullptr) { + continue; + } + auto entry = entries->find(GENERAL_FILE_URI); + if (entry == entries->end()) { + continue; + } + auto value = entry->second; + if (!std::holds_alternative>(value)) { + continue; + } + auto obj = std::get>(value); + if (obj == nullptr) { + ZLOGE("ValueType is not Object, Not convert to remote uri!"); + continue; + } + std::string dataType; + if (obj->GetValue(UNIFORM_DATA_TYPE, dataType) && dataType == GENERAL_FILE_URI) { + callback(obj); } } } -- Gitee From 45cf859a8be3785d8d7a2a2c26e6da75f4ff432a Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Fri, 25 Jul 2025 17:45:40 +0800 Subject: [PATCH 7/9] add Signed-off-by: wenjinchao --- .../service/test/udmf_preprocess_utils_test.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp index 149ab8d5a..03d8611e1 100644 --- a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp +++ b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp @@ -89,20 +89,6 @@ HWTEST_F(UdmfPreProcessUtilsTest, SetRemoteData002, TestSize.Level1) EXPECT_NO_FATAL_FAILURE(preProcessUtils.SetRemoteData(data)); } -/** -* @tc.name: IsFileType001 -* @tc.desc: Abnormal test of IsFileType, record is nullptr -* @tc.type: FUNC -* @tc.require: -*/ -HWTEST_F(UdmfPreProcessUtilsTest, IsFileType001, TestSize.Level1) -{ - std::shared_ptr record = nullptr; - PreProcessUtils preProcessUtils; - bool ret = preProcessUtils.IsFileType(record); - EXPECT_EQ(ret, false); -} - /** * @tc.name: GetDfsUrisFromLocal001 * @tc.desc: Abnormal test of GetDfsUrisFromLocal, uris is null -- Gitee From c3342f136c5196786df20e460a2a5b1f5372de1e Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Fri, 25 Jul 2025 17:48:39 +0800 Subject: [PATCH 8/9] add Signed-off-by: wenjinchao --- .../service/udmf/preprocess/preprocess_utils.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp index be8e9ecfc..5b8afe77f 100644 --- a/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp +++ b/services/distributeddataservice/service/udmf/preprocess/preprocess_utils.cpp @@ -342,10 +342,12 @@ void PreProcessUtils::ProcessFileType(std::vector { for (auto record : records) { if (record == nullptr) { + ZLOGW("Record is empty!"); continue; } auto entries = record->GetEntries(); if (entries == nullptr) { + ZLOGW("GetEntries returns empty!"); continue; } auto entry = entries->find(GENERAL_FILE_URI); -- Gitee From 073b8c540626ee535651f400c822e4b030802534 Mon Sep 17 00:00:00 2001 From: wenjinchao Date: Sat, 26 Jul 2025 09:43:50 +0800 Subject: [PATCH 9/9] add Signed-off-by: wenjinchao --- .../test/udmf_preprocess_utils_test.cpp | 2 +- .../service/test/udmf_run_time_store_test.cpp | 18 +++++++++++++++--- .../test/udmf_service_impl_mock_test.cpp | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp index 03d8611e1..514a2a59c 100644 --- a/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp +++ b/services/distributeddataservice/service/test/udmf_preprocess_utils_test.cpp @@ -172,7 +172,7 @@ HWTEST_F(UdmfPreProcessUtilsTest, ProcessFileType001, TestSize.Level1) uris.push_back(oriUri); return true; }); - EXPECT_EQ(uris.size(), 2); + EXPECT_EQ(uris.size(), 1); } /** diff --git a/services/distributeddataservice/service/test/udmf_run_time_store_test.cpp b/services/distributeddataservice/service/test/udmf_run_time_store_test.cpp index 1c92a86a6..b73675f5a 100644 --- a/services/distributeddataservice/service/test/udmf_run_time_store_test.cpp +++ b/services/distributeddataservice/service/test/udmf_run_time_store_test.cpp @@ -93,6 +93,7 @@ public: const uint32_t MAX_VALUE_SIZE = 4 * 1024 * 1024; const std::string STORE_ID = "drag"; const std::string KEY_PREFIX = "TEST_"; + const std::string SUMMARY_KEY_PREFIX = "SUMMARY_KEY_PREFIX"; const std::string EMPTY_DEVICE_ID = ""; const std::string BUNDLE_NAME = "udmf_test"; static constexpr size_t tempUdataRecordSize = 1; @@ -643,11 +644,22 @@ HWTEST_F(UdmfRunTimeStoreTest, GetSummary, TestSize.Level1) bool result = store->Init(); EXPECT_TRUE(result); Summary summary; - UnifiedKey key(KEY_PREFIX); - auto status = store->GetSummary(key, summary); - ASSERT_EQ(status, E_NOT_FOUND); + summary.summary = { + { "general.file", 10 }, + { "general.png", 10 }, + { "general.html", 10 }, + { "general.jpeg", 10 }, + { "general.avi", 10}, + { "aabbcc", 10} + }; + UnifiedKey key(SUMMARY_KEY_PREFIX); + auto status = store->PutSummary(key, summary); + EXPECT_EQ(status, E_OK); + status = store->GetSummary(key, summary); + ASSERT_EQ(status, E_OK); } + /** * @tc.name: GetRuntime001 * @tc.desc: Normal testcase of GetRuntime diff --git a/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp b/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp index 9c7e3c2db..9daa166f4 100644 --- a/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp +++ b/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp @@ -93,7 +93,7 @@ HWTEST_F(UdmfServiceImplMockTest, IsNeedMetaSyncTest001, TestSize.Level0) .WillOnce(Return(true)) .WillOnce(Return(true)); isNeedSync = udmfServiceImpl.IsNeedMetaSync(meta, devices); - EXPECT_EQ(isNeedSync, false); + EXPECT_EQ(isNeedSync, true); } /** -- Gitee