diff --git a/internal/version/VERSION b/internal/version/VERSION index 71fc4cdc..14b317de 100644 --- a/internal/version/VERSION +++ b/internal/version/VERSION @@ -1 +1 @@ -v5.0.0-beta-2505120848 +v5.0.0-beta-2505120858 diff --git a/uixt/android_test.go b/uixt/android_test.go index c5930693..24eef80b 100644 --- a/uixt/android_test.go +++ b/uixt/android_test.go @@ -136,28 +136,18 @@ func TestDriver_ADB_TapXY(t *testing.T) { func TestDriver_ADB_TapXY_WithHook(t *testing.T) { driver := setupADBDriverExt(t) - x, y := 0.4, 0.5 - err := driver.TapXY(x, y, - option.WithHooks( - func() { - log.Info().Msg("pre hook") - x += 1 - }, - func() { - log.Info().Msg("post hook") - }, - ), - ) + + err := driver.Call("pre hook", func() { + log.Info().Msg("pre hook") + }, option.WithTimeout(1)) assert.Nil(t, err) - err = driver.TapXY(0.4, 0.5, - option.WithPreHook(func() { - log.Info().Msg("pre hook") - }), - option.WithPostHook(func() { - log.Info().Msg("post hook") - }), - ) + err = driver.TapXY(0.4, 0.5) + assert.Nil(t, err) + + err = driver.Call("post hook", func() { + log.Info().Msg("post hook") + }, option.WithTimeout(1)) assert.Nil(t, err) } diff --git a/uixt/driver_ext_test.go b/uixt/driver_ext_test.go index 873cf52e..36250155 100644 --- a/uixt/driver_ext_test.go +++ b/uixt/driver_ext_test.go @@ -287,7 +287,7 @@ func TestSaveImageWithArrow(t *testing.T) { func TestMarkOperation(t *testing.T) { driver := setupDriverExt(t) - opts := []option.ActionOption{option.WithMarkOperationEnabled(true)} + opts := []option.ActionOption{option.WithPreMarkOperation(true)} // tap point err := driver.TapXY(0.5, 0.5, opts...) diff --git a/uixt/driver_handler.go b/uixt/driver_handler.go index 372bfca6..640b20eb 100644 --- a/uixt/driver_handler.go +++ b/uixt/driver_handler.go @@ -44,14 +44,10 @@ func (dExt *XTDriver) Call(desc string, fn func(), opts ...option.ActionOption) func preHandler_TapAbsXY(driver IDriver, options *option.ActionOptions, rawX, rawY float64) ( x, y float64, err error) { - if options.PreHook != nil { - options.PreHook() - } - x, y = options.ApplyTapOffset(rawX, rawY) // mark UI operation - if options.MarkOperationEnabled { + if options.PreMarkOperation { if markErr := MarkUIOperation(driver, ACTION_TapAbsXY, []float64{x, y}); markErr != nil { log.Warn().Err(markErr).Msg("Failed to mark tap operation") } @@ -63,10 +59,6 @@ func preHandler_TapAbsXY(driver IDriver, options *option.ActionOptions, rawX, ra func preHandler_DoubleTap(driver IDriver, options *option.ActionOptions, rawX, rawY float64) ( x, y float64, err error) { - if options.PreHook != nil { - options.PreHook() - } - x, y, err = convertToAbsolutePoint(driver, rawX, rawY) if err != nil { return 0, 0, err @@ -75,7 +67,7 @@ func preHandler_DoubleTap(driver IDriver, options *option.ActionOptions, rawX, r x, y = options.ApplyTapOffset(x, y) // mark UI operation - if options.MarkOperationEnabled { + if options.PreMarkOperation { if markErr := MarkUIOperation(driver, ACTION_DoubleTapXY, []float64{x, y}); markErr != nil { log.Warn().Err(markErr).Msg("Failed to mark double tap operation") } @@ -87,10 +79,6 @@ func preHandler_DoubleTap(driver IDriver, options *option.ActionOptions, rawX, r func preHandler_Drag(driver IDriver, options *option.ActionOptions, rawFomX, rawFromY, rawToX, rawToY float64) ( fromX, fromY, toX, toY float64, err error) { - if options.PreHook != nil { - options.PreHook() - } - fromX, fromY, toX, toY, err = convertToAbsoluteCoordinates(driver, rawFomX, rawFromY, rawToX, rawToY) if err != nil { return 0, 0, 0, 0, err @@ -98,7 +86,7 @@ func preHandler_Drag(driver IDriver, options *option.ActionOptions, rawFomX, raw fromX, fromY, toX, toY = options.ApplySwipeOffset(fromX, fromY, toX, toY) // mark UI operation - if options.MarkOperationEnabled { + if options.PreMarkOperation { if markErr := MarkUIOperation(driver, ACTION_Drag, []float64{fromX, fromY, toX, toY}); markErr != nil { log.Warn().Err(markErr).Msg("Failed to mark drag operation") } @@ -110,10 +98,6 @@ func preHandler_Drag(driver IDriver, options *option.ActionOptions, rawFomX, raw func preHandler_Swipe(driver IDriver, options *option.ActionOptions, rawFomX, rawFromY, rawToX, rawToY float64) ( fromX, fromY, toX, toY float64, err error) { - if options.PreHook != nil { - options.PreHook() - } - fromX, fromY, toX, toY, err = convertToAbsoluteCoordinates(driver, rawFomX, rawFromY, rawToX, rawToY) if err != nil { return 0, 0, 0, 0, err @@ -121,7 +105,7 @@ func preHandler_Swipe(driver IDriver, options *option.ActionOptions, rawFomX, ra fromX, fromY, toX, toY = options.ApplySwipeOffset(fromX, fromY, toX, toY) // mark UI operation - if options.MarkOperationEnabled { + if options.PreMarkOperation { if markErr := MarkUIOperation(driver, ACTION_Swipe, []float64{fromX, fromY, toX, toY}); markErr != nil { log.Warn().Err(markErr).Msg("Failed to mark swipe operation") } @@ -131,23 +115,12 @@ func preHandler_Swipe(driver IDriver, options *option.ActionOptions, rawFomX, ra } func preHandler_AppLaunch(_ IDriver, options *option.ActionOptions) (err error) { - if options.PreHook != nil { - options.PreHook() - } - return nil } func preHandler_AppTerminate(_ IDriver, options *option.ActionOptions) (err error) { - if options.PreHook != nil { - options.PreHook() - } - return nil } func postHandler(_ IDriver, options *option.ActionOptions) { - if options.PostHook != nil { - options.PostHook() - } } diff --git a/uixt/option/action.go b/uixt/option/action.go index b826c8f0..81911ec8 100644 --- a/uixt/option/action.go +++ b/uixt/option/action.go @@ -23,7 +23,6 @@ type ActionOptions struct { Frequency int `json:"frequency,omitempty" yaml:"frequency,omitempty"` ScreenOptions - HookOptions // set custiom options such as textview, id, description Custom map[string]interface{} `json:"custom,omitempty" yaml:"custom,omitempty"` @@ -134,7 +133,6 @@ func (o *ActionOptions) Options() []ActionOption { options = append(options, o.GetScreenShotOptions()...) options = append(options, o.GetScreenRecordOptions()...) options = append(options, o.GetMarkOperationOptions()...) - options = append(options, o.GetHookOptions()...) return options } diff --git a/uixt/option/hook.go b/uixt/option/hook.go deleted file mode 100644 index 365bed75..00000000 --- a/uixt/option/hook.go +++ /dev/null @@ -1,47 +0,0 @@ -package option - -// HookOptions contains options for action hooks -type HookOptions struct { - // pre hook before action - PreHook func() - // post hook after action - PostHook func() -} - -func (o *HookOptions) GetHookOptions() []ActionOption { - options := make([]ActionOption, 0) - if o == nil { - return options - } - - if o.PreHook != nil { - options = append(options, WithPreHook(o.PreHook)) - } - if o.PostHook != nil { - options = append(options, WithPostHook(o.PostHook)) - } - - return options -} - -// WithPreHook sets the pre hook before action -func WithPreHook(preHook func()) ActionOption { - return func(o *ActionOptions) { - o.PreHook = preHook - } -} - -// WithPostHook sets the post hook after action -func WithPostHook(postHook func()) ActionOption { - return func(o *ActionOptions) { - o.PostHook = postHook - } -} - -// WithHooks sets the pre hook and post hook -func WithHooks(preHook func(), postHook func()) ActionOption { - return func(o *ActionOptions) { - o.PreHook = preHook - o.PostHook = postHook - } -} diff --git a/uixt/option/screen.go b/uixt/option/screen.go index 70b4a1b3..6b90e951 100644 --- a/uixt/option/screen.go +++ b/uixt/option/screen.go @@ -277,8 +277,8 @@ func WithIndex(index int) ActionOption { // MarkOperationOptions contains options for marking UI operations type MarkOperationOptions struct { - // mark UI operation, enable/disable UI operation marking - MarkOperationEnabled bool `json:"mark_operation_enabled,omitempty" yaml:"mark_operation_enabled,omitempty"` + PreMarkOperation bool `json:"pre_mark_operation,omitempty" yaml:"pre_mark_operation,omitempty"` + PostMarkOperation bool `json:"post_mark_operation,omitempty" yaml:"post_mark_operation,omitempty"` } func (o *MarkOperationOptions) GetMarkOperationOptions() []ActionOption { @@ -287,16 +287,26 @@ func (o *MarkOperationOptions) GetMarkOperationOptions() []ActionOption { return options } - if o.MarkOperationEnabled { - options = append(options, WithMarkOperationEnabled(true)) + if o.PreMarkOperation { + options = append(options, WithPreMarkOperation(true)) + } + if o.PostMarkOperation { + options = append(options, WithPostMarkOperation(true)) } return options } -// WithMarkOperationEnabled enables or disables UI operation marking -func WithMarkOperationEnabled(enabled bool) ActionOption { +// WithPreMarkOperation enables UI operation marking before action +func WithPreMarkOperation(enabled bool) ActionOption { return func(o *ActionOptions) { - o.MarkOperationEnabled = enabled + o.PreMarkOperation = enabled + } +} + +// WithPostMarkOperation enables UI operation marking after action +func WithPostMarkOperation(enabled bool) ActionOption { + return func(o *ActionOptions) { + o.PostMarkOperation = enabled } }