aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/AngularPublic.js5
-rw-r--r--src/ng/asyncCallback.js11
-rw-r--r--src/ngMock/angular-mocks.js15
3 files changed, 29 insertions, 2 deletions
diff --git a/src/AngularPublic.js b/src/AngularPublic.js
index 3870c519..0c02adec 100644
--- a/src/AngularPublic.js
+++ b/src/AngularPublic.js
@@ -73,7 +73,7 @@
$TemplateCacheProvider,
$TimeoutProvider,
$$RAFProvider,
- $AsyncCallbackProvider,
+ $$AsyncCallbackProvider,
$WindowProvider
*/
@@ -214,7 +214,8 @@ function publishExternalAPI(angular){
$templateCache: $TemplateCacheProvider,
$timeout: $TimeoutProvider,
$window: $WindowProvider,
- $$rAF: $$RAFProvider
+ $$rAF: $$RAFProvider,
+ $$asyncCallback : $$AsyncCallbackProvider
});
}
]);
diff --git a/src/ng/asyncCallback.js b/src/ng/asyncCallback.js
new file mode 100644
index 00000000..8bede73a
--- /dev/null
+++ b/src/ng/asyncCallback.js
@@ -0,0 +1,11 @@
+'use strict';
+
+function $$AsyncCallbackProvider(){
+ this.$get = ['$$rAF', '$timeout', function($$rAF, $timeout) {
+ return $$rAF.supported
+ ? function(fn) { return $$rAF(fn); }
+ : function(fn) {
+ return $timeout(fn, 0, false);
+ };
+ }];
+}
diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js
index efde0f3a..bcd6cc1f 100644
--- a/src/ngMock/angular-mocks.js
+++ b/src/ngMock/angular-mocks.js
@@ -1684,6 +1684,20 @@ angular.mock.$RAFDecorator = function($delegate) {
return rafFn;
};
+angular.mock.$AsyncCallbackDecorator = function($delegate) {
+ var callbacks = [];
+ var addFn = function(fn) {
+ callbacks.push(fn);
+ };
+ addFn.flush = function() {
+ angular.forEach(callbacks, function(fn) {
+ fn();
+ });
+ callbacks = [];
+ };
+ return addFn;
+};
+
/**
*
*/
@@ -1718,6 +1732,7 @@ angular.module('ngMock', ['ng']).provider({
}).config(['$provide', function($provide) {
$provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
$provide.decorator('$$rAF', angular.mock.$RAFDecorator);
+ $provide.decorator('$$asyncCallback', angular.mock.$AsyncCallbackDecorator);
}]);
/**