Commit Graph

11 Commits

Author SHA1 Message Date
Sash Zats
d46a301929 Add custom actions to flipper inspector
Summary:
Now when we are simulating device running in VoiceOver mode while showing accessiblity hierarchy in flipper, we are getting correct hierarchy + getting production-like custom actions,

Instagram + Facebook feed is a good example of using accessiblity actions to avoid exposing individual buttons

Reviewed By: lblasa

Differential Revision: D49641875

fbshipit-source-id: 1153ec3bffc7110c4bfe702cbb5a6b729d91b9a3
2023-09-27 07:38:38 -07:00
Sash Zats
f2e402e6e9 Enable voice over mode on device while running in accessibility exploration mode
Summary:
All the FoA have different logic depending on whether device is running in  VoiceOver mode or not. This results in incorrect accessibility being reported through the Flipper plugin.

For example on Instagram we fetch the image descriptions, in Facebook app we group individual elements into the accessibility groups to simplify traversing the screen

This tells device that it is in a voice over mode while inspecting accessibility mode is on meaning that it will be the closest approximation to the

Reviewed By: nscoding

Differential Revision: D49579241

fbshipit-source-id: f3be9057007ee6eefbe3b448f0f97c1fcd2c8f46
2023-09-24 12:24:19 -07:00
Sash Zats
21d86c09af Preload accessibility framework if not already loaded
Summary:
It looks like there are some edge cases when app did not load private accessibility framework (probably if it never set any accessibility values?)

This diff makes calls to accessibility hierarchy safer and ensures to preload framework if available

Reviewed By: lblasa

Differential Revision: D49501064

fbshipit-source-id: b46216b58bf6c9c63f900e199fea035e3262afb2
2023-09-21 10:14:43 -07:00
Sash Zats
550b49e690 Capture accessibility hierarchy and package it for the sonar plugin
Summary: In this diff we load and call a private API enabling voiceover hierarchy and pass it over via existing channel when client is in the accessibility mode

Reviewed By: lblasa

Differential Revision: D49393813

fbshipit-source-id: 437af1131547218cd52f4a56797707411787d7cf
2023-09-20 12:41:38 -07:00
Sash Zats
3f0e1f76d5 Send and receive current debugger mode
Summary:
Make sure mobile client and sonar desktop app keep debugger mode in sync

Desktop client listens to available modes and currently selected mode which is what we use here.

Later we can tweak the logic to try to restore last mode if desktop or mobile clients crash / disconnect etc

Reviewed By: lblasa

Differential Revision: D49384358

fbshipit-source-id: 5bc1f4240253b68a746dfa5feba4b352f4e261a2
2023-09-20 12:41:38 -07:00
Lorenzo Blasa
2ad789d14e UIDConnectionListener
Summary:
Add a connection listener similarly to the one used on Android.

The usage at this point will come from framework events as a means to control when to capture the events or not.

Reviewed By: ivanmisuno

Differential Revision: D49092691

fbshipit-source-id: d004f7ff5d1a254ad5f9c7f207d485afcb7ac54a
2023-09-11 03:13:43 -07:00
Lorenzo Blasa
544e49c097 Podspec and sample integration
Summary: Create podspec for UI Debugger and integrate with our iOS sample application.

Reviewed By: aigoncharov

Differential Revision: D47715973

fbshipit-source-id: a64444660ea9fb8a2c29fcafe1a44266e8daf414
2023-07-26 05:01:58 -07:00
Lorenzo Blasa
b5d51a047b Internal/External init
Summary:
UI Debugger initialisation is defined in two places. Internally, done inside:
    fb/FlipperKitUIDebuggerPluginInit.mm
OSS:
    FlipperKitUIDebuggerPluginInit.mm

Contents of `fb/` directory are not synced in OSS. OSS file is excluded internally as it doesn't use the XPlugins.

Reviewed By: aigoncharov

Differential Revision: D47759035

fbshipit-source-id: 3578be076525f05b530a0d129b5c37e48572d58e
2023-07-26 05:01:58 -07:00
Lorenzo Blasa
aba50889f2 Snapshot to use key window size if possible
Summary:
Use the application key window bounds if possible.
In the case where the application is not using the entire screen,
like in Split View on an iPad, the running application is
not using the entire screen thus the snapshot stretches to
fill the screen size which is incorrect.

Reviewed By: LukeDefeo

Differential Revision: D47793033

fbshipit-source-id: d6c7932d35bad13752713772d078f94bad530b09
2023-07-26 04:24:07 -07:00
Ivan Misuno
1753581028 Add metadata.customAttributes field
Summary:
`customAttributes` will be used by the UI Debugger to pass styleID for Bloks model attributes.
(replicating corresponding [Android implementation](https://www.internalfb.com/code/fbsource/[33c33fa7f582]/xplat/sonar/android/src/facebook/java/com/facebook/flipper/uidebugger/bloks/descriptors/BloksDebugComponentDescriptor.kt?lines=138-139%2C170-171))

Reviewed By: antonk52

Differential Revision: D47494013

fbshipit-source-id: 257387d4af94235b23d636047326532d7071e8dd
2023-07-21 14:32:22 -07:00
Lorenzo Blasa
db7aa9eeaf OSS
Summary: Move UIDebugger plugin to OSS space.

Reviewed By: passy

Differential Revision: D47634848

fbshipit-source-id: 90e8c0181a2434d0e5d76bdb99b902051e6d702e
2023-07-21 04:47:13 -07:00