• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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