!36842 [新需求]: web文本失焦上报事件

Merge pull request !36842 from llzr/wjc
This commit is contained in:
openharmony_ci 2024-07-05 02:46:43 +00:00 committed by Gitee
commit 8d8467881b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
21 changed files with 259 additions and 7 deletions

View File

@ -1745,6 +1745,20 @@ UIContentErrorCode UIContentImpl::CommonInitialize(
TaskExecutor::TaskType::UI, "UiSessionGetInspectorTree"); TaskExecutor::TaskType::UI, "UiSessionGetInspectorTree");
}; };
UiSessionManager::GetInstance().SaveInspectorTreeFunction(callback); UiSessionManager::GetInstance().SaveInspectorTreeFunction(callback);
auto webCallback = [weakContext = WeakPtr(pipeline)](bool isRegister) {
auto pipeline = AceType::DynamicCast<NG::PipelineContext>(weakContext.Upgrade());
CHECK_NULL_VOID(pipeline);
auto taskExecutor = pipeline->GetTaskExecutor();
CHECK_NULL_VOID(taskExecutor);
taskExecutor->PostTask(
[weakContext = WeakPtr(pipeline), isRegister]() {
auto pipeline = AceType::DynamicCast<NG::PipelineContext>(weakContext.Upgrade());
CHECK_NULL_VOID(pipeline);
pipeline->NotifyAllWebPattern(isRegister);
},
TaskExecutor::TaskType::UI, "UiSessionRegisterWebPattern");
};
UiSessionManager::GetInstance().SaveRegisterForWebFunction(webCallback);
return errorCode; return errorCode;
} }

View File

@ -148,6 +148,27 @@ int32_t UIContentServiceProxy::RegisterComponentChangeEventCallback(const EventC
return NO_ERROR; return NO_ERROR;
} }
int32_t UIContentServiceProxy::RegisterWebUnfocusEventCallback(
const std::function<void(int64_t accessibilityId, const std::string& data)>& eventCallback)
{
MessageParcel data;
MessageParcel reply;
MessageOption option;
if (!data.WriteInterfaceToken(GetDescriptor())) {
LOGW("RegisterWebUnfocusEventCallback write interface token failed");
return FAILED;
}
if (report_ == nullptr) {
LOGW("reportStub is nullptr,connect is not execute");
}
report_->RegisterWebUnfocusEventCallback(eventCallback);
if (Remote()->SendRequest(REGISTER_WEB_UNFOCUS_EVENT, data, reply, option) != ERR_NONE) {
LOGW("RegisterWebUnfocusEventCallback send request failed");
return REPLY_ERROR;
}
return NO_ERROR;
}
int32_t UIContentServiceProxy::UnregisterClickEventCallback() int32_t UIContentServiceProxy::UnregisterClickEventCallback()
{ {
MessageParcel data; MessageParcel data;
@ -227,4 +248,24 @@ int32_t UIContentServiceProxy::UnregisterComponentChangeEventCallback()
} }
return NO_ERROR; return NO_ERROR;
} }
int32_t UIContentServiceProxy::UnregisterWebUnfocusEventCallback()
{
MessageParcel data;
MessageParcel reply;
MessageOption option;
if (!data.WriteInterfaceToken(GetDescriptor())) {
LOGW("UnregisterComponentChangeEventCallback write interface token failed");
return FAILED;
}
if (report_ == nullptr) {
LOGW("reportStub is nullptr,connect is not execute");
}
report_->UnregisterComponentChangeEventCallback();
if (Remote()->SendRequest(UNREGISTER_COMPONENT_EVENT, data, reply, option) != ERR_NONE) {
LOGW("UnregisterComponentChangeEventCallback send request failed");
return REPLY_ERROR;
}
return NO_ERROR;
}
} // namespace OHOS::Ace } // namespace OHOS::Ace

View File

@ -68,6 +68,10 @@ int32_t UiContentStub::OnRemoteRequest(uint32_t code, MessageParcel& data, Messa
UnregisterComponentChangeEventCallbackInner(data, reply, option); UnregisterComponentChangeEventCallbackInner(data, reply, option);
break; break;
} }
case UNREGISTER_WEB_UNFOCUS_EVENT: {
UnregisterWebUnfocusEventCallbackInner(data, reply, option);
break;
}
default: { default: {
LOGI("ui_session unknown transaction code %{public}d", code); LOGI("ui_session unknown transaction code %{public}d", code);
return IPCObjectStub::OnRemoteRequest(code, data, reply, option); return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
@ -121,6 +125,13 @@ int32_t UiContentStub::RegisterComponentChangeEventCallbackInner(
return NO_ERROR; return NO_ERROR;
} }
int32_t UiContentStub::RegisterWebUnfocusEventCallbackInner(
MessageParcel& data, MessageParcel& reply, MessageOption& option)
{
reply.WriteInt32(RegisterWebUnfocusEventCallback(nullptr));
return NO_ERROR;
}
int32_t UiContentStub::UnregisterClickEventCallbackInner( int32_t UiContentStub::UnregisterClickEventCallbackInner(
MessageParcel& data, MessageParcel& reply, MessageOption& option) MessageParcel& data, MessageParcel& reply, MessageOption& option)
{ {
@ -148,4 +159,11 @@ int32_t UiContentStub::UnregisterComponentChangeEventCallbackInner(
reply.WriteInt32(UnregisterComponentChangeEventCallback()); reply.WriteInt32(UnregisterComponentChangeEventCallback());
return NO_ERROR; return NO_ERROR;
} }
int32_t UiContentStub::UnregisterWebUnfocusEventCallbackInner(
MessageParcel& data, MessageParcel& reply, MessageOption& option)
{
reply.WriteInt32(UnregisterWebUnfocusEventCallback());
return NO_ERROR;
}
} // namespace OHOS::Ace } // namespace OHOS::Ace

View File

@ -47,6 +47,14 @@ int32_t UIContentServiceStubImpl::RegisterComponentChangeEventCallback(const Eve
UiSessionManager::GetInstance().SetComponentChangeEventRegistered(true); UiSessionManager::GetInstance().SetComponentChangeEventRegistered(true);
return NO_ERROR; return NO_ERROR;
} }
int32_t UIContentServiceStubImpl::RegisterWebUnfocusEventCallback(
const std::function<void(int64_t accessibilityId, const std::string& data)>& eventCallback)
{
UiSessionManager::GetInstance().NotifyAllWebPattern(true);
return NO_ERROR;
}
int32_t UIContentServiceStubImpl::UnregisterClickEventCallback() int32_t UIContentServiceStubImpl::UnregisterClickEventCallback()
{ {
UiSessionManager::GetInstance().SetClickEventRegistered(false); UiSessionManager::GetInstance().SetClickEventRegistered(false);
@ -67,4 +75,10 @@ int32_t UIContentServiceStubImpl::UnregisterComponentChangeEventCallback()
UiSessionManager::GetInstance().SetComponentChangeEventRegistered(false); UiSessionManager::GetInstance().SetComponentChangeEventRegistered(false);
return NO_ERROR; return NO_ERROR;
} }
int32_t UIContentServiceStubImpl::UnregisterWebUnfocusEventCallback()
{
UiSessionManager::GetInstance().NotifyAllWebPattern(false);
return NO_ERROR;
}
} // namespace OHOS::Ace } // namespace OHOS::Ace

View File

@ -120,4 +120,25 @@ void UiReportProxy::OnComponentChange(const std::string& key, const std::string&
} }
} }
void UiReportProxy::ReportWebUnfocusEvent(int64_t accessibilityId, const std::string& data)
{
MessageParcel messageData;
MessageParcel reply;
MessageOption option;
if (!messageData.WriteInterfaceToken(GetDescriptor())) {
LOGW("ReportWebUnfocusEvent write interface token failed");
return;
}
if (!messageData.WriteString(data)) {
LOGW("ReportWebUnfocusEvent write data failed");
return;
}
if (!messageData.WriteInt64(accessibilityId)) {
LOGW("ReportWebUnfocusEvent write data failed");
return;
}
if (Remote()->SendRequest(REPORT_WEB_UNFOCUS_EVENT, messageData, reply, option) != ERR_NONE) {
LOGW("ReportWebUnfocusEvent send request failed");
}
}
} // namespace OHOS::Ace } // namespace OHOS::Ace

View File

@ -46,6 +46,11 @@ int32_t UiReportStub::OnRemoteRequest(uint32_t code, MessageParcel& data, Messag
ReportInspectorTreeValue(result); ReportInspectorTreeValue(result);
break; break;
} }
case REPORT_WEB_UNFOCUS_EVENT: {
int64_t accessibilityId = data.ReadInt64();
ReportWebUnfocusEvent(accessibilityId, result);
break;
}
default: { default: {
LOGI("ui_session unknown transaction code %{public}d", code); LOGI("ui_session unknown transaction code %{public}d", code);
return IPCObjectStub::OnRemoteRequest(code, data, reply, option); return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
@ -89,6 +94,13 @@ void UiReportStub::ReportInspectorTreeValue(const std::string& data)
} }
} }
void UiReportStub::ReportWebUnfocusEvent(int64_t accessibilityId, const std::string& data)
{
if (unfocusEvent_ != nullptr) {
unfocusEvent_(accessibilityId, data);
}
}
void UiReportStub::RegisterClickEventCallback(const EventCallback& eventCallback) void UiReportStub::RegisterClickEventCallback(const EventCallback& eventCallback)
{ {
clickEventCallback_ = std::move(eventCallback); clickEventCallback_ = std::move(eventCallback);
@ -113,6 +125,13 @@ void UiReportStub::RegisterComponentChangeEventCallback(const EventCallback& eve
{ {
ComponentChangeEventCallback_ = std::move(eventCallback); ComponentChangeEventCallback_ = std::move(eventCallback);
} }
void UiReportStub::RegisterWebUnfocusEventCallback(
const std::function<void(int64_t accessibilityId, const std::string& data)>& eventCallback)
{
unfocusEvent_ = std::move(eventCallback);
}
void UiReportStub::UnregisterClickEventCallback() void UiReportStub::UnregisterClickEventCallback()
{ {
clickEventCallback_ = nullptr; clickEventCallback_ = nullptr;

View File

@ -75,6 +75,18 @@ void UiSessionManager::ReportComponentChangeEvent(const std::string& key, const
} }
} }
void UiSessionManager::ReportWebUnfocusEvent(int64_t accessibilityId, const std::string& data)
{
for (auto pair : reportObjectMap_) {
auto reportService = iface_cast<ReportService>(pair.second);
if (reportService != nullptr) {
reportService->ReportWebUnfocusEvent(accessibilityId, data);
} else {
LOGW("report web unfocus event failed,process id:%{public}d", pair.first);
}
}
}
void UiSessionManager::SaveReportStub(sptr<IRemoteObject> reportStub, int32_t processId) void UiSessionManager::SaveReportStub(sptr<IRemoteObject> reportStub, int32_t processId)
{ {
reportObjectMap_.emplace(processId, reportStub); reportObjectMap_.emplace(processId, reportStub);
@ -184,6 +196,22 @@ void UiSessionManager::ReportInspectorTreeValue(const std::string& data)
} }
} }
void UiSessionManager::NotifyAllWebPattern(bool isRegister)
{
webFocusEventRegistered = isRegister;
notifyWebFunction_(isRegister);
}
void UiSessionManager::SaveRegisterForWebFunction(NotifyAllWebFunction&& function)
{
notifyWebFunction_ = std::move(function);
}
bool UiSessionManager::GetWebFocusRegistered()
{
return webFocusEventRegistered;
}
void UiSessionManager::OnRouterChange(const std::string& path, const std::string& event) void UiSessionManager::OnRouterChange(const std::string& path, const std::string& event)
{ {
if (GetRouterChangeEventRegistered()) { if (GetRouterChangeEventRegistered()) {

View File

@ -4721,4 +4721,23 @@ void FrameNode::ProcessFrameNodeChangeFlag()
pattern->OnFrameNodeChanged(changeFlag); pattern->OnFrameNodeChanged(changeFlag);
} }
} }
void FrameNode::NotifyWebPattern(bool isRegister)
{
#if !defined(PREVIEW) && !defined(ACE_UNITTEST) && defined(WEB_SUPPORTED)
if (GetTag() == V2::WEB_ETS_TAG) {
auto pattern = GetPattern<NG::WebPattern>();
CHECK_NULL_VOID(pattern);
if (isRegister) {
auto callback = [](int64_t accessibilityId, const std::string data) {
UiSessionManager::GetInstance().ReportWebUnfocusEvent(accessibilityId, data);
};
pattern->RegisterTextBlurCallback(callback);
} else {
pattern->UnRegisterTextBlurCallback();
}
}
#endif
UINode::NotifyWebPattern(isRegister);
}
} // namespace OHOS::Ace::NG } // namespace OHOS::Ace::NG

View File

@ -934,6 +934,7 @@ public:
ChildrenListWithGuard GetAllChildren(); ChildrenListWithGuard GetAllChildren();
OPINC_TYPE_E FindSuggestOpIncNode(std::string& path, const SizeF& boundary, int32_t depth); OPINC_TYPE_E FindSuggestOpIncNode(std::string& path, const SizeF& boundary, int32_t depth);
void GetInspectorValue() override; void GetInspectorValue() override;
void NotifyWebPattern(bool isRegister) override;
FrameNodeChangeInfoFlag GetChangeInfoFlag() FrameNodeChangeInfoFlag GetChangeInfoFlag()
{ {

View File

@ -1448,4 +1448,11 @@ void UINode::GetInspectorValue()
item->GetInspectorValue(); item->GetInspectorValue();
} }
} }
void UINode::NotifyWebPattern(bool isRegister)
{
for (const auto& item : GetChildren()) {
item->NotifyWebPattern(isRegister);
}
}
} // namespace OHOS::Ace::NG } // namespace OHOS::Ace::NG

View File

@ -713,6 +713,7 @@ public:
} }
virtual void GetInspectorValue(); virtual void GetInspectorValue();
virtual void NotifyWebPattern(bool isRegister);
protected: protected:
std::list<RefPtr<UINode>>& ModifyChildren() std::list<RefPtr<UINode>>& ModifyChildren()
@ -775,7 +776,6 @@ protected:
virtual void PaintDebugBoundary(bool flag) {} virtual void PaintDebugBoundary(bool flag) {}
PipelineContext* context_ = nullptr; PipelineContext* context_ = nullptr;
private: private:
void DoAddChild(std::list<RefPtr<UINode>>::iterator& it, const RefPtr<UINode>& child, bool silently = false, void DoAddChild(std::list<RefPtr<UINode>>::iterator& it, const RefPtr<UINode>& child, bool silently = false,
bool addDefaultTransition = false); bool addDefaultTransition = false);

View File

@ -24,6 +24,9 @@
#include "input_method_controller.h" #include "input_method_controller.h"
#include "parameters.h" #include "parameters.h"
#if !defined(PREVIEW) && !defined(ACE_UNITTEST)
#include "interfaces/inner_api/ui_session/ui_session_manager.h"
#endif
#include "base/geometry/ng/offset_t.h" #include "base/geometry/ng/offset_t.h"
#include "base/image/file_uri_helper.h" #include "base/image/file_uri_helper.h"
#include "base/mousestyle/mouse_style.h" #include "base/mousestyle/mouse_style.h"
@ -320,6 +323,14 @@ void WebPattern::OnAttachToFrameNode()
} }
}); });
UpdateTransformHintChangedCallbackId(callbackId); UpdateTransformHintChangedCallbackId(callbackId);
#if !defined(PREVIEW) && !defined(ACE_UNITTEST)
if (UiSessionManager::GetInstance().GetWebFocusRegistered()) {
auto callback = [](int64_t accessibilityId, const std::string data) {
UiSessionManager::GetInstance().ReportWebUnfocusEvent(accessibilityId, data);
};
RegisterTextBlurCallback(callback);
}
#endif
} }
void WebPattern::OnDetachFromFrameNode(FrameNode* frameNode) void WebPattern::OnDetachFromFrameNode(FrameNode* frameNode)
@ -339,6 +350,11 @@ void WebPattern::OnDetachFromFrameNode(FrameNode* frameNode)
if (HasTransformHintChangedCallbackId()) { if (HasTransformHintChangedCallbackId()) {
pipeline->UnregisterTransformHintChangedCallback(transformHintChangedCallbackId_.value_or(-1)); pipeline->UnregisterTransformHintChangedCallback(transformHintChangedCallbackId_.value_or(-1));
} }
#if !defined(PREVIEW) && !defined(ACE_UNITTEST)
if (UiSessionManager::GetInstance().GetWebFocusRegistered()) {
UnRegisterTextBlurCallback();
}
#endif
} }
void WebPattern::SetRotation(uint32_t rotation) void WebPattern::SetRotation(uint32_t rotation)

View File

@ -3973,4 +3973,9 @@ void PipelineContext::CleanNodeChangeFlag()
} }
} }
} }
void PipelineContext::NotifyAllWebPattern(bool isRegister)
{
rootNode_->NotifyWebPattern(isRegister);
}
} // namespace OHOS::Ace::NG } // namespace OHOS::Ace::NG

View File

@ -803,7 +803,7 @@ public:
lastVsyncEndTimestamp_ = lastVsyncEndTimestamp; lastVsyncEndTimestamp_ = lastVsyncEndTimestamp;
} }
void GetInspectorTree(); void GetInspectorTree();
void NotifyAllWebPattern(bool isRegister);
void AddFrameNodeChangeListener(const RefPtr<FrameNode>& node); void AddFrameNodeChangeListener(const RefPtr<FrameNode>& node);
void RemoveFrameNodeChangeListener(const RefPtr<FrameNode>& node); void RemoveFrameNodeChangeListener(const RefPtr<FrameNode>& node);
void AddChangedFrameNode(const RefPtr<FrameNode>& node); void AddChangedFrameNode(const RefPtr<FrameNode>& node);

View File

@ -31,10 +31,13 @@ public:
virtual int32_t RegisterRouterChangeEventCallback(const EventCallback& eventCallback) override; virtual int32_t RegisterRouterChangeEventCallback(const EventCallback& eventCallback) override;
virtual int32_t RegisterSearchEventCallback(const EventCallback& eventCallback) override; virtual int32_t RegisterSearchEventCallback(const EventCallback& eventCallback) override;
virtual int32_t RegisterComponentChangeEventCallback(const EventCallback& eventCallback) override; virtual int32_t RegisterComponentChangeEventCallback(const EventCallback& eventCallback) override;
virtual int32_t RegisterWebUnfocusEventCallback(
const std::function<void(int64_t accessibilityId, const std::string& data)>& eventCallback) override;
virtual int32_t UnregisterClickEventCallback() override; virtual int32_t UnregisterClickEventCallback() override;
virtual int32_t UnregisterSearchEventCallback() override; virtual int32_t UnregisterSearchEventCallback() override;
virtual int32_t UnregisterRouterChangeEventCallback() override; virtual int32_t UnregisterRouterChangeEventCallback() override;
virtual int32_t UnregisterComponentChangeEventCallback() override; virtual int32_t UnregisterComponentChangeEventCallback() override;
virtual int32_t UnregisterWebUnfocusEventCallback() override;
private: private:
static inline BrokerDelegator<UIContentServiceProxy> delegator_; static inline BrokerDelegator<UIContentServiceProxy> delegator_;

View File

@ -33,11 +33,12 @@ public:
REGISTER_SEARCH_EVENT, REGISTER_SEARCH_EVENT,
REGISTER_ROUTER_CHANGE_EVENT, REGISTER_ROUTER_CHANGE_EVENT,
REGISTER_COMPONENT_EVENT, REGISTER_COMPONENT_EVENT,
REGISTER_WEB_UNFOCUS_EVENT,
UNREGISTER_CLICK_EVENT, UNREGISTER_CLICK_EVENT,
UNREGISTER_SEARCH_EVENT, UNREGISTER_SEARCH_EVENT,
UNREGISTER_ROUTER_CHANGE_EVENT, UNREGISTER_ROUTER_CHANGE_EVENT,
UNREGISTER_COMPONENT_EVENT, UNREGISTER_COMPONENT_EVENT,
UNREGISTER_WEB_UNFOCUS_EVENT,
}; };
/** /**
@ -76,6 +77,13 @@ public:
*/ */
virtual int32_t RegisterComponentChangeEventCallback(const EventCallback& eventCallback) = 0; virtual int32_t RegisterComponentChangeEventCallback(const EventCallback& eventCallback) = 0;
/**
* @description: define register a callback on web unfocus event occur to execute interface
* @return: result number
*/
virtual int32_t RegisterWebUnfocusEventCallback(
const std::function<void(int64_t accessibilityId, const std::string& data)>& eventCallback) = 0;
/** /**
* @description: define unregister the click event occur callback last register interface * @description: define unregister the click event occur callback last register interface
* @return: result number * @return: result number
@ -99,6 +107,12 @@ public:
* @return: result number * @return: result number
*/ */
virtual int32_t UnregisterComponentChangeEventCallback() = 0; virtual int32_t UnregisterComponentChangeEventCallback() = 0;
/**
* @description: define unregister the web focus event occur callback last register interface
* @return: result number
*/
virtual int32_t UnregisterWebUnfocusEventCallback() = 0;
}; };
class ACE_FORCE_EXPORT ReportService : public OHOS::IRemoteBroker { class ACE_FORCE_EXPORT ReportService : public OHOS::IRemoteBroker {
public: public:
@ -111,7 +125,8 @@ public:
REPORT_SWITCH_EVENT, REPORT_SWITCH_EVENT,
REPORT_COMPONENT_EVENT, REPORT_COMPONENT_EVENT,
REPORT_SEARCH_EVENT, REPORT_SEARCH_EVENT,
REPORT_INSPECTOR_VALUE REPORT_INSPECTOR_VALUE,
REPORT_WEB_UNFOCUS_EVENT
}; };
/** /**
@ -138,6 +153,11 @@ public:
* @description: define reports inspector value to the proxy interface * @description: define reports inspector value to the proxy interface
*/ */
virtual void ReportInspectorTreeValue(const std::string& data) = 0; virtual void ReportInspectorTreeValue(const std::string& data) = 0;
/**
* @description: define reports web unfocus value to the proxy interface
*/
virtual void ReportWebUnfocusEvent(int64_t accessibilityId, const std::string& data) = 0;
}; };
} // namespace OHOS::Ace } // namespace OHOS::Ace
#endif // FOUNDATION_ACE_INTERFACE_UI_CONTENT_SERVICE_INTERFACE_H #endif // FOUNDATION_ACE_INTERFACE_UI_CONTENT_SERVICE_INTERFACE_H

View File

@ -34,11 +34,13 @@ private:
int32_t RegisterRouterChangeEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option); int32_t RegisterRouterChangeEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t RegisterSearchEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option); int32_t RegisterSearchEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t RegisterComponentChangeEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option); int32_t RegisterComponentChangeEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t RegisterWebUnfocusEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t UnregisterClickEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option); int32_t UnregisterClickEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t UnregisterSearchEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option); int32_t UnregisterSearchEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t UnregisterRouterChangeEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option); int32_t UnregisterRouterChangeEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t UnregisterComponentChangeEventCallbackInner( int32_t UnregisterComponentChangeEventCallbackInner(
MessageParcel& data, MessageParcel& reply, MessageOption& option); MessageParcel& data, MessageParcel& reply, MessageOption& option);
int32_t UnregisterWebUnfocusEventCallbackInner(MessageParcel& data, MessageParcel& reply, MessageOption& option);
}; };
} // namespace OHOS::Ace } // namespace OHOS::Ace
#endif // FOUNDATION_ACE_INTERFACE_UI_CONTENT_STUB_H #endif // FOUNDATION_ACE_INTERFACE_UI_CONTENT_STUB_H

View File

@ -36,11 +36,13 @@ public:
int32_t RegisterRouterChangeEventCallback(const EventCallback& eventCallback) override; int32_t RegisterRouterChangeEventCallback(const EventCallback& eventCallback) override;
int32_t RegisterSearchEventCallback(const EventCallback& eventCallback) override; int32_t RegisterSearchEventCallback(const EventCallback& eventCallback) override;
int32_t RegisterComponentChangeEventCallback(const EventCallback& eventCallback) override; int32_t RegisterComponentChangeEventCallback(const EventCallback& eventCallback) override;
int32_t RegisterWebUnfocusEventCallback(
const std::function<void(int64_t accessibilityId, const std::string& data)>& eventCallback) override;
int32_t UnregisterClickEventCallback() override; int32_t UnregisterClickEventCallback() override;
int32_t UnregisterSearchEventCallback() override; int32_t UnregisterSearchEventCallback() override;
int32_t UnregisterRouterChangeEventCallback() override; int32_t UnregisterRouterChangeEventCallback() override;
int32_t UnregisterComponentChangeEventCallback() override; int32_t UnregisterComponentChangeEventCallback() override;
int32_t UnregisterWebUnfocusEventCallback() override;
}; };
} // namespace OHOS::Ace } // namespace OHOS::Ace
#endif // FOUNDATION_ACE_INTERFACE_UI_CONTENT_STUB_IMPL_H #endif // FOUNDATION_ACE_INTERFACE_UI_CONTENT_STUB_IMPL_H

View File

@ -52,6 +52,10 @@ public:
*/ */
void ReportInspectorTreeValue(const std::string& data) override; void ReportInspectorTreeValue(const std::string& data) override;
/**
* @description: notify stub side to report web unfocus value
*/
void ReportWebUnfocusEvent(int64_t accessibilityId, const std::string& data) override;
void OnComponentChange(const std::string& key, const std::string& value); void OnComponentChange(const std::string& key, const std::string& value);
private: private:

View File

@ -79,6 +79,13 @@ public:
*/ */
void RegisterGetInspectorTreeCallback(const EventCallback& eventCallback); void RegisterGetInspectorTreeCallback(const EventCallback& eventCallback);
/**
* @description: register a callback when get inspector tree
* @param eventCallback callback to be performed
*/
void RegisterWebUnfocusEventCallback(
const std::function<void(int64_t accessibilityId, const std::string& data)>& eventCallback);
/** /**
* @description: unregister the click callback last register * @description: unregister the click callback last register
*/ */
@ -104,12 +111,18 @@ public:
*/ */
void ReportInspectorTreeValue(const std::string& data) override; void ReportInspectorTreeValue(const std::string& data) override;
/**
* @description: report web unfocus value for SA
*/
void ReportWebUnfocusEvent(int64_t accessibilityId, const std::string& data) override;
private: private:
EventCallback clickEventCallback_; EventCallback clickEventCallback_;
EventCallback searchEventCallback_; EventCallback searchEventCallback_;
EventCallback RouterChangeEventCallback_; EventCallback RouterChangeEventCallback_;
EventCallback ComponentChangeEventCallback_; EventCallback ComponentChangeEventCallback_;
EventCallback inspectorTreeCallback_; EventCallback inspectorTreeCallback_;
std::function<void(int64_t accessibilityId, const std::string& data)> unfocusEvent_;
}; };
} // namespace OHOS::Ace } // namespace OHOS::Ace
#endif // FOUNDATION_ACE_INTERFACE_UI_REPORT_STUB_H #endif // FOUNDATION_ACE_INTERFACE_UI_REPORT_STUB_H

View File

@ -28,7 +28,7 @@ namespace OHOS::Ace {
class ACE_FORCE_EXPORT UiSessionManager { class ACE_FORCE_EXPORT UiSessionManager {
public: public:
using InspectorFunction = std::function<void()>; using InspectorFunction = std::function<void()>;
using NotifyAllWebFunction = std::function<void(bool isRegister)>;
/** /**
* @description: Get ui_manager instance,this object process singleton * @description: Get ui_manager instance,this object process singleton
* @return The return value is ui_manager singleton * @return The return value is ui_manager singleton
@ -69,6 +69,9 @@ public:
void WebTaskNumsChange(int32_t num); void WebTaskNumsChange(int32_t num);
void ReportInspectorTreeValue(const std::string& value); void ReportInspectorTreeValue(const std::string& value);
void SaveInspectorTreeFunction(InspectorFunction&& function); void SaveInspectorTreeFunction(InspectorFunction&& function);
void SaveRegisterForWebFunction(NotifyAllWebFunction&& function);
void ReportWebUnfocusEvent(int64_t accessibilityId, const std::string& data);
void NotifyAllWebPattern(bool isRegister);
void SetClickEventRegistered(bool status); void SetClickEventRegistered(bool status);
void SetSearchEventRegistered(bool status); void SetSearchEventRegistered(bool status);
void OnRouterChange(const std::string& path, const std::string& event); void OnRouterChange(const std::string& path, const std::string& event);
@ -78,7 +81,7 @@ public:
bool GetSearchEventRegistered(); bool GetSearchEventRegistered();
bool GetRouterChangeEventRegistered(); bool GetRouterChangeEventRegistered();
bool GetComponentChangeEventRegistered(); bool GetComponentChangeEventRegistered();
bool GetWebFocusRegistered();
private: private:
static std::mutex mutex_; static std::mutex mutex_;
std::map<int32_t, sptr<IRemoteObject>> reportObjectMap_; std::map<int32_t, sptr<IRemoteObject>> reportObjectMap_;
@ -86,7 +89,9 @@ private:
int32_t searchEventRegisterProcesses_ = 0; int32_t searchEventRegisterProcesses_ = 0;
int32_t routerChangeEventRegisterProcesses_ = 0; int32_t routerChangeEventRegisterProcesses_ = 0;
int32_t componentChangeEventRegisterProcesses_ = 0; int32_t componentChangeEventRegisterProcesses_ = 0;
bool webFocusEventRegistered = false;
InspectorFunction inspectorFunction_ = 0; InspectorFunction inspectorFunction_ = 0;
NotifyAllWebFunction notifyWebFunction_ = 0;
std::shared_ptr<InspectorJsonValue> jsonValue_ = nullptr; std::shared_ptr<InspectorJsonValue> jsonValue_ = nullptr;
int32_t webTaskNums = 0; int32_t webTaskNums = 0;
}; };