From f7ec4a06b44e3426e900c2314a4d4ee8babdf0e8 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Fri, 9 May 2025 23:06:45 +0800 Subject: [PATCH] feat: add pre hook and post hook for DoubleTap action --- internal/version/VERSION | 2 +- uixt/android_driver_adb.go | 5 +++-- uixt/android_driver_uia2.go | 5 +++-- uixt/browser_driver.go | 6 ++++-- uixt/driver_handler.go | 11 +++++++---- uixt/ios_driver_wda.go | 5 +++-- 6 files changed, 21 insertions(+), 13 deletions(-) diff --git a/internal/version/VERSION b/internal/version/VERSION index 1c2ecd0c..4c099004 100644 --- a/internal/version/VERSION +++ b/internal/version/VERSION @@ -1 +1 @@ -v5.0.0-beta-2505092301 +v5.0.0-beta-2505092306 diff --git a/uixt/android_driver_adb.go b/uixt/android_driver_adb.go index d0d129f8..6ecd6b6d 100644 --- a/uixt/android_driver_adb.go +++ b/uixt/android_driver_adb.go @@ -326,11 +326,12 @@ func (ad *ADBDriver) TapAbsXY(x, y float64, opts ...option.ActionOption) error { func (ad *ADBDriver) DoubleTap(x, y float64, opts ...option.ActionOption) error { log.Info().Float64("x", x).Float64("y", y).Msg("ADBDriver.DoubleTap") - var err error - x, y, err = handlerDoubleTap(ad, x, y, opts...) + actionOptions := option.NewActionOptions(opts...) + x, y, err := preHandler_DoubleTap(ad, actionOptions, x, y) if err != nil { return err } + defer postHandler(ad, actionOptions) // adb shell input tap x y xStr := fmt.Sprintf("%.1f", x) diff --git a/uixt/android_driver_uia2.go b/uixt/android_driver_uia2.go index 0aca302a..9252904f 100644 --- a/uixt/android_driver_uia2.go +++ b/uixt/android_driver_uia2.go @@ -257,11 +257,12 @@ func (ud *UIA2Driver) Orientation() (orientation types.Orientation, err error) { func (ud *UIA2Driver) DoubleTap(x, y float64, opts ...option.ActionOption) error { log.Info().Float64("x", x).Float64("y", y).Msg("UIA2Driver.DoubleTap") - var err error - x, y, err = handlerDoubleTap(ud, x, y, opts...) + actionOptions := option.NewActionOptions(opts...) + x, y, err := preHandler_DoubleTap(ud, actionOptions, x, y) if err != nil { return err } + defer postHandler(ud, actionOptions) data := map[string]interface{}{ "actions": []interface{}{ diff --git a/uixt/browser_driver.go b/uixt/browser_driver.go index 429a3bca..dcab3412 100644 --- a/uixt/browser_driver.go +++ b/uixt/browser_driver.go @@ -535,11 +535,13 @@ func (wd *BrowserDriver) TapFloat(x, y float64, opts ...option.ActionOption) err // DoubleTap Sends a double tap event at the coordinate. func (wd *BrowserDriver) DoubleTap(x, y float64, options ...option.ActionOption) error { - var err error - x, y, err = handlerDoubleTap(wd, x, y, options...) + actionOptions := option.NewActionOptions(options...) + x, y, err := preHandler_DoubleTap(wd, actionOptions, x, y) if err != nil { return err } + defer postHandler(wd, actionOptions) + data := map[string]interface{}{ "x": x, "y": y, diff --git a/uixt/driver_handler.go b/uixt/driver_handler.go index 4e6452d1..b7789ec9 100644 --- a/uixt/driver_handler.go +++ b/uixt/driver_handler.go @@ -24,19 +24,22 @@ func preHandler_TapAbsXY(driver IDriver, options *option.ActionOptions, rawX, ra return x, y, nil } -func handlerDoubleTap(driver IDriver, rawX, rawY float64, opts ...option.ActionOption) ( +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 } - actionOptions := option.NewActionOptions(opts...) - x, y = actionOptions.ApplyTapOffset(x, y) + x, y = options.ApplyTapOffset(x, y) // mark UI operation - if actionOptions.MarkOperationEnabled { + if options.MarkOperationEnabled { if markErr := MarkUIOperation(driver, ACTION_DoubleTapXY, []float64{x, y}); markErr != nil { log.Warn().Err(markErr).Msg("Failed to mark double tap operation") } diff --git a/uixt/ios_driver_wda.go b/uixt/ios_driver_wda.go index a2040c0e..8f6b57d2 100644 --- a/uixt/ios_driver_wda.go +++ b/uixt/ios_driver_wda.go @@ -622,11 +622,12 @@ func (wd *WDADriver) DoubleTap(x, y float64, opts ...option.ActionOption) error x = wd.toScale(x) y = wd.toScale(y) - var err error - x, y, err = handlerDoubleTap(wd, x, y, opts...) + actionOptions := option.NewActionOptions(opts...) + x, y, err := preHandler_DoubleTap(wd, actionOptions, x, y) if err != nil { return err } + defer postHandler(wd, actionOptions) data := map[string]interface{}{ "x": x,