Check harder before enabling Accessibility support
This commit is contained in:
parent
7584e73d70
commit
0df21afcdf
3 changed files with 24 additions and 8 deletions
|
@ -18,6 +18,8 @@
|
|||
#include "atom/browser/ui/win/message_handler_delegate.h"
|
||||
#include "atom/browser/ui/win/taskbar_host.h"
|
||||
#include "base/win/scoped_gdi_object.h"
|
||||
#include "ui/base/win/accessibility_misc_utils.h"
|
||||
#include <UIAutomationCoreApi.h>
|
||||
#endif
|
||||
|
||||
namespace views {
|
||||
|
@ -228,6 +230,9 @@ class NativeWindowViews : public NativeWindow,
|
|||
// In charge of running taskbar related APIs.
|
||||
TaskbarHost taskbar_host_;
|
||||
|
||||
// Memoized version of a11y check
|
||||
bool checked_for_a11y_support_;
|
||||
|
||||
// If true we have enabled a11y
|
||||
bool enabled_a11y_support_;
|
||||
|
||||
|
|
|
@ -92,15 +92,25 @@ bool NativeWindowViews::PreHandleMSG(
|
|||
// accessibility object.
|
||||
case WM_GETOBJECT: {
|
||||
const DWORD obj_id = static_cast<DWORD>(l_param);
|
||||
if (enabled_a11y_support_) return false;
|
||||
if (checked_for_a11y_support_) return false;
|
||||
|
||||
if (obj_id == OBJID_CLIENT) {
|
||||
const auto axState = content::BrowserAccessibilityState::GetInstance();
|
||||
if (axState && !axState->IsAccessibleBrowser()) {
|
||||
axState->OnScreenReaderDetected();
|
||||
enabled_a11y_support_ = true;
|
||||
Browser::Get()->OnAccessibilitySupportChanged();
|
||||
}
|
||||
checked_for_a11y_support_ = true;
|
||||
|
||||
if (obj_id != OBJID_CLIENT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
UINT screenReader = 0;
|
||||
SystemParametersInfo(SPI_GETSCREENREADER, 0, &screenReader, 0);
|
||||
if (!screenReader || !UiaClientsAreListening()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto axState = content::BrowserAccessibilityState::GetInstance();
|
||||
if (axState && !axState->IsAccessibleBrowser()) {
|
||||
axState->OnScreenReaderDetected();
|
||||
enabled_a11y_support_ = true;
|
||||
Browser::Get()->OnAccessibilitySupportChanged();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -281,6 +281,7 @@
|
|||
'-lwininet.lib',
|
||||
'-lwinmm.lib',
|
||||
'-lcrypt32.lib',
|
||||
'-luiautomationcore.lib',
|
||||
],
|
||||
},
|
||||
'dependencies': [
|
||||
|
|
Loading…
Add table
Reference in a new issue