@@ -53,9 +53,7 @@ var elementSlicePool = sync.Pool{
5353}
5454
5555// Adapter implements ports.AccessibilityPort by wrapping the ax.Client.
56- // It converts between domain models and infrastructure types.
5756type Adapter struct {
58- // logger for adapter.
5957 logger * zap.Logger
6058 client ax.Client
6159 excludedBundles map [string ]bool
@@ -86,13 +84,11 @@ func NewAdapter(
8684}
8785
8886// Logger returns the logger for the adapter.
89- // It is used for testing mainly.
9087func (a * Adapter ) Logger () * zap.Logger {
9188 return a .logger
9289}
9390
9491// ClickableRoles returns the list of clickable roles.
95- // It is used for testing mainly.
9692func (a * Adapter ) ClickableRoles () []string {
9793 return a .clickableRoles
9894}
@@ -179,7 +175,6 @@ func (a *Adapter) PerformAction(
179175 element * element.Element ,
180176 actionType action.Type ,
181177) error {
182- // Check context
183178 select {
184179 case <- ctx .Done ():
185180 return derrors .Wrap (ctx .Err (), derrors .CodeContextCanceled , "operation canceled" )
@@ -283,8 +278,6 @@ func (a *Adapter) IsAppExcluded(_ context.Context, bundleID string) bool {
283278}
284279
285280// ReleaseHeldButtons releases any mouse button this process still holds down.
286- // The per-platform release lives in element_<os>.go; it is unexported because
287- // only this adapter and the infra client may reach it.
288281func (a * Adapter ) ReleaseHeldButtons (ctx context.Context ) error {
289282 err := a .checkContext (ctx )
290283 if err != nil {
@@ -356,16 +349,14 @@ func (a *Adapter) processClickableNodes(
356349 clickableNodes []ax.Node ,
357350 filter ports.ElementFilter ,
358351) ([]* element.Element , error ) {
359- // Get pooled slice and reset it
360352 elementsPtr , ok := elementSlicePool .Get ().(* []* element.Element )
361353 if ! ok {
362354 s := make ([]* element.Element , 0 , TypicalElementCount )
363355 elementsPtr = & s
364356 }
365357
366- elements := (* elementsPtr )[:0 ] // Reset to zero length but keep capacity
358+ elements := (* elementsPtr )[:0 ]
367359 defer func () {
368- // Clear references before returning to pool
369360 for i := range elements {
370361 elements [i ] = nil
371362 }
@@ -381,13 +372,11 @@ func (a *Adapter) processClickableNodes(
381372 )
382373 }()
383374
384- // Concurrent processing for large number of nodes
385375 if len (clickableNodes ) > ConcurrentProcessingThreshold {
386376 return a .processClickableNodesConcurrent (ctx , clickableNodes , filter )
387377 }
388378
389379 for index , node := range clickableNodes {
390- // Check context periodically
391380 if index % contextCheckInterval == 0 {
392381 err := a .checkContext (ctx )
393382 if err != nil {
@@ -418,7 +407,6 @@ func (a *Adapter) processClickableNodes(
418407 }
419408 }
420409
421- // Make a copy to return since we're returning the pooled slice
422410 result := make ([]* element.Element , len (elements ))
423411 copy (result , elements )
424412
@@ -432,9 +420,7 @@ func (a *Adapter) processClickableNodesConcurrent(
432420 filter ports.ElementFilter ,
433421) ([]* element.Element , error ) {
434422 numWorkers := min (
435- // Use available parallelism
436423 runtime .GOMAXPROCS (0 ),
437- // Cap to avoid diminishing returns
438424 maxConcurrentWorkers )
439425
440426 chunkSize := (len (nodes ) + numWorkers - 1 ) / numWorkers
@@ -464,7 +450,6 @@ func (a *Adapter) processClickableNodesConcurrent(
464450 go func (chunk []ax.Node ) {
465451 defer waitGroup .Done ()
466452
467- // Use local slice to avoid locking
468453 localElements := make ([]* element.Element , 0 , len (chunk ))
469454
470455 for idx , node := range chunk {
@@ -501,8 +486,6 @@ func (a *Adapter) processClickableNodesConcurrent(
501486 close (results )
502487 }()
503488
504- // Collect results
505- // Pre-allocate based on input size estimate (conservative)
506489 allElements := make ([]* element.Element , 0 , len (nodes )/ EstimatedFilteringRatio )
507490
508491 for res := range results {
0 commit comments