@@ -763,25 +763,50 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
763
763
return reflowFn ;
764
764
} ) ;
765
765
766
- $provide . decorator ( '$animate' , [ '$delegate' , '$timeout' , '$browser' , '$$rAF' , '$$forceReflow' ,
767
- function ( $delegate , $timeout , $browser , $$rAF , $$forceReflow ) {
766
+ $provide . factory ( '$$animateAsyncRun' , function ( ) {
767
+ var queue = [ ] ;
768
+ var queueFn = function ( ) {
769
+ return function ( fn ) {
770
+ queue . push ( fn ) ;
771
+ } ;
772
+ } ;
773
+ queueFn . flush = function ( ) {
774
+ if ( queue . length === 0 ) return false ;
775
+
776
+ for ( var i = 0 ; i < queue . length ; i ++ ) {
777
+ queue [ i ] ( ) ;
778
+ }
779
+ queue = [ ] ;
780
+
781
+ return true ;
782
+ } ;
783
+ return queueFn ;
784
+ } ) ;
785
+
786
+ $provide . decorator ( '$animate' , [ '$delegate' , '$timeout' , '$browser' , '$$rAF' , '$$forceReflow' , '$$animateAsyncRun' ,
787
+ function ( $delegate , $timeout , $browser , $$rAF , $$forceReflow , $$animateAsyncRun ) {
768
788
769
789
var animate = {
770
790
queue : [ ] ,
771
791
cancel : $delegate . cancel ,
792
+ on : $delegate . on ,
793
+ off : $delegate . off ,
794
+ pin : $delegate . pin ,
772
795
get reflows ( ) {
773
796
return $$forceReflow . totalReflows ;
774
797
} ,
775
798
enabled : $delegate . enabled ,
776
- triggerCallbackEvents : function ( ) {
777
- $$rAF . flush ( ) ;
778
- } ,
779
- triggerCallbackPromise : function ( ) {
780
- $timeout . flush ( 0 ) ;
781
- } ,
782
- triggerCallbacks : function ( ) {
783
- this . triggerCallbackEvents ( ) ;
784
- this . triggerCallbackPromise ( ) ;
799
+ flush : function ( ) {
800
+ var rafsFlushed = false ;
801
+ if ( $$rAF . queue . length ) {
802
+ $$rAF . flush ( ) ;
803
+ rafsFlushed = true ;
804
+ }
805
+
806
+ var animatorsFlushed = $$animateAsyncRun . flush ( ) ;
807
+ if ( ! rafsFlushed && ! animatorsFlushed ) {
808
+ throw new Error ( 'No pending animations ready to be closed or flushed' ) ;
809
+ }
785
810
}
786
811
} ;
787
812
@@ -1733,28 +1758,28 @@ angular.mock.$TimeoutDecorator = ['$delegate', '$browser', function($delegate, $
1733
1758
} ] ;
1734
1759
1735
1760
angular . mock . $RAFDecorator = [ '$delegate' , function ( $delegate ) {
1736
- var queue = [ ] ;
1737
1761
var rafFn = function ( fn ) {
1738
- var index = queue . length ;
1739
- queue . push ( fn ) ;
1762
+ var index = rafFn . queue . length ;
1763
+ rafFn . queue . push ( fn ) ;
1740
1764
return function ( ) {
1741
- queue . splice ( index , 1 ) ;
1765
+ rafFn . queue . splice ( index , 1 ) ;
1742
1766
} ;
1743
1767
} ;
1744
1768
1769
+ rafFn . queue = [ ] ;
1745
1770
rafFn . supported = $delegate . supported ;
1746
1771
1747
1772
rafFn . flush = function ( ) {
1748
- if ( queue . length === 0 ) {
1773
+ if ( rafFn . queue . length === 0 ) {
1749
1774
throw new Error ( 'No rAF callbacks present' ) ;
1750
1775
}
1751
1776
1752
- var length = queue . length ;
1777
+ var length = rafFn . queue . length ;
1753
1778
for ( var i = 0 ; i < length ; i ++ ) {
1754
- queue [ i ] ( ) ;
1779
+ rafFn . queue [ i ] ( ) ;
1755
1780
}
1756
1781
1757
- queue = queue . slice ( i ) ;
1782
+ rafFn . queue = rafFn . queue . slice ( i ) ;
1758
1783
} ;
1759
1784
1760
1785
return rafFn ;
0 commit comments