125c1cde8Sopenharmony_ci/* 225c1cde8Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 325c1cde8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 425c1cde8Sopenharmony_ci * you may not use this file except in compliance with the License. 525c1cde8Sopenharmony_ci * You may obtain a copy of the License at 625c1cde8Sopenharmony_ci * 725c1cde8Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 825c1cde8Sopenharmony_ci * 925c1cde8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1025c1cde8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1125c1cde8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1225c1cde8Sopenharmony_ci * See the License for the specific language governing permissions and 1325c1cde8Sopenharmony_ci * limitations under the License. 1425c1cde8Sopenharmony_ci */ 1525c1cde8Sopenharmony_ci 1625c1cde8Sopenharmony_ci#include "dataobs_mgr_client.h" 1725c1cde8Sopenharmony_ci#include "datashare_ext_ability_context.h" 1825c1cde8Sopenharmony_ci#include "data_storage_errors.h" 1925c1cde8Sopenharmony_ci#include "data_storage_log_wrapper.h" 2025c1cde8Sopenharmony_ci#include "opkey_ability.h" 2125c1cde8Sopenharmony_ci#include "pdp_profile_ability.h" 2225c1cde8Sopenharmony_ci#include "sim_ability.h" 2325c1cde8Sopenharmony_ci#include "sms_mms_ability.h" 2425c1cde8Sopenharmony_ci#include "global_params_ability.h" 2525c1cde8Sopenharmony_ci#include "opkey_version_ability.h" 2625c1cde8Sopenharmony_ci#include "telephony_datashare_stub_impl.h" 2725c1cde8Sopenharmony_ci 2825c1cde8Sopenharmony_ci 2925c1cde8Sopenharmony_cinamespace OHOS { 3025c1cde8Sopenharmony_cinamespace DataShare { 3125c1cde8Sopenharmony_ciusing DataObsMgrClient = OHOS::AAFwk::DataObsMgrClient; 3225c1cde8Sopenharmony_ciusing namespace OHOS::Telephony; 3325c1cde8Sopenharmony_ci 3425c1cde8Sopenharmony_civoid TelephonyDataShareStubImpl::SetOpKeyAbility(std::shared_ptr<DataShareExtAbility> extension) 3525c1cde8Sopenharmony_ci{ 3625c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(opKeyMutex_); 3725c1cde8Sopenharmony_ci opKeyAbility_ = extension; 3825c1cde8Sopenharmony_ci} 3925c1cde8Sopenharmony_ci 4025c1cde8Sopenharmony_civoid TelephonyDataShareStubImpl::SetPdpProfileAbility(std::shared_ptr<DataShareExtAbility> extension) 4125c1cde8Sopenharmony_ci{ 4225c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(pdpProfileMutex_); 4325c1cde8Sopenharmony_ci pdpProfileAbility_ = extension; 4425c1cde8Sopenharmony_ci} 4525c1cde8Sopenharmony_ci 4625c1cde8Sopenharmony_civoid TelephonyDataShareStubImpl::SetSimAbility(std::shared_ptr<DataShareExtAbility> extension) 4725c1cde8Sopenharmony_ci{ 4825c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(simMutex_); 4925c1cde8Sopenharmony_ci simAbility_ = extension; 5025c1cde8Sopenharmony_ci} 5125c1cde8Sopenharmony_ci 5225c1cde8Sopenharmony_civoid TelephonyDataShareStubImpl::SetSmsMmsAbility(std::shared_ptr<DataShareExtAbility> extension) 5325c1cde8Sopenharmony_ci{ 5425c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(smsMmsMutex_); 5525c1cde8Sopenharmony_ci smsMmsAbility_ = extension; 5625c1cde8Sopenharmony_ci} 5725c1cde8Sopenharmony_ci 5825c1cde8Sopenharmony_civoid TelephonyDataShareStubImpl::SetGlobalParamsAbility(std::shared_ptr<DataShareExtAbility> extension) 5925c1cde8Sopenharmony_ci{ 6025c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(globalParamsMutex_); 6125c1cde8Sopenharmony_ci globalParamsAbility_ = extension; 6225c1cde8Sopenharmony_ci} 6325c1cde8Sopenharmony_ci 6425c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetTelephonyDataAbility() 6525c1cde8Sopenharmony_ci{ 6625c1cde8Sopenharmony_ci return telephonyDataAbility_; 6725c1cde8Sopenharmony_ci} 6825c1cde8Sopenharmony_ci 6925c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetOpKeyAbility() 7025c1cde8Sopenharmony_ci{ 7125c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(opKeyMutex_); 7225c1cde8Sopenharmony_ci if (opKeyAbility_ == nullptr) { 7325c1cde8Sopenharmony_ci opKeyAbility_.reset(OpKeyAbility::Create()); 7425c1cde8Sopenharmony_ci } 7525c1cde8Sopenharmony_ci return opKeyAbility_; 7625c1cde8Sopenharmony_ci} 7725c1cde8Sopenharmony_ci 7825c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetPdpProfileAbility() 7925c1cde8Sopenharmony_ci{ 8025c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(pdpProfileMutex_); 8125c1cde8Sopenharmony_ci if (pdpProfileAbility_ == nullptr) { 8225c1cde8Sopenharmony_ci pdpProfileAbility_.reset(PdpProfileAbility::Create()); 8325c1cde8Sopenharmony_ci } 8425c1cde8Sopenharmony_ci return pdpProfileAbility_; 8525c1cde8Sopenharmony_ci} 8625c1cde8Sopenharmony_ci 8725c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetSimAbility() 8825c1cde8Sopenharmony_ci{ 8925c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(simMutex_); 9025c1cde8Sopenharmony_ci if (simAbility_ == nullptr) { 9125c1cde8Sopenharmony_ci simAbility_.reset(SimAbility::Create()); 9225c1cde8Sopenharmony_ci } 9325c1cde8Sopenharmony_ci return simAbility_; 9425c1cde8Sopenharmony_ci} 9525c1cde8Sopenharmony_ci 9625c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetSmsMmsAbility() 9725c1cde8Sopenharmony_ci{ 9825c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(smsMmsMutex_); 9925c1cde8Sopenharmony_ci if (smsMmsAbility_ == nullptr) { 10025c1cde8Sopenharmony_ci smsMmsAbility_.reset(SmsMmsAbility::Create()); 10125c1cde8Sopenharmony_ci } 10225c1cde8Sopenharmony_ci return smsMmsAbility_; 10325c1cde8Sopenharmony_ci} 10425c1cde8Sopenharmony_ci 10525c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetGlobalParamsAbility() 10625c1cde8Sopenharmony_ci{ 10725c1cde8Sopenharmony_ci std::lock_guard<std::mutex> lock(globalParamsMutex_); 10825c1cde8Sopenharmony_ci if (globalParamsAbility_ == nullptr) { 10925c1cde8Sopenharmony_ci globalParamsAbility_.reset(GlobalParamsAbility::Create()); 11025c1cde8Sopenharmony_ci } 11125c1cde8Sopenharmony_ci return globalParamsAbility_; 11225c1cde8Sopenharmony_ci} 11325c1cde8Sopenharmony_ci 11425c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetOpkeyVersionAbility() 11525c1cde8Sopenharmony_ci{ 11625c1cde8Sopenharmony_ci if (opkeyVersionAbility_ == nullptr) { 11725c1cde8Sopenharmony_ci opkeyVersionAbility_.reset(OpkeyVersionAbility::Create()); 11825c1cde8Sopenharmony_ci } 11925c1cde8Sopenharmony_ci return opkeyVersionAbility_; 12025c1cde8Sopenharmony_ci} 12125c1cde8Sopenharmony_ci 12225c1cde8Sopenharmony_cistd::shared_ptr<DataShareExtAbility> TelephonyDataShareStubImpl::GetOwner(const Uri &uri) 12325c1cde8Sopenharmony_ci{ 12425c1cde8Sopenharmony_ci OHOS::Uri uriTemp = uri; 12525c1cde8Sopenharmony_ci std::string path = uriTemp.GetPath(); 12625c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("GetOwner uri: %{public}s", path.c_str()); 12725c1cde8Sopenharmony_ci if (path.find("com.ohos.telephonydataability") != std::string::npos) { 12825c1cde8Sopenharmony_ci return GetTelephonyDataAbility(); 12925c1cde8Sopenharmony_ci } 13025c1cde8Sopenharmony_ci if (path.find("com.ohos.opkeyability") != std::string::npos) { 13125c1cde8Sopenharmony_ci return GetOpKeyAbility(); 13225c1cde8Sopenharmony_ci } 13325c1cde8Sopenharmony_ci if (path.find("com.ohos.pdpprofileability") != std::string::npos) { 13425c1cde8Sopenharmony_ci return GetPdpProfileAbility(); 13525c1cde8Sopenharmony_ci } 13625c1cde8Sopenharmony_ci if (path.find("com.ohos.simability") != std::string::npos) { 13725c1cde8Sopenharmony_ci return GetSimAbility(); 13825c1cde8Sopenharmony_ci } 13925c1cde8Sopenharmony_ci if (path.find("com.ohos.smsmmsability") != std::string::npos) { 14025c1cde8Sopenharmony_ci return GetSmsMmsAbility(); 14125c1cde8Sopenharmony_ci } 14225c1cde8Sopenharmony_ci if (path.find("com.ohos.globalparamsability") != std::string::npos) { 14325c1cde8Sopenharmony_ci return GetGlobalParamsAbility(); 14425c1cde8Sopenharmony_ci } 14525c1cde8Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_TELEPHONY_EXT 14625c1cde8Sopenharmony_ci if (path.find("com.ohos.opkeyversionability") != std::string::npos) { 14725c1cde8Sopenharmony_ci return GetOpkeyVersionAbility(); 14825c1cde8Sopenharmony_ci } 14925c1cde8Sopenharmony_ci#endif 15025c1cde8Sopenharmony_ci return nullptr; 15125c1cde8Sopenharmony_ci} 15225c1cde8Sopenharmony_ci 15325c1cde8Sopenharmony_ciint TelephonyDataShareStubImpl::Insert(const Uri &uri, const DataShareValuesBucket &value) 15425c1cde8Sopenharmony_ci{ 15525c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("Insert begin."); 15625c1cde8Sopenharmony_ci int ret = 0; 15725c1cde8Sopenharmony_ci auto extension = GetOwner(uri); 15825c1cde8Sopenharmony_ci if (extension == nullptr) { 15925c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("Insert failed, extension is null."); 16025c1cde8Sopenharmony_ci return ret; 16125c1cde8Sopenharmony_ci } 16225c1cde8Sopenharmony_ci ret = extension->Insert(uri, value); 16325c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("Insert end successfully. ret: %{public}d", ret); 16425c1cde8Sopenharmony_ci if (ret != Telephony::OPERATION_ERROR) { 16525c1cde8Sopenharmony_ci NotifyChange(uri); 16625c1cde8Sopenharmony_ci } 16725c1cde8Sopenharmony_ci return ret; 16825c1cde8Sopenharmony_ci} 16925c1cde8Sopenharmony_ci 17025c1cde8Sopenharmony_ciint TelephonyDataShareStubImpl::Update(const Uri &uri, const DataSharePredicates &predicates, 17125c1cde8Sopenharmony_ci const DataShareValuesBucket &value) 17225c1cde8Sopenharmony_ci{ 17325c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("Update begin."); 17425c1cde8Sopenharmony_ci int ret = 0; 17525c1cde8Sopenharmony_ci auto extension = GetOwner(uri); 17625c1cde8Sopenharmony_ci if (extension == nullptr) { 17725c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("Update failed, extension is null."); 17825c1cde8Sopenharmony_ci return ret; 17925c1cde8Sopenharmony_ci } 18025c1cde8Sopenharmony_ci ret = extension->Update(uri, predicates, value); 18125c1cde8Sopenharmony_ci if (ret != Telephony::OPERATION_OK) { 18225c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("Update end failed. ret: %{public}d", ret); 18325c1cde8Sopenharmony_ci } 18425c1cde8Sopenharmony_ci if (ret != Telephony::OPERATION_ERROR) { 18525c1cde8Sopenharmony_ci NotifyChange(uri); 18625c1cde8Sopenharmony_ci } 18725c1cde8Sopenharmony_ci return ret; 18825c1cde8Sopenharmony_ci} 18925c1cde8Sopenharmony_ci 19025c1cde8Sopenharmony_ciint TelephonyDataShareStubImpl::Delete(const Uri &uri, const DataSharePredicates &predicates) 19125c1cde8Sopenharmony_ci{ 19225c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("Delete begin."); 19325c1cde8Sopenharmony_ci int ret = 0; 19425c1cde8Sopenharmony_ci auto extension = GetOwner(uri); 19525c1cde8Sopenharmony_ci if (extension == nullptr) { 19625c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("Delete failed, extension is null."); 19725c1cde8Sopenharmony_ci return ret; 19825c1cde8Sopenharmony_ci } 19925c1cde8Sopenharmony_ci ret = extension->Delete(uri, predicates); 20025c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("Delete end successfully. ret: %{public}d", ret); 20125c1cde8Sopenharmony_ci if (ret != Telephony::OPERATION_ERROR) { 20225c1cde8Sopenharmony_ci NotifyChange(uri); 20325c1cde8Sopenharmony_ci } 20425c1cde8Sopenharmony_ci return ret; 20525c1cde8Sopenharmony_ci} 20625c1cde8Sopenharmony_ci 20725c1cde8Sopenharmony_cistd::shared_ptr<DataShareResultSet> TelephonyDataShareStubImpl::Query(const Uri &uri, 20825c1cde8Sopenharmony_ci const DataSharePredicates &predicates, std::vector<std::string> &columns, DatashareBusinessError &businessError) 20925c1cde8Sopenharmony_ci{ 21025c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("Query begin."); 21125c1cde8Sopenharmony_ci auto extension = GetOwner(uri); 21225c1cde8Sopenharmony_ci if (extension == nullptr) { 21325c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("Query failed, extension is null."); 21425c1cde8Sopenharmony_ci return nullptr; 21525c1cde8Sopenharmony_ci } 21625c1cde8Sopenharmony_ci auto resultSet = extension->Query(uri, predicates, columns, businessError); 21725c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("Query end successfully."); 21825c1cde8Sopenharmony_ci return resultSet; 21925c1cde8Sopenharmony_ci} 22025c1cde8Sopenharmony_ci 22125c1cde8Sopenharmony_ciint TelephonyDataShareStubImpl::BatchInsert(const Uri &uri, const std::vector<DataShareValuesBucket> &values) 22225c1cde8Sopenharmony_ci{ 22325c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("BatchInsert begin."); 22425c1cde8Sopenharmony_ci int ret = 0; 22525c1cde8Sopenharmony_ci auto extension = GetOwner(uri); 22625c1cde8Sopenharmony_ci if (extension == nullptr) { 22725c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("BatchInsert failed, extension is null."); 22825c1cde8Sopenharmony_ci return ret; 22925c1cde8Sopenharmony_ci } 23025c1cde8Sopenharmony_ci ret = extension->BatchInsert(uri, values); 23125c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("BatchInsert end successfully. ret: %{public}d", ret); 23225c1cde8Sopenharmony_ci if (ret != Telephony::OPERATION_ERROR) { 23325c1cde8Sopenharmony_ci NotifyChange(uri); 23425c1cde8Sopenharmony_ci } 23525c1cde8Sopenharmony_ci return ret; 23625c1cde8Sopenharmony_ci} 23725c1cde8Sopenharmony_ci 23825c1cde8Sopenharmony_cistd::vector<std::string> TelephonyDataShareStubImpl::GetFileTypes(const Uri &uri, const std::string &mimeTypeFilter) 23925c1cde8Sopenharmony_ci{ 24025c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("GetFileTypes not supported."); 24125c1cde8Sopenharmony_ci std::vector<std::string> result; 24225c1cde8Sopenharmony_ci return result; 24325c1cde8Sopenharmony_ci} 24425c1cde8Sopenharmony_ci 24525c1cde8Sopenharmony_ciint TelephonyDataShareStubImpl::OpenFile(const Uri &uri, const std::string &mode) 24625c1cde8Sopenharmony_ci{ 24725c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("OpenFile not supported."); 24825c1cde8Sopenharmony_ci return -1; 24925c1cde8Sopenharmony_ci} 25025c1cde8Sopenharmony_ci 25125c1cde8Sopenharmony_ciint TelephonyDataShareStubImpl::OpenRawFile(const Uri &uri, const std::string &mode) 25225c1cde8Sopenharmony_ci{ 25325c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("OpenRawFile not supported."); 25425c1cde8Sopenharmony_ci return -1; 25525c1cde8Sopenharmony_ci} 25625c1cde8Sopenharmony_ci 25725c1cde8Sopenharmony_cistd::string TelephonyDataShareStubImpl::GetType(const Uri &uri) 25825c1cde8Sopenharmony_ci{ 25925c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("GetType not supported."); 26025c1cde8Sopenharmony_ci return ""; 26125c1cde8Sopenharmony_ci} 26225c1cde8Sopenharmony_ci 26325c1cde8Sopenharmony_cibool TelephonyDataShareStubImpl::RegisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver) 26425c1cde8Sopenharmony_ci{ 26525c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("%{public}s begin.", __func__); 26625c1cde8Sopenharmony_ci auto obsMgrClient = DataObsMgrClient::GetInstance(); 26725c1cde8Sopenharmony_ci if (obsMgrClient == nullptr) { 26825c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("%{public}s obsMgrClient is nullptr", __func__); 26925c1cde8Sopenharmony_ci return false; 27025c1cde8Sopenharmony_ci } 27125c1cde8Sopenharmony_ci 27225c1cde8Sopenharmony_ci ErrCode ret = obsMgrClient->RegisterObserver(uri, dataObserver); 27325c1cde8Sopenharmony_ci if (ret != ERR_OK) { 27425c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("%{public}s obsMgrClient->RegisterObserver error return %{public}d", __func__, ret); 27525c1cde8Sopenharmony_ci return false; 27625c1cde8Sopenharmony_ci } 27725c1cde8Sopenharmony_ci return true; 27825c1cde8Sopenharmony_ci} 27925c1cde8Sopenharmony_ci 28025c1cde8Sopenharmony_cibool TelephonyDataShareStubImpl::UnregisterObserver(const Uri &uri, 28125c1cde8Sopenharmony_ci const sptr<AAFwk::IDataAbilityObserver> &dataObserver) 28225c1cde8Sopenharmony_ci{ 28325c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("%{public}s begin.", __func__); 28425c1cde8Sopenharmony_ci auto obsMgrClient = DataObsMgrClient::GetInstance(); 28525c1cde8Sopenharmony_ci if (obsMgrClient == nullptr) { 28625c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("%{public}s obsMgrClient is nullptr", __func__); 28725c1cde8Sopenharmony_ci return false; 28825c1cde8Sopenharmony_ci } 28925c1cde8Sopenharmony_ci 29025c1cde8Sopenharmony_ci ErrCode ret = obsMgrClient->UnregisterObserver(uri, dataObserver); 29125c1cde8Sopenharmony_ci if (ret != ERR_OK) { 29225c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("%{public}s obsMgrClient->UnregisterObserver error return %{public}d", __func__, ret); 29325c1cde8Sopenharmony_ci return false; 29425c1cde8Sopenharmony_ci } 29525c1cde8Sopenharmony_ci return true; 29625c1cde8Sopenharmony_ci} 29725c1cde8Sopenharmony_ci 29825c1cde8Sopenharmony_cibool TelephonyDataShareStubImpl::NotifyChange(const Uri &uri) 29925c1cde8Sopenharmony_ci{ 30025c1cde8Sopenharmony_ci auto obsMgrClient = DataObsMgrClient::GetInstance(); 30125c1cde8Sopenharmony_ci if (obsMgrClient == nullptr) { 30225c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("%{public}s obsMgrClient is nullptr", __func__); 30325c1cde8Sopenharmony_ci return false; 30425c1cde8Sopenharmony_ci } 30525c1cde8Sopenharmony_ci 30625c1cde8Sopenharmony_ci ErrCode ret = obsMgrClient->NotifyChange(uri); 30725c1cde8Sopenharmony_ci if (ret != ERR_OK) { 30825c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("%{public}s obsMgrClient->NotifyChange error return %{public}d", __func__, ret); 30925c1cde8Sopenharmony_ci return false; 31025c1cde8Sopenharmony_ci } 31125c1cde8Sopenharmony_ci return true; 31225c1cde8Sopenharmony_ci} 31325c1cde8Sopenharmony_ci 31425c1cde8Sopenharmony_ciUri TelephonyDataShareStubImpl::NormalizeUri(const Uri &uri) 31525c1cde8Sopenharmony_ci{ 31625c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("NormalizeUri not supported."); 31725c1cde8Sopenharmony_ci return uri; 31825c1cde8Sopenharmony_ci} 31925c1cde8Sopenharmony_ci 32025c1cde8Sopenharmony_ciUri TelephonyDataShareStubImpl::DenormalizeUri(const Uri &uri) 32125c1cde8Sopenharmony_ci{ 32225c1cde8Sopenharmony_ci DATA_STORAGE_LOGI("DenormalizeUri not supported."); 32325c1cde8Sopenharmony_ci return uri; 32425c1cde8Sopenharmony_ci} 32525c1cde8Sopenharmony_ci} // namespace DataShare 32625c1cde8Sopenharmony_ci} // namespace OHOS 327