Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Restore backwards compatibility for SecureDesktopNVDAObject (#14116)
Follow up to #14105 Fixes issue described in #14111 (comment) Summary of the issue: SecureDesktopNVDAObject is an API end point used to indicate to the user and to API consumers (including NVDA remote), that the user has switched to a secure desktop. This is triggered when Windows notification EVENT_SYSTEM_DESKTOPSWITCH notifies that the desktop has changed. The switch is handled via a gainFocus event. The gainFocus event causes the user instance of NVDA to enter sleep mode as the secure mode NVDA instance starts on the secure screen. Information from SecureDesktopNVDAObject should not be accessible to the user, as it is backed by a valid MSAA desktop running on a secure profile, that NVDA can report information from. This should generally be handled by NVDA entering sleep mode. In #14105, SecureDesktopNVDAObject became based on NVDAObject to improve security for the object, by breaking it's connection to a valid window. This was to decrease the theoretical risk of information leakage. However, it was discovered that NVDA core event tracking and API consumers rely on SecureDesktopNVDAObject inheriting from Window (a parent class of Desktop). As such, SecureDesktopNVDAObject must remain a Desktop subclass to retain backwards compatibility. However we can prevent neighbouring objects from being accessed. Description of user facing changes Fixes bug in NVDA alpha with handling SecureDesktopNVDAObject. Fixes API breakage. Description of development approach Reverts the change in #14105, making SecureDesktopNVDAObject inherit from Desktop. Prevents neighbouring objects to SecureDesktopNVDAObject from being accessed by overriding relevant methods.
- Loading branch information