1c2b37d2cSopenharmony_ci/* 2c2b37d2cSopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3c2b37d2cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c2b37d2cSopenharmony_ci * you may not use this file except in compliance with the License. 5c2b37d2cSopenharmony_ci * You may obtain a copy of the License at 6c2b37d2cSopenharmony_ci * 7c2b37d2cSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c2b37d2cSopenharmony_ci * 9c2b37d2cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c2b37d2cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c2b37d2cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c2b37d2cSopenharmony_ci * See the License for the specific language governing permissions and 13c2b37d2cSopenharmony_ci * limitations under the License. 14c2b37d2cSopenharmony_ci */ 15c2b37d2cSopenharmony_ci 16c2b37d2cSopenharmony_ci#include "account_event_provider.h" 17c2b37d2cSopenharmony_ci#include "account_info.h" 18c2b37d2cSopenharmony_ci#ifdef HAS_CES_PART 19c2b37d2cSopenharmony_ci#include <common_event_data.h> 20c2b37d2cSopenharmony_ci#include <common_event_support.h> 21c2b37d2cSopenharmony_ci#endif // HAS_CES_PART 22c2b37d2cSopenharmony_ci#include "account_log_wrapper.h" 23c2b37d2cSopenharmony_ci#ifdef HAS_CES_PART 24c2b37d2cSopenharmony_ci#include "common_event_manager.h" 25c2b37d2cSopenharmony_ci#include "want.h" 26c2b37d2cSopenharmony_ci#endif // HAS_CES_PART 27c2b37d2cSopenharmony_ci#include "account_hisysevent_adapter.h" 28c2b37d2cSopenharmony_ci#include "hitrace_adapter.h" 29c2b37d2cSopenharmony_ci#include "common_event_constant.h" 30c2b37d2cSopenharmony_ci 31c2b37d2cSopenharmony_ci#ifdef HAS_CES_PART 32c2b37d2cSopenharmony_ciusing namespace OHOS::EventFwk; 33c2b37d2cSopenharmony_ci#endif // HAS_CES_PART 34c2b37d2cSopenharmony_ci 35c2b37d2cSopenharmony_cinamespace OHOS { 36c2b37d2cSopenharmony_cinamespace AccountSA { 37c2b37d2cSopenharmony_cibool AccountEventProvider::EventPublish(const std::string& event, int32_t userId, const DomainAccountEventData *report) 38c2b37d2cSopenharmony_ci{ 39c2b37d2cSopenharmony_ci#ifdef HAS_CES_PART 40c2b37d2cSopenharmony_ci Want want; 41c2b37d2cSopenharmony_ci want.SetAction(event); 42c2b37d2cSopenharmony_ci CommonEventData data; 43c2b37d2cSopenharmony_ci if (event == EventFwk::CommonEventSupport::COMMON_EVENT_USER_INFO_UPDATED) { 44c2b37d2cSopenharmony_ci data.SetCode(userId); 45c2b37d2cSopenharmony_ci } else if (event == EventFwk::CommonEventSupport::COMMON_EVENT_DOMAIN_ACCOUNT_STATUS_CHANGED) { 46c2b37d2cSopenharmony_ci if (report == nullptr) { 47c2b37d2cSopenharmony_ci ACCOUNT_LOGE("Report is nullptr"); 48c2b37d2cSopenharmony_ci return false; 49c2b37d2cSopenharmony_ci } 50c2b37d2cSopenharmony_ci want.SetParam("domain", report->domainAccountInfo.domain_); 51c2b37d2cSopenharmony_ci want.SetParam("accountName", report->domainAccountInfo.accountName_); 52c2b37d2cSopenharmony_ci want.SetParam("event", report->event); 53c2b37d2cSopenharmony_ci want.SetParam("status", report->status); 54c2b37d2cSopenharmony_ci } else { 55c2b37d2cSopenharmony_ci want.SetParam("userId", userId); 56c2b37d2cSopenharmony_ci } 57c2b37d2cSopenharmony_ci 58c2b37d2cSopenharmony_ci data.SetWant(want); 59c2b37d2cSopenharmony_ci StartTraceAdapter("Ohos account event publish."); 60c2b37d2cSopenharmony_ci /* publish */ 61c2b37d2cSopenharmony_ci if (!CommonEventManager::PublishCommonEvent(data)) { 62c2b37d2cSopenharmony_ci ACCOUNT_LOGE("PublishCommonEvent failed! event %{public}s. userId is %{public}d", event.c_str(), userId); 63c2b37d2cSopenharmony_ci ReportOhosAccountOperationFail(userId, EVENT_PUBLISH, false, "PublishCommonEvent failed"); 64c2b37d2cSopenharmony_ci FinishTraceAdapter(); 65c2b37d2cSopenharmony_ci return false; 66c2b37d2cSopenharmony_ci } else { 67c2b37d2cSopenharmony_ci ACCOUNT_LOGI("PublishCommonEvent succeed! event %{public}s.", event.c_str()); 68c2b37d2cSopenharmony_ci } 69c2b37d2cSopenharmony_ci FinishTraceAdapter(); 70c2b37d2cSopenharmony_ci#else // HAS_CES_PART 71c2b37d2cSopenharmony_ci ACCOUNT_LOGI("No common event part, do not publish anything! event %{public}s.", event.c_str()); 72c2b37d2cSopenharmony_ci#endif // HAS_CES_PART 73c2b37d2cSopenharmony_ci return true; 74c2b37d2cSopenharmony_ci} 75c2b37d2cSopenharmony_ci 76c2b37d2cSopenharmony_cibool AccountEventProvider::EventPublishAsUser(const std::string& event, int32_t userId) 77c2b37d2cSopenharmony_ci{ 78c2b37d2cSopenharmony_ci if (userId == UNDEFINED_USER) { 79c2b37d2cSopenharmony_ci ACCOUNT_LOGE("EventPublishAsUser failed, userId is UNDEFINED_USER"); 80c2b37d2cSopenharmony_ci return EventPublish(event, userId, nullptr); 81c2b37d2cSopenharmony_ci } 82c2b37d2cSopenharmony_ci#ifdef HAS_CES_PART 83c2b37d2cSopenharmony_ci Want want; 84c2b37d2cSopenharmony_ci want.SetAction(event); 85c2b37d2cSopenharmony_ci CommonEventData data; 86c2b37d2cSopenharmony_ci if (event == EventFwk::CommonEventSupport::COMMON_EVENT_USER_INFO_UPDATED) { 87c2b37d2cSopenharmony_ci data.SetCode(userId); 88c2b37d2cSopenharmony_ci } else { 89c2b37d2cSopenharmony_ci want.SetParam("userId", userId); 90c2b37d2cSopenharmony_ci } 91c2b37d2cSopenharmony_ci 92c2b37d2cSopenharmony_ci data.SetWant(want); 93c2b37d2cSopenharmony_ci StartTraceAdapter("Ohos account event publish."); 94c2b37d2cSopenharmony_ci /* publish */ 95c2b37d2cSopenharmony_ci if (!CommonEventManager::PublishCommonEventAsUser(data, userId)) { 96c2b37d2cSopenharmony_ci ACCOUNT_LOGE("PublishCommonEventAsUser failed! event %{public}s. userId is %{public}d", event.c_str(), userId); 97c2b37d2cSopenharmony_ci ReportOhosAccountOperationFail(userId, EVENT_PUBLISH, false, "PublishCommonEventAsUser failed"); 98c2b37d2cSopenharmony_ci FinishTraceAdapter(); 99c2b37d2cSopenharmony_ci return false; 100c2b37d2cSopenharmony_ci } else { 101c2b37d2cSopenharmony_ci ACCOUNT_LOGI("PublishCommonEventAsUser succeed! event %{public}s.", event.c_str()); 102c2b37d2cSopenharmony_ci } 103c2b37d2cSopenharmony_ci FinishTraceAdapter(); 104c2b37d2cSopenharmony_ci#else // HAS_CES_PART 105c2b37d2cSopenharmony_ci ACCOUNT_LOGI("No common event part, do not publish anything! event %{public}s.", event.c_str()); 106c2b37d2cSopenharmony_ci#endif // HAS_CES_PART 107c2b37d2cSopenharmony_ci return true; 108c2b37d2cSopenharmony_ci} 109c2b37d2cSopenharmony_ci} // namespace AccountSA 110c2b37d2cSopenharmony_ci} // namespace OHOS