mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Implement accessibility enhancements (issue #1217)
- Add new CefBrowserHost::SetAccessibilityState method for toggling accessibility state when readers are detected by the client. - Add new CefAccessibilityHandler interface for the delivery of accessibility notifications to windowless (OSR) clients. - Fix delivery of CefFocusHandler callbacks to windowless clients. - cefclient: Add example windowless accessibility implementation on Windows and macOS. - cefclient: Automatically detect screen readers on Windows and macOS.
This commit is contained in:
committed by
Marshall Greenblatt
parent
64fcfa6068
commit
816f700d3e
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "libcef/browser/browser_host_impl.h"
|
||||
#include "libcef/browser/image_impl.h"
|
||||
#include "libcef/browser/osr/osr_accessibility_util.h"
|
||||
#include "libcef/browser/osr/render_widget_host_view_osr.h"
|
||||
#include "libcef/browser/osr/web_contents_view_osr.h"
|
||||
#include "libcef/common/drag_data_impl.h"
|
||||
@@ -522,6 +523,34 @@ void CefBrowserPlatformDelegateOsr::DragSourceSystemDragEnded() {
|
||||
drag_start_rwh_ = nullptr;
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateOsr::AccessibilityEventReceived(
|
||||
const std::vector<content::AXEventNotificationDetails>& eventData) {
|
||||
CefRefPtr<CefRenderHandler> handler = browser_->client()->GetRenderHandler();
|
||||
if (handler.get()) {
|
||||
CefRefPtr<CefAccessibilityHandler> acchandler =
|
||||
handler->GetAccessibilityHandler();
|
||||
|
||||
if (acchandler.get()) {
|
||||
acchandler->OnAccessibilityTreeChange(
|
||||
osr_accessibility_util::ParseAccessibilityEventData(eventData));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateOsr::AccessibilityLocationChangesReceived(
|
||||
const std::vector<content::AXLocationChangeNotificationDetails>& locData) {
|
||||
CefRefPtr<CefRenderHandler> handler = browser_->client()->GetRenderHandler();
|
||||
if (handler.get()) {
|
||||
CefRefPtr<CefAccessibilityHandler> acchandler =
|
||||
handler->GetAccessibilityHandler();
|
||||
|
||||
if (acchandler.get()) {
|
||||
acchandler->OnAccessibilityLocationChange(
|
||||
osr_accessibility_util::ParseAccessibilityLocationData(locData));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CefWindowHandle CefBrowserPlatformDelegateOsr::GetParentWindowHandle() const {
|
||||
return GetHostWindowHandle();
|
||||
}
|
||||
|
Reference in New Issue
Block a user