1 /*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <hisysevent.h>
17 #include "floating_ball_report.h"
18 #include "window_manager_hilog.h"
19
20 namespace OHOS {
21 namespace Rosen {
22 namespace {
23 const std::string PNAMEID = "SCB_FLOATING_BALL";
24 const std::string PVERSION = "1.0";
25 }
26 WM_IMPLEMENT_SINGLE_INSTANCE(FloatingballReporter)
27
28 constexpr char EVENT_KEY_TEMPLATE_TYPE[] = "TEMPLATE_TYPE";
29 constexpr char EVENT_KEY_PNAMEID[] = "PNAMEID";
30 constexpr char EVENT_KEY_PVERSION[] = "PVERSION";
31 constexpr char EVENT_KEY_PACKAGE_NAME[] = "PACKAGE_NAME";
32 constexpr char EVENT_KEY_ERROR_REASON[] = "ERROR_REASON";
33
34 constexpr char EVENT_KEY_START_FLOATING_BALL[] = "START_FLOATING_BALL";
35 constexpr char EVENT_KEY_UPDATE_FLOATING_BALL[] = "UPDATE_FLOATING_BALL";
36 constexpr char EVENT_KEY_REMOVE_FLOATING_BALL[] = "REMOVE_FLOATING_BALL";
37 constexpr char EVENT_KEY_RESTORE_FLOATING_BALL_WINDOW[] = "RESTORE_FLOATING_BALL_WINDOW";
38
SetCurrentPackageName(const std::string & packageName)39 void FloatingballReporter::SetCurrentPackageName(const std::string& packageName)
40 {
41 std::lock_guard<std::mutex> lock(packageNameMutex_);
42 packageName_ = packageName;
43 }
44
GetPackageName() const45 std::string FloatingballReporter::GetPackageName() const
46 {
47 std::lock_guard<std::mutex> lock(packageNameMutex_);
48 return packageName_;
49 }
50
ReportFbStart(const uint32_t & templateType,const std::string & errorReason)51 void FloatingballReporter::ReportFbStart(const uint32_t& templateType, const std::string& errorReason)
52 {
53 TLOGI(WmsLogTag::WMS_SYSTEM, "Report start floating ball window");
54 int32_t ret = HiSysEventWrite(
55 OHOS::HiviewDFX::HiSysEvent::Domain::MULTIWINDOW_UE, EVENT_KEY_START_FLOATING_BALL,
56 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
57 EVENT_KEY_PNAMEID, PNAMEID,
58 EVENT_KEY_PVERSION, PVERSION,
59 EVENT_KEY_PACKAGE_NAME, GetPackageName(),
60 EVENT_KEY_TEMPLATE_TYPE, templateType,
61 EVENT_KEY_ERROR_REASON, errorReason);
62 if (ret != 0) {
63 TLOGE(WmsLogTag::WMS_SYSTEM, "Write HiSysEvent error, errCode:%{public}d", ret);
64 }
65 }
66
ReportFbUpdateContent(const uint32_t & templateType,const std::string & errorReason)67 void FloatingballReporter::ReportFbUpdateContent(const uint32_t& templateType, const std::string &errorReason)
68 {
69 TLOGI(WmsLogTag::WMS_SYSTEM, "Report update floating ball window content");
70 int32_t ret = HiSysEventWrite(
71 OHOS::HiviewDFX::HiSysEvent::Domain::MULTIWINDOW_UE, EVENT_KEY_UPDATE_FLOATING_BALL,
72 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
73 EVENT_KEY_PNAMEID, PNAMEID,
74 EVENT_KEY_PVERSION, PVERSION,
75 EVENT_KEY_PACKAGE_NAME, GetPackageName(),
76 EVENT_KEY_TEMPLATE_TYPE, templateType,
77 EVENT_KEY_ERROR_REASON, errorReason);
78 if (ret != 0) {
79 TLOGE(WmsLogTag::WMS_SYSTEM, "Write HiSysEvent error, errCode:%{public}d", ret);
80 }
81 }
82
ReportFbRemove(const uint32_t & templateType,const std::string & errorReason)83 void FloatingballReporter::ReportFbRemove(const uint32_t& templateType, const std::string& errorReason)
84 {
85 TLOGI(WmsLogTag::WMS_SYSTEM, "Report remove floating ball window");
86 int32_t ret = HiSysEventWrite(
87 OHOS::HiviewDFX::HiSysEvent::Domain::MULTIWINDOW_UE, EVENT_KEY_REMOVE_FLOATING_BALL,
88 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
89 EVENT_KEY_PNAMEID, PNAMEID,
90 EVENT_KEY_PVERSION, PVERSION,
91 EVENT_KEY_PACKAGE_NAME, GetPackageName(),
92 EVENT_KEY_TEMPLATE_TYPE, templateType,
93 EVENT_KEY_ERROR_REASON, errorReason);
94 if (ret != 0) {
95 TLOGE(WmsLogTag::WMS_SYSTEM, "Write HiSysEvent error, errCode:%{public}d", ret);
96 }
97 }
98
ReportFbRestoreMainWindow(const uint32_t & templateType,const std::string & errorReason)99 void FloatingballReporter::ReportFbRestoreMainWindow(const uint32_t& templateType, const std::string& errorReason)
100 {
101 TLOGI(WmsLogTag::WMS_SYSTEM, "Report restore main window to app, templateType:%{public}d", templateType);
102 int32_t ret = HiSysEventWrite(
103 OHOS::HiviewDFX::HiSysEvent::Domain::MULTIWINDOW_UE, EVENT_KEY_RESTORE_FLOATING_BALL_WINDOW,
104 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
105 EVENT_KEY_PNAMEID, PNAMEID,
106 EVENT_KEY_PVERSION, PVERSION,
107 EVENT_KEY_PACKAGE_NAME, GetPackageName(),
108 EVENT_KEY_TEMPLATE_TYPE, templateType,
109 EVENT_KEY_ERROR_REASON, errorReason);
110 if (ret != 0) {
111 TLOGE(WmsLogTag::WMS_SYSTEM, "Write HiSysEvent error, errCode:%{public}d", ret);
112 }
113 }
114
115 } // namespace Rosen
116 } // namespace OHOS
117