/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
void WebView::ActivateAccessibility(bool activated)
{
- if(mWebEngine)
+ if(!mWebEngine)
{
- mWebEngine.ActivateAccessibility(activated);
+ return;
+ }
+
+ DALI_LOG_DEBUG_INFO("ActivateAccessibility requested %d", activated);
+ Actor self = Self();
+ self.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN, !activated);
+ mWebEngine.ActivateAccessibility(activated);
+
+ auto accessible = GetAccessibleObject();
+ if(auto webviewAccessible = std::dynamic_pointer_cast<WebViewAccessible>(accessible))
+ {
+ if(!activated)
+ {
+ webviewAccessible->SetForceRefreshAddress(true);
+ }
+ else
+ {
+ webviewAccessible->SetRemoteChildAddress({});
+ }
}
}
void WebView::WebViewAccessible::DoGetChildren(std::vector<Dali::Accessibility::Accessible*>& children)
{
- if(!mRemoteChild.GetAddress())
+ if(!mRemoteChild.GetAddress() || mForceRefreshAddress)
{
DALI_LOG_DEBUG_INFO("Try setting address as it is not set on initialize");
SetRemoteChildAddress(mWebEngine.GetAccessibilityAddress());
mWebEngine.ActivateAccessibility(true);
SetRemoteChildAddress(mWebEngine.GetAccessibilityAddress());
+ OnChildrenChanged();
}
void WebView::WebViewAccessible::OnAccessibilityDisabled()
void WebView::WebViewAccessible::SetRemoteChildAddress(Dali::Accessibility::Address address)
{
mRemoteChild.SetAddress(address);
- OnChildrenChanged();
+ mForceRefreshAddress = false;
+}
+
+void WebView::WebViewAccessible::SetForceRefreshAddress(bool forceRefresh)
+{
+ mForceRefreshAddress = forceRefresh;
}
} // namespace Internal
#define DALI_TOOLKIT_INTERNAL_WEB_VIEW_H
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
WebViewAccessible(Dali::Actor self, Dali::WebEngine& webEngine);
+ void SetForceRefreshAddress(bool forceRefresh);
+
+ void SetRemoteChildAddress(Dali::Accessibility::Address address);
+
protected:
/**
* @copydoc Dali::Accessibility::Accessible::UpdateAttributes()
private:
void OnAccessibilityEnabled();
void OnAccessibilityDisabled();
- void SetRemoteChildAddress(Dali::Accessibility::Address address);
Dali::Accessibility::ProxyAccessible mRemoteChild;
Dali::WebEngine& mWebEngine;
+ bool mForceRefreshAddress{false};
};
private:
Dali::Toolkit::WebView::WebViewScreenshotCapturedCallback mScreenshotCapturedCallback;
Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback;
- Vector4 mCornerRadius; /// < Corner radius
- float mCornerRadiusPolicy; /// < Corner radius policy
+ Vector4 mCornerRadius; /// < Corner radius
+ float mCornerRadiusPolicy; /// < Corner radius policy
static std::unordered_map<Dali::WebEnginePlugin*, Dali::WeakHandle<Toolkit::WebView>> mPluginWebViewMap;
};