-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[fix/a11y] Fix accessibility issues #1349
Conversation
|
#1329Personal space
Menu, Shared with me, Spaces
Shared with others
Image Viewer
NOTE: Translations to german is not an app feature, i assume that existing translations are OK for German language |
#1330Personal Space and Shared with me
Image Viewer
|
#1333Menu
|
#1340Shared with me
NOTE: Translations to german is not an app feature, i assume that existing translations are OK for German language |
406271c
to
5a6cc66
Compare
- INIFile+URLFile: simple extension for quickly parsing and composing .url files - URLDisplayViewController: stub implementation to handle .url files
…ng shortcut URL - CreateURLShortcutAction: new action to create a URL shortcut in a folder - design and add "text-uri-list" icon
… open files from file lists, overriding viewers if needed - OCItem+Interactions: add support for `.directOpen` actions - INIFile+ShortcutResolution: implement support for shortcuts to other items on the same server - ShortcutFileDisplayViewController: implement support for shortcuts to other items on the same server, including an item preview - add new action OpenShortcutFileAction - hooks into the `.directOpen` location - uses INIFile+ShortcutResolution to open the contained link or jump to the targeted location - asks users before opening links - rename files for better distinctibility: - URLDisplayViewController -> ShortcutFileDisplayViewController - CreateURLShortcutAction -> CreateShortcutFileAction - OCItem+UniversalItemListCellContentProvider: fix warning
- CreateShortcutFileAction: break out creation functionality into its own view controller - CreateShortcutFileViewController: - dedicated view controller for creating shortcuts - allows picking files and folders for shortcuts to point to and presents an embedded preview for them - improved error handling - INIFile: fix formatting bug that could accidentally leak memory into the .url file - ClientLocationPicker: add ability to allow picking files via new .allowFileSelection property
…targeting unavailable/detached drives and removes the respective policies - adapt app code to SDK API changes
- improved error reporting for when the target of a shortcut can't be accessed / found - simplified and generalized prompt for opening the URL a shortcut points to
…ShortcutResolution: add MDM option to allow all shortcuts, only URL shortcuts, only item shortcuts or no shortcuts
…root, the name for the shortcut was not derived correctly
- Localizable.strings: re-add strings auto-removed by git during rebase
@jesmrec As far as I can see, the actions are inherited from the parent views / accessibility elements and can't be removed by the children: Triggering these actions triggers the respective actions of the parent views. When I let Accessibility Inspector mimic VoiceOver by reading the description, it only read "Shared by link, image". What needs to be done to get VoiceOver to also say "Actions available"?
The file viewer shows general file information while loading the file (or for files that don't exist locally and can't be downloaded for f.ex. lack of connection). Once the file is loaded, that information is covered by the viewed file. Previously, that file information was still read out loud because it was still part of the view hierarchy. Now, after the fix, it is no longer read out. |
Just clicking on the items, Voice Over spells:
Mi device is a iPhone XR iOS17.4.1
Thanks for clarifying! |
- ios-sdk: use branch fix/warnings that fixes OpenSSL warnings - replace associated keys using structs or strings with static malloc results as suggested by Apple Engineer Quinn (https://forums.swift.org/t/handling-the-new-forming-unsaferawpointer-warning/65523/7) - remove unneeded/unused overrides - reformat spacing in parts of the code and remove superfluous spaces to remove SwiftLint warnings - replace calls to CLLocationManager.authorizationStatus() with CLLocationManager.authorizationStatus - remove deprecated OpenSSL ERR_load_* calls, since OpenSSL loads these automatically (https://www.openssl.org/docs/man3.3/man7/migration_guide.html) - LAContext+Extension: add cases for Optic ID - remove unused variables and calls - remove unused, non-existent "gear.png" image from asset catalog
…es a summary of an array of items usable as an accessibilityLabel - OCItem+Extension: add .accessibilityDateFormatter and .lastModifiedLocalizedAccessible accessors for formatting dates in formats that can be read by VoiceOver (fixing issue 5 in #1341) - UniversalItemListCell: - from an accessibility perspective: replace building blocks that make up the cell content with a single accessibility element containing the complete information (fixing issue 2 in #1341) - make the more button NOT available as accessibility element so that item lists can be browsed fluently in VoiceOver. Where users want to access the more button, they can do so via the custom accessibility actions, which include the more button. When the cell is selected, swiping up and down allows picking an action, including "More". - OCItem+UniversalItemListCellContentProvider: add accessibility labels for use by UniversalItemListCell and SegmentViewItem - add localizations for new strings
- add button trait (fixes #1341 sidebar issue) - fix warning, replace random number with UUID (even better) - DriveGridCell: add role, use name of space as accessibility label, subtitle as accessibility hint and offer additional actions via accessibility custom actions. - DriveListCell: add title for "moreAction" so that it can be converted to a accessibility custom action (which require a non-"" title) - SavedSearchCell: consolidate accessibility elements, provide consolidated accessibility label derived from title and detail segment content - OCShare+UniversalItemListCellContentProvider: provide VoiceOver-readable expiration date for links as accessibilityLabel (fixes #1341 issue) - PopupButtonController: set accessibility label based on title so VoiceOver doesn't read out the rich-text image that is used
62ac8dc
to
532b6ca
Compare
#1341Personal Space
Menu
Share with me
Spaces
|
#1337Personal Space
Shared with me
Shared with others
Spaces
Add Account
Image Viewer
|
#1338Personal Space
Menu, Shared with me, Shared with others
Spaces
|
#1336Personal Space
Menu
Shared with me
Shared with others
Image Viewer
|
About #1336, keyboard support. Some findings to comment: (1)The https://github.com/owncloud/ios-app/assets/14894746/ed187192-1ef5-47ea-ac2d-300734b60da5 (2)In the first video above, it's also visible a glitch in the
Current: Both (3)Not sure if this one is in the scope, because the It's not posible to generate a password for a link, or setting an expiration date. Options not reachable with the keyboard. (4)Breadcrumbs in the bottom side of the file list are not browsable. The breadcrumb is reachable but the items inside the path. Is it intended? feasible to fix? iPhone XR iOS 17.5 |
- add new .accessibilityCustomAction action location for actions that should be available directly via custom actions in keyboard control and VoiceOver - add .accessibilityCustomAction to all applicable actions - add new provideAccessibilityCustomAction() method for creating accessibility custom actions for Actions - AvailableOfflineAction: provide different name for custom actions based on status - OCItem+ UniversalItemListCellContentProvider: make Actions available as accessibility custom actions - UniversalItemListCell: - extend Content with accessibilityLabel and accessibilityCustomActionsBlock - add support for accessibilityLabel and accessibilityCustomActionsBlock - CollectionViewController: add dragInteractionEnabled property to allow disabling dragging of items, so keyboard control does not include "Drag Item" in the accessibility actions invoked with Tab + Z - ShareViewController + SharingViewController: - disable dragging via dragInteractionEnabled - provide accessibility labels and control for setting password and expiration date - ClientShared*ViewController: - disable dragging via dragInteractionEnabled
@jesmrec Thanks for the detailed feedback and the videos! Regarding your findings: (1) is fixed.
I've also brought the availability of actions on par with the Files.app, making the actions that were previously only available under |
In oCIS, it may not be the only way to reproduce, if you try to decline - accept in some way, i t always appears. I have been able to reproduce just listing an item that was just shared (in this case, a duplicated declined option): RPReplay_Final1717411070.MP4
|
#1349, making superfluous "Drag item" accessibility action no longer available for Spaces - UniversalItemListCell: add support to automatically create and offer accessibility custom actions for button accessories - OCShare+Interactions: make .offerAcceptAction and .offerDeclineAction available within the framework, make .offerDeclineAction more specific - OCShare+UniversalItemListCellContentProvider: - take advantage of new UniversalItemListCell feature to provide an accessibility custom actions for "Copy to clipboard" for links (fix finding by @jesmrec in #1349) and to no longer offer duplicate actions that are already available via Swipe actions - switch to OCShare.offerAcceptAction and OCShare.offerDeclineAction to determine whether to show "Accept" or "Reject"/"Unshare" buttons - code consolidation and cleanup
@felix-schwarz all the findings above are fixed Unfortunately, i found more unexpected appearances of
These two should be the latest ones before finishing 😅 |
…earch suggestions (fixes finding in #1349)
🥳
Unfortunately, Apple does not currently provide API support for disabling dragging - from an Accessiblity perspective - for individual items or sections, just for the entire collection view / table view. For actual touch interactions, there is an API, but it is not consulted by iOS when putting the list of actions together for Tab + Z. It's therefore not possible to remove the
Fixed with the latest commit. |
Fixed the latest commit, and approved on my side |
Description
Fixes #1329, #1330, #1333, #1336, #1337, #1338, #1340, #1341.
Related Issue
#1329 : Approved
#1330 : Approved
#1333 : Approved
#1336: Approved
#1337: Approved
#1338: Approved
#1340 : Approved
#1341: Approved
Screenshots (if appropriate):
Types of changes