@@ -34,7 +34,8 @@ class CdpDriver implements AppDriver {
3434 /// Pending CDP calls keyed by request id.
3535 final Map <int , Completer <Map <String , dynamic >>> _pending = {};
3636 final Map <String , void Function ()> _eventSubscriptions = {};
37- final Map <String , List <void Function (Map <String , dynamic >)>> _eventListeners = {};
37+ final Map <String , List <void Function (Map <String , dynamic >)>> _eventListeners =
38+ {};
3839 bool _dialogHandlerInstalled = false ;
3940 final Map <String , Map <String , dynamic >> _interceptRules = {};
4041
@@ -114,7 +115,10 @@ class CdpDriver implements AppDriver {
114115 // When connecting to an existing instance (launchChrome=false),
115116 // skip navigation if URL is about:blank or matches the CDP port
116117 // (the target already has content loaded).
117- final skipNav = ! _launchChrome && (_url.isEmpty || _url == 'about:blank' || _url.contains ('localhost:$_port ' ));
118+ final skipNav = ! _launchChrome &&
119+ (_url.isEmpty ||
120+ _url == 'about:blank' ||
121+ _url.contains ('localhost:$_port ' ));
118122 if (! skipNav) {
119123 await _call ('Page.navigate' , {'url' : _url});
120124 // Wait for DOMContentLoaded or timeout (much faster than fixed 2s delay)
@@ -675,26 +679,33 @@ class CdpDriver implements AppDriver {
675679 double startX, double startY, double endX, double endY) async {
676680 try {
677681 return await Future (() async {
678- await _dispatchMouseEvent ('mousePressed' , startX, startY, button: 'left' , clickCount: 1 );
682+ await _dispatchMouseEvent ('mousePressed' , startX, startY,
683+ button: 'left' , clickCount: 1 );
679684 const steps = 10 ;
680685 for (var i = 1 ; i <= steps; i++ ) {
681686 final x = startX + (endX - startX) * i / steps;
682687 final y = startY + (endY - startY) * i / steps;
683688 await _dispatchMouseEvent ('mouseMoved' , x, y, button: 'left' );
684689 }
685- await _dispatchMouseEvent ('mouseReleased' , endX, endY, button: 'left' , clickCount: 1 );
690+ await _dispatchMouseEvent ('mouseReleased' , endX, endY,
691+ button: 'left' , clickCount: 1 );
686692 return {"success" : true } as Map <String , dynamic >;
687693 }).timeout (const Duration (seconds: 10 ));
688694 } on TimeoutException {
689- return {"success" : false , "error" : "Drag timed out — mouse event not acknowledged by browser" };
695+ return {
696+ "success" : false ,
697+ "error" : "Drag timed out — mouse event not acknowledged by browser"
698+ };
690699 }
691700 }
692701
693702 /// Long press at coordinates.
694703 Future <void > longPressAt (double x, double y) async {
695- await _dispatchMouseEvent ('mousePressed' , x, y, button: 'left' , clickCount: 1 );
704+ await _dispatchMouseEvent ('mousePressed' , x, y,
705+ button: 'left' , clickCount: 1 );
696706 await Future .delayed (const Duration (milliseconds: 800 ));
697- await _dispatchMouseEvent ('mouseReleased' , x, y, button: 'left' , clickCount: 1 );
707+ await _dispatchMouseEvent ('mouseReleased' , x, y,
708+ button: 'left' , clickCount: 1 );
698709 }
699710
700711 /// Swipe between coordinates.
@@ -703,19 +714,24 @@ class CdpDriver implements AppDriver {
703714 {int durationMs = 300 }) async {
704715 try {
705716 return await Future (() async {
706- await _dispatchMouseEvent ('mousePressed' , startX, startY, button: 'left' , clickCount: 1 );
717+ await _dispatchMouseEvent ('mousePressed' , startX, startY,
718+ button: 'left' , clickCount: 1 );
707719 const steps = 8 ;
708720 for (var i = 1 ; i <= steps; i++ ) {
709721 final x = startX + (endX - startX) * i / steps;
710722 final y = startY + (endY - startY) * i / steps;
711723 await _dispatchMouseEvent ('mouseMoved' , x, y, button: 'left' );
712724 await Future .delayed (Duration (milliseconds: durationMs ~ / steps));
713725 }
714- await _dispatchMouseEvent ('mouseReleased' , endX, endY, button: 'left' , clickCount: 1 );
726+ await _dispatchMouseEvent ('mouseReleased' , endX, endY,
727+ button: 'left' , clickCount: 1 );
715728 return {"success" : true } as Map <String , dynamic >;
716729 }).timeout (const Duration (seconds: 10 ));
717730 } on TimeoutException {
718- return {"success" : false , "error" : "Swipe timed out — mouse event not acknowledged by browser" };
731+ return {
732+ "success" : false ,
733+ "error" : "Swipe timed out — mouse event not acknowledged by browser"
734+ };
719735 }
720736 }
721737
@@ -765,21 +781,28 @@ class CdpDriver implements AppDriver {
765781 try {
766782 return await Future (() async {
767783 final first = points.first;
768- await _dispatchMouseEvent ('mousePressed' , (first['x' ] as num ).toDouble (),
769- (first['y' ] as num ).toDouble (), button: 'left' );
784+ await _dispatchMouseEvent ('mousePressed' ,
785+ (first['x' ] as num ).toDouble (), (first['y' ] as num ).toDouble (),
786+ button: 'left' );
770787 for (var i = 1 ; i < points.length; i++ ) {
771- await _dispatchMouseEvent ('mouseMoved' ,
788+ await _dispatchMouseEvent (
789+ 'mouseMoved' ,
772790 (points[i]['x' ] as num ).toDouble (),
773- (points[i]['y' ] as num ).toDouble (), button: 'left' );
791+ (points[i]['y' ] as num ).toDouble (),
792+ button: 'left' );
774793 await Future .delayed (const Duration (milliseconds: 20 ));
775794 }
776795 final last = points.last;
777- await _dispatchMouseEvent ('mouseReleased' , (last['x' ] as num ).toDouble (),
778- (last['y' ] as num ).toDouble (), button: 'left' );
796+ await _dispatchMouseEvent ('mouseReleased' ,
797+ (last['x' ] as num ).toDouble (), (last['y' ] as num ).toDouble (),
798+ button: 'left' );
779799 return {"success" : true } as Map <String , dynamic >;
780800 }).timeout (const Duration (seconds: 10 ));
781801 } on TimeoutException {
782- return {"success" : false , "error" : "Gesture timed out — mouse event not acknowledged by browser" };
802+ return {
803+ "success" : false ,
804+ "error" : "Gesture timed out — mouse event not acknowledged by browser"
805+ };
783806 }
784807 }
785808
@@ -827,7 +850,8 @@ class CdpDriver implements AppDriver {
827850 return JSON.stringify({ success: true, checked: el.getAttribute('aria-checked') === 'true' });
828851 })()
829852 ''' );
830- return _parseJsonEval (result) ?? {"success" : false , "error" : "Element not found" };
853+ return _parseJsonEval (result) ??
854+ {"success" : false , "error" : "Element not found" };
831855 }
832856
833857 /// Get slider value.
@@ -852,7 +876,8 @@ class CdpDriver implements AppDriver {
852876 });
853877 })()
854878 ''' );
855- return _parseJsonEval (result) ?? {"success" : false , "error" : "Element not found" };
879+ return _parseJsonEval (result) ??
880+ {"success" : false , "error" : "Element not found" };
856881 }
857882
858883 /// Get page state (title, url, scroll, viewport).
@@ -1101,7 +1126,7 @@ class CdpDriver implements AppDriver {
11011126 }
11021127
11031128 /// Highlight an element on the page.
1104- Future <Map <String , dynamic >> highlightElement (String selector,
1129+ Future <Map <String , dynamic >> highlightElement (String selector,
11051130 {String color = 'red' , int duration = 3000 }) async {
11061131 // Parse color to rgba for background (20% opacity)
11071132 final bgAlpha = '0.1' ;
@@ -1276,7 +1301,8 @@ class CdpDriver implements AppDriver {
12761301 _call (method, params);
12771302
12781303 /// Register a listener for a CDP event (supports multiple listeners per event).
1279- void onEvent (String method, void Function (Map <String , dynamic > params) callback) {
1304+ void onEvent (
1305+ String method, void Function (Map <String , dynamic > params) callback) {
12801306 _eventListeners.putIfAbsent (method, () => []);
12811307 _eventListeners[method]! .add (callback);
12821308 }
0 commit comments