From c06859e02c4b847ef378d55a6be5e87c98ad9038 Mon Sep 17 00:00:00 2001 From: fish-sauce Date: Tue, 14 Jan 2025 08:01:33 -0600 Subject: [PATCH] Add another constructor for ax audit --- ios/accessibility/accessibility.go | 25 +++++++++++++++++++--- ios/accessibility/accessibility_control.go | 3 +-- main.go | 7 ++---- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/ios/accessibility/accessibility.go b/ios/accessibility/accessibility.go index 89fbfd63..cb69612e 100644 --- a/ios/accessibility/accessibility.go +++ b/ios/accessibility/accessibility.go @@ -7,12 +7,31 @@ import ( const serviceName string = "com.apple.accessibility.axAuditDaemon.remoteserver" -// New creates and connects to the given device, a new ControlInterface instance -func New(device ios.DeviceEntry) (ControlInterface, error) { +// NewWithoutEventChangeListeners creates and connects to the given device, a new ControlInterface instance, +// no accessibility events changes will be tracked. +func NewWithoutEventChangeListeners(device ios.DeviceEntry) (ControlInterface, error) { conn, err := dtx.NewUsbmuxdConnection(device, serviceName) if err != nil { return ControlInterface{}, err } control := ControlInterface{conn.GlobalChannel()} - return control, err + + return control, nil +} + +// NewWithEventChangeListeners creates and connects to the given device, a new ControlInterface instance with +// a setup of listeners to track accessibility events changes +func NewWithEventChangeListeners(device ios.DeviceEntry) (ControlInterface, error) { + conn, err := dtx.NewUsbmuxdConnection(device, serviceName) + if err != nil { + return ControlInterface{}, err + } + control := ControlInterface{conn.GlobalChannel()} + + err = control.init() + if err != nil { + return ControlInterface{}, err + } + + return control, nil } diff --git a/ios/accessibility/accessibility_control.go b/ios/accessibility/accessibility_control.go index 9c158f83..91af7c8f 100644 --- a/ios/accessibility/accessibility_control.go +++ b/ios/accessibility/accessibility_control.go @@ -38,8 +38,7 @@ func (a ControlInterface) readhostInspectorNotificationReceived() { } } -// Init wires up event receivers and gets Info from the device -func (a ControlInterface) Init() error { +func (a ControlInterface) init() error { a.channel.RegisterMethodForRemote("hostInspectorCurrentElementChanged:") a.channel.RegisterMethodForRemote("hostInspectorMonitoredEventTypeChanged:") a.channel.RegisterMethodForRemote("hostAppStateChanged:") diff --git a/main.go b/main.go index ea057420..2234b357 100644 --- a/main.go +++ b/main.go @@ -1778,12 +1778,9 @@ func timeFormat(device ios.DeviceEntry, operation string, force bool) { func startAx(device ios.DeviceEntry, arguments docopt.Opts) { go func() { - conn, err := accessibility.New(device) + conn, err := accessibility.NewWithEventChangeListeners(device) exitIfError("failed creating ax service", err) - err = conn.Init() - exitIfError("failed init ax", err) - conn.SwitchToDevice() conn.EnableSelectionMode() @@ -1811,7 +1808,7 @@ func startAx(device ios.DeviceEntry, arguments docopt.Opts) { } func resetAx(device ios.DeviceEntry) { - conn, err := accessibility.New(device) + conn, err := accessibility.NewWithoutEventChangeListeners(device) exitIfError("failed creating ax service", err) err = conn.ResetToDefaultAccessibilitySettings()