123b3eb3cSopenharmony_ci/* 223b3eb3cSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 323b3eb3cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 423b3eb3cSopenharmony_ci * you may not use this file except in compliance with the License. 523b3eb3cSopenharmony_ci * You may obtain a copy of the License at 623b3eb3cSopenharmony_ci * 723b3eb3cSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 823b3eb3cSopenharmony_ci * 923b3eb3cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1023b3eb3cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1123b3eb3cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1223b3eb3cSopenharmony_ci * See the License for the specific language governing permissions and 1323b3eb3cSopenharmony_ci * limitations under the License. 1423b3eb3cSopenharmony_ci */ 1523b3eb3cSopenharmony_ci 1623b3eb3cSopenharmony_ci#include "interaction_impl.h" 1723b3eb3cSopenharmony_ci 1823b3eb3cSopenharmony_ci#include "interaction_manager.h" 1923b3eb3cSopenharmony_ci#include "start_drag_listener_impl.h" 2023b3eb3cSopenharmony_ci 2123b3eb3cSopenharmony_ciusing namespace OHOS::Msdp::DeviceStatus; 2223b3eb3cSopenharmony_ci 2323b3eb3cSopenharmony_cinamespace OHOS::Ace { 2423b3eb3cSopenharmony_ci Msdp::DeviceStatus::DragCursorStyle TranslateDragCursorStyle(OHOS::Ace::DragCursorStyleCore style); 2523b3eb3cSopenharmony_ci Msdp::DeviceStatus::DragResult TranslateDragResult(DragRet dragResult); 2623b3eb3cSopenharmony_ci Msdp::DeviceStatus::PreviewStyle TranslatePreviewStyle(const OHOS::Ace::PreviewStyle& previewStyle); 2723b3eb3cSopenharmony_ci DragRet TranslateDragResult(Msdp::DeviceStatus::DragResult dragResult); 2823b3eb3cSopenharmony_ci Msdp::DeviceStatus::DragBehavior TranslateDragBehavior(OHOS::Ace::DragBehavior dragBehavior); 2923b3eb3cSopenharmony_ci OHOS::Ace::DragBehavior TranslateDragBehavior(Msdp::DeviceStatus::DragBehavior dragBehavior); 3023b3eb3cSopenharmony_ci 3123b3eb3cSopenharmony_ciInteractionInterface* InteractionInterface::GetInstance() 3223b3eb3cSopenharmony_ci{ 3323b3eb3cSopenharmony_ci static InteractionImpl instance; 3423b3eb3cSopenharmony_ci return &instance; 3523b3eb3cSopenharmony_ci} 3623b3eb3cSopenharmony_ci 3723b3eb3cSopenharmony_ciint32_t InteractionImpl::UpdateShadowPic(const OHOS::Ace::ShadowInfoCore& shadowInfo) 3823b3eb3cSopenharmony_ci{ 3923b3eb3cSopenharmony_ci auto pixelMap = shadowInfo.pixelMap; 4023b3eb3cSopenharmony_ci if (!pixelMap) { 4123b3eb3cSopenharmony_ci Msdp::DeviceStatus::ShadowInfo msdpShadowInfo { nullptr, shadowInfo.x, shadowInfo.y }; 4223b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->UpdateShadowPic(msdpShadowInfo); 4323b3eb3cSopenharmony_ci } 4423b3eb3cSopenharmony_ci Msdp::DeviceStatus::ShadowInfo msdpShadowInfo { shadowInfo.pixelMap->GetPixelMapSharedPtr(), shadowInfo.x, 4523b3eb3cSopenharmony_ci shadowInfo.y }; 4623b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->UpdateShadowPic(msdpShadowInfo); 4723b3eb3cSopenharmony_ci} 4823b3eb3cSopenharmony_ci 4923b3eb3cSopenharmony_ciint32_t InteractionImpl::SetDragWindowVisible(bool visible) 5023b3eb3cSopenharmony_ci{ 5123b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->SetDragWindowVisible(visible); 5223b3eb3cSopenharmony_ci} 5323b3eb3cSopenharmony_ci 5423b3eb3cSopenharmony_ciint32_t InteractionImpl::SetMouseDragMonitorState(bool state) 5523b3eb3cSopenharmony_ci{ 5623b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->SetMouseDragMonitorState(state); 5723b3eb3cSopenharmony_ci} 5823b3eb3cSopenharmony_ci 5923b3eb3cSopenharmony_ciint32_t InteractionImpl::StartDrag(const DragDataCore& dragData, 6023b3eb3cSopenharmony_ci std::function<void(const OHOS::Ace::DragNotifyMsg&)> callback) 6123b3eb3cSopenharmony_ci{ 6223b3eb3cSopenharmony_ci std::function<void(const Msdp::DeviceStatus::DragNotifyMsg&)> callbackCore 6323b3eb3cSopenharmony_ci = [=](const Msdp::DeviceStatus::DragNotifyMsg& dragNotifyMsg) { 6423b3eb3cSopenharmony_ci OHOS::Ace::DragNotifyMsg msg { dragNotifyMsg.displayX, dragNotifyMsg.displayY, dragNotifyMsg.targetPid, 6523b3eb3cSopenharmony_ci TranslateDragResult(dragNotifyMsg.result), TranslateDragBehavior(dragNotifyMsg.dragBehavior) }; 6623b3eb3cSopenharmony_ci if (callback) { 6723b3eb3cSopenharmony_ci callback(msg); 6823b3eb3cSopenharmony_ci } 6923b3eb3cSopenharmony_ci }; 7023b3eb3cSopenharmony_ci Msdp::DeviceStatus::DragData msdpDragData { {}, dragData.buffer, dragData.udKey, dragData.extraInfo, 7123b3eb3cSopenharmony_ci dragData.filterInfo, dragData.sourceType, dragData.dragNum, dragData.pointerId, dragData.displayX, 7223b3eb3cSopenharmony_ci dragData.displayY, dragData.displayId, dragData.mainWindow, dragData.hasCanceledAnimation, 7323b3eb3cSopenharmony_ci dragData.hasCoordinateCorrected, dragData.summarys }; 7423b3eb3cSopenharmony_ci for (auto& shadowInfo: dragData.shadowInfos) { 7523b3eb3cSopenharmony_ci if (shadowInfo.pixelMap) { 7623b3eb3cSopenharmony_ci msdpDragData.shadowInfos.push_back({ shadowInfo.pixelMap->GetPixelMapSharedPtr(), 7723b3eb3cSopenharmony_ci shadowInfo.x, shadowInfo.y }); 7823b3eb3cSopenharmony_ci } else { 7923b3eb3cSopenharmony_ci msdpDragData.shadowInfos.push_back({ nullptr, shadowInfo.x, shadowInfo.y }); 8023b3eb3cSopenharmony_ci } 8123b3eb3cSopenharmony_ci } 8223b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->StartDrag(msdpDragData, 8323b3eb3cSopenharmony_ci std::make_shared<StartDragListenerImpl>(callbackCore)); 8423b3eb3cSopenharmony_ci} 8523b3eb3cSopenharmony_ci 8623b3eb3cSopenharmony_ciint32_t InteractionImpl::UpdateDragStyle(OHOS::Ace::DragCursorStyleCore style, const int32_t eventId) 8723b3eb3cSopenharmony_ci{ 8823b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->UpdateDragStyle(TranslateDragCursorStyle(style), eventId); 8923b3eb3cSopenharmony_ci} 9023b3eb3cSopenharmony_ci 9123b3eb3cSopenharmony_ciint32_t InteractionImpl::UpdatePreviewStyle(const OHOS::Ace::PreviewStyle& previewStyle) 9223b3eb3cSopenharmony_ci{ 9323b3eb3cSopenharmony_ci Msdp::DeviceStatus::PreviewStyle msdpPreviewStyle = TranslatePreviewStyle(previewStyle); 9423b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->UpdatePreviewStyle(msdpPreviewStyle); 9523b3eb3cSopenharmony_ci} 9623b3eb3cSopenharmony_ci 9723b3eb3cSopenharmony_ciint32_t InteractionImpl::UpdatePreviewStyleWithAnimation(const OHOS::Ace::PreviewStyle& previewStyle, 9823b3eb3cSopenharmony_ci const OHOS::Ace::PreviewAnimation& animation) 9923b3eb3cSopenharmony_ci{ 10023b3eb3cSopenharmony_ci Msdp::DeviceStatus::PreviewStyle msdpPreviewStyle = TranslatePreviewStyle(previewStyle); 10123b3eb3cSopenharmony_ci Msdp::DeviceStatus::PreviewAnimation msdpAnimation { animation.duration, animation.curveName, animation.curve }; 10223b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->UpdatePreviewStyleWithAnimation(msdpPreviewStyle, msdpAnimation); 10323b3eb3cSopenharmony_ci} 10423b3eb3cSopenharmony_ci 10523b3eb3cSopenharmony_ciint32_t InteractionImpl::StopDrag(DragDropRet result) 10623b3eb3cSopenharmony_ci{ 10723b3eb3cSopenharmony_ci Msdp::DeviceStatus::DragDropResult dragDropResult { TranslateDragResult(result.result), result.hasCustomAnimation, 10823b3eb3cSopenharmony_ci result.mainWindow, TranslateDragBehavior(result.dragBehavior) }; 10923b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->StopDrag(dragDropResult); 11023b3eb3cSopenharmony_ci} 11123b3eb3cSopenharmony_ci 11223b3eb3cSopenharmony_ciint32_t InteractionImpl::GetUdKey(std::string& udKey) 11323b3eb3cSopenharmony_ci{ 11423b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->GetUdKey(udKey); 11523b3eb3cSopenharmony_ci} 11623b3eb3cSopenharmony_ci 11723b3eb3cSopenharmony_ciint32_t InteractionImpl::GetShadowOffset(ShadowOffsetData& shadowOffsetData) 11823b3eb3cSopenharmony_ci{ 11923b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->GetShadowOffset( 12023b3eb3cSopenharmony_ci shadowOffsetData.offsetX, shadowOffsetData.offsetY, shadowOffsetData.width, shadowOffsetData.height); 12123b3eb3cSopenharmony_ci} 12223b3eb3cSopenharmony_ci 12323b3eb3cSopenharmony_ciint32_t InteractionImpl::GetDragSummary(std::map<std::string, int64_t>& summary) 12423b3eb3cSopenharmony_ci{ 12523b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->GetDragSummary(summary); 12623b3eb3cSopenharmony_ci} 12723b3eb3cSopenharmony_ci 12823b3eb3cSopenharmony_ciint32_t InteractionImpl::GetDragExtraInfo(std::string& extraInfo) 12923b3eb3cSopenharmony_ci{ 13023b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->GetExtraInfo(extraInfo); 13123b3eb3cSopenharmony_ci} 13223b3eb3cSopenharmony_ci 13323b3eb3cSopenharmony_ciint32_t InteractionImpl::EnterTextEditorArea(bool enable) 13423b3eb3cSopenharmony_ci{ 13523b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->EnterTextEditorArea(enable); 13623b3eb3cSopenharmony_ci} 13723b3eb3cSopenharmony_ci 13823b3eb3cSopenharmony_ciint32_t InteractionImpl::AddPrivilege() 13923b3eb3cSopenharmony_ci{ 14023b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->AddPrivilege(); 14123b3eb3cSopenharmony_ci} 14223b3eb3cSopenharmony_ci 14323b3eb3cSopenharmony_ciint32_t InteractionImpl::RegisterCoordinationListener(std::function<void()> dragOutCallback) 14423b3eb3cSopenharmony_ci{ 14523b3eb3cSopenharmony_ci std::function<void(Msdp::CoordinationMessage)> callback 14623b3eb3cSopenharmony_ci = [dragOutCallback](Msdp::CoordinationMessage dragNotifyMsg) { 14723b3eb3cSopenharmony_ci if (dragOutCallback && dragNotifyMsg == Msdp::CoordinationMessage::COORDINATION_SUCCESS) { 14823b3eb3cSopenharmony_ci dragOutCallback(); 14923b3eb3cSopenharmony_ci } 15023b3eb3cSopenharmony_ci }; 15123b3eb3cSopenharmony_ci if (consumer_) { 15223b3eb3cSopenharmony_ci UnRegisterCoordinationListener(); 15323b3eb3cSopenharmony_ci } 15423b3eb3cSopenharmony_ci consumer_ = std::make_shared<CoordinationListenerImpl>(callback); 15523b3eb3cSopenharmony_ci return InteractionManager::GetInstance()->RegisterCoordinationListener(consumer_); 15623b3eb3cSopenharmony_ci} 15723b3eb3cSopenharmony_ci 15823b3eb3cSopenharmony_ciint32_t InteractionImpl::UnRegisterCoordinationListener() 15923b3eb3cSopenharmony_ci{ 16023b3eb3cSopenharmony_ci CHECK_NULL_RETURN(consumer_, 0); 16123b3eb3cSopenharmony_ci auto ret = InteractionManager::GetInstance()->UnregisterCoordinationListener(consumer_); 16223b3eb3cSopenharmony_ci consumer_ = nullptr; 16323b3eb3cSopenharmony_ci return ret; 16423b3eb3cSopenharmony_ci} 16523b3eb3cSopenharmony_ci 16623b3eb3cSopenharmony_ciMsdp::DeviceStatus::DragCursorStyle TranslateDragCursorStyle(OHOS::Ace::DragCursorStyleCore style) 16723b3eb3cSopenharmony_ci{ 16823b3eb3cSopenharmony_ci switch (style) { 16923b3eb3cSopenharmony_ci case OHOS::Ace::DragCursorStyleCore::DEFAULT: 17023b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragCursorStyle::DEFAULT; 17123b3eb3cSopenharmony_ci case OHOS::Ace::DragCursorStyleCore::FORBIDDEN: 17223b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragCursorStyle::FORBIDDEN; 17323b3eb3cSopenharmony_ci case OHOS::Ace::DragCursorStyleCore::COPY: 17423b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragCursorStyle::COPY; 17523b3eb3cSopenharmony_ci case OHOS::Ace::DragCursorStyleCore::MOVE: 17623b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragCursorStyle::MOVE; 17723b3eb3cSopenharmony_ci default: 17823b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragCursorStyle::DEFAULT; 17923b3eb3cSopenharmony_ci } 18023b3eb3cSopenharmony_ci} 18123b3eb3cSopenharmony_ci 18223b3eb3cSopenharmony_ciMsdp::DeviceStatus::DragResult TranslateDragResult(DragRet dragResult) 18323b3eb3cSopenharmony_ci{ 18423b3eb3cSopenharmony_ci switch (dragResult) { 18523b3eb3cSopenharmony_ci case DragRet::DRAG_SUCCESS: 18623b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragResult::DRAG_SUCCESS; 18723b3eb3cSopenharmony_ci case DragRet::DRAG_FAIL: 18823b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragResult::DRAG_FAIL; 18923b3eb3cSopenharmony_ci case DragRet::DRAG_CANCEL: 19023b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragResult::DRAG_CANCEL; 19123b3eb3cSopenharmony_ci default: 19223b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragResult::DRAG_SUCCESS; 19323b3eb3cSopenharmony_ci } 19423b3eb3cSopenharmony_ci} 19523b3eb3cSopenharmony_ci 19623b3eb3cSopenharmony_ciMsdp::DeviceStatus::PreviewStyle TranslatePreviewStyle(const OHOS::Ace::PreviewStyle& previewStyle) 19723b3eb3cSopenharmony_ci{ 19823b3eb3cSopenharmony_ci Msdp::DeviceStatus::PreviewStyle msdpPreviewStyle; 19923b3eb3cSopenharmony_ci for (auto& previewType: previewStyle.types) { 20023b3eb3cSopenharmony_ci switch (previewType) { 20123b3eb3cSopenharmony_ci case OHOS::Ace::PreviewType::FOREGROUND_COLOR: 20223b3eb3cSopenharmony_ci msdpPreviewStyle.types.push_back(Msdp::DeviceStatus::PreviewType::FOREGROUND_COLOR); 20323b3eb3cSopenharmony_ci break; 20423b3eb3cSopenharmony_ci case OHOS::Ace::PreviewType::OPACITY: 20523b3eb3cSopenharmony_ci msdpPreviewStyle.types.push_back(Msdp::DeviceStatus::PreviewType::OPACITY); 20623b3eb3cSopenharmony_ci break; 20723b3eb3cSopenharmony_ci case OHOS::Ace::PreviewType::RADIUS: 20823b3eb3cSopenharmony_ci msdpPreviewStyle.types.push_back(Msdp::DeviceStatus::PreviewType::RADIUS); 20923b3eb3cSopenharmony_ci break; 21023b3eb3cSopenharmony_ci case OHOS::Ace::PreviewType::SCALE: 21123b3eb3cSopenharmony_ci msdpPreviewStyle.types.push_back(Msdp::DeviceStatus::PreviewType::SCALE); 21223b3eb3cSopenharmony_ci break; 21323b3eb3cSopenharmony_ci default: 21423b3eb3cSopenharmony_ci msdpPreviewStyle.types.push_back(Msdp::DeviceStatus::PreviewType::FOREGROUND_COLOR); 21523b3eb3cSopenharmony_ci break; 21623b3eb3cSopenharmony_ci } 21723b3eb3cSopenharmony_ci } 21823b3eb3cSopenharmony_ci msdpPreviewStyle.foregroundColor = previewStyle.foregroundColor; 21923b3eb3cSopenharmony_ci msdpPreviewStyle.opacity = previewStyle.opacity; 22023b3eb3cSopenharmony_ci msdpPreviewStyle.radius = previewStyle.radius; 22123b3eb3cSopenharmony_ci msdpPreviewStyle.scale = previewStyle.scale; 22223b3eb3cSopenharmony_ci return msdpPreviewStyle; 22323b3eb3cSopenharmony_ci} 22423b3eb3cSopenharmony_ci 22523b3eb3cSopenharmony_ciDragRet TranslateDragResult(Msdp::DeviceStatus::DragResult dragResult) 22623b3eb3cSopenharmony_ci{ 22723b3eb3cSopenharmony_ci switch (dragResult) { 22823b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragResult::DRAG_SUCCESS: 22923b3eb3cSopenharmony_ci return DragRet::DRAG_SUCCESS; 23023b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragResult::DRAG_FAIL: 23123b3eb3cSopenharmony_ci return DragRet::DRAG_FAIL; 23223b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragResult::DRAG_CANCEL: 23323b3eb3cSopenharmony_ci return DragRet::DRAG_CANCEL; 23423b3eb3cSopenharmony_ci default: 23523b3eb3cSopenharmony_ci return DragRet::DRAG_SUCCESS; 23623b3eb3cSopenharmony_ci } 23723b3eb3cSopenharmony_ci} 23823b3eb3cSopenharmony_ci 23923b3eb3cSopenharmony_ciint32_t InteractionImpl::GetDragState(DragState& dragState) const 24023b3eb3cSopenharmony_ci{ 24123b3eb3cSopenharmony_ci Msdp::DeviceStatus::DragState state; 24223b3eb3cSopenharmony_ci int32_t ret = InteractionManager::GetInstance()->GetDragState(state); 24323b3eb3cSopenharmony_ci switch (state) { 24423b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragState::ERROR: 24523b3eb3cSopenharmony_ci dragState = DragState::ERROR; 24623b3eb3cSopenharmony_ci break; 24723b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragState::START: 24823b3eb3cSopenharmony_ci dragState = DragState::START; 24923b3eb3cSopenharmony_ci break; 25023b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragState::STOP: 25123b3eb3cSopenharmony_ci dragState = DragState::STOP; 25223b3eb3cSopenharmony_ci break; 25323b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragState::CANCEL: 25423b3eb3cSopenharmony_ci dragState = DragState::CANCEL; 25523b3eb3cSopenharmony_ci break; 25623b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragState::MOTION_DRAGGING: 25723b3eb3cSopenharmony_ci dragState = DragState::MOTION_DRAGGING; 25823b3eb3cSopenharmony_ci break; 25923b3eb3cSopenharmony_ci default: 26023b3eb3cSopenharmony_ci dragState = DragState::ERROR; 26123b3eb3cSopenharmony_ci LOGW("unknow msdp drag state: %d", state); 26223b3eb3cSopenharmony_ci break; 26323b3eb3cSopenharmony_ci } 26423b3eb3cSopenharmony_ci return ret; 26523b3eb3cSopenharmony_ci} 26623b3eb3cSopenharmony_ci 26723b3eb3cSopenharmony_ciMsdp::DeviceStatus::DragBehavior TranslateDragBehavior(OHOS::Ace::DragBehavior dragBehavior) 26823b3eb3cSopenharmony_ci{ 26923b3eb3cSopenharmony_ci switch (dragBehavior) { 27023b3eb3cSopenharmony_ci case OHOS::Ace::DragBehavior::COPY: 27123b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragBehavior::COPY; 27223b3eb3cSopenharmony_ci case OHOS::Ace::DragBehavior::MOVE: 27323b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragBehavior::MOVE; 27423b3eb3cSopenharmony_ci default: 27523b3eb3cSopenharmony_ci return Msdp::DeviceStatus::DragBehavior::UNKNOWN; 27623b3eb3cSopenharmony_ci } 27723b3eb3cSopenharmony_ci} 27823b3eb3cSopenharmony_ciOHOS::Ace::DragBehavior TranslateDragBehavior(Msdp::DeviceStatus::DragBehavior dragBehavior) 27923b3eb3cSopenharmony_ci{ 28023b3eb3cSopenharmony_ci switch (dragBehavior) { 28123b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragBehavior::COPY: 28223b3eb3cSopenharmony_ci return OHOS::Ace::DragBehavior::COPY; 28323b3eb3cSopenharmony_ci case Msdp::DeviceStatus::DragBehavior::MOVE: 28423b3eb3cSopenharmony_ci return OHOS::Ace::DragBehavior::MOVE; 28523b3eb3cSopenharmony_ci default: 28623b3eb3cSopenharmony_ci return OHOS::Ace::DragBehavior::UNKNOWN; 28723b3eb3cSopenharmony_ci } 28823b3eb3cSopenharmony_ci} 28923b3eb3cSopenharmony_ci 29023b3eb3cSopenharmony_ci} // namespace OHOS::Ace