Move some global vars to private variables#14037
Closed
seanbudd wants to merge 2 commits into
Closed
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
feerrenrut
suggested changes
Aug 19, 2022
feerrenrut
left a comment
Contributor
There was a problem hiding this comment.
This will need to be changed to preserve backwards compatibility.
We don't advise reading / writing to these variables, a deprecation warning is fine. Note 2023.3 may be too soon to remove these.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
Member
Author
|
@feerrenrut I'm uncertain how to preserve backwards compatibility here. While it is easy to preserve "getting" these values with |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as outdated.
This comment was marked as outdated.
This was referenced Aug 23, 2022
Member
Author
seanbudd
added a commit
that referenced
this pull request
Aug 26, 2022
See also #14050 Summary of the issue: #14037 was closed because there was no way to preserve backwards compatibility. This is the case for any module level variable which the NVDA API expects to support assignment. Description of user facing changes None Description of development approach Documentation has been added: to warn developers about writing code which allows for future changes without breaking backwards compatibility. keep track of cases which we cannot safely retain backwards compatibility, so that we can clearly define when API breaking changes are necessary
seanbudd
added a commit
that referenced
this pull request
Aug 30, 2022
Supersedes #14037 See also #14049 Summary of the issue: #14037 was closed because there was no way to preserve backwards compatibility. This is the case for any module level variable which the NVDA API expects to support assignment (see also #14049). globalVars contains many NVDA state variables which should not be changed by add-on authors. As a result, globalVars should eventually be deprecated, in favour of encapsulation of these variables. This will make retaining backwards compatibility possible in the future. Description of user facing changes None Description of development approach Added a deprecation warning and strategy to the docstring of globalVars. Encapsulated some less used globalVars to provide an example of what the future API should look like. runningAsSource was moved from globalVars as this is an unreleased variable. (#14015) _allowDeprecatedAPI was moved as it is internal code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Link to issue number:
Summary of the issue:
Add-on API authors may mistakenly use objects cached in
globalVarsdirectly, instead of throughapi.get/setmethods.This means that insecure objects could be set or returned to the user.
Description of user facing changes
None
Description of development approach
Removed variables from
globalVars.The following have been made removed and made private.
Instead, set and get these variables via the equivalent
api.get/setmethod:desktopObjectfocusAncestorsfocusObjectfocusDifferenceLevelforegroundObjectmouseObjectnavigatorObjectreviewPositionThe following have been removed. These variables were previously unset and used:
mouseOldYmouseOldXlastProgressValuereviewPositionObjhas been removed as it was unused. It can be accessed with the equivalentgetReviewPosition().obj.Testing strategy:
Known issues with pull request:
API breaking change
Change log entries:
For Developers
Code Review Checklist: