diff --git a/src/ng/raf.js b/src/ng/raf.js index f85ee12a4223..0299a8a0749e 100644 --- a/src/ng/raf.js +++ b/src/ng/raf.js @@ -6,7 +6,8 @@ function $$RAFProvider(){ //rAF $window.webkitRequestAnimationFrame; var cancelAnimationFrame = $window.cancelAnimationFrame || - $window.webkitCancelAnimationFrame; + $window.webkitCancelAnimationFrame || + $window.webkitCancelRequestAnimationFrame; var raf = function(fn) { var id = requestAnimationFrame(fn); @@ -19,4 +20,4 @@ function $$RAFProvider(){ //rAF return raf; }]; -} +} \ No newline at end of file diff --git a/test/ng/rafSpec.js b/test/ng/rafSpec.js index 6c15e2d2984c..cab309cdba7b 100644 --- a/test/ng/rafSpec.js +++ b/test/ng/rafSpec.js @@ -44,4 +44,29 @@ describe('$$rAF', function() { } })); }); + + describe('mobile', function() { + it('should provide a cancellation method for an older version of Android', function() { + + //we need to create our own injector to work around the ngMock overrides + var injector = createInjector(['ng', function($provide) { + $provide.value('$window', { + webkitRequestAnimationFrame: jasmine.createSpy('$window.webkitRequestAnimationFrame'), + webkitCancelRequestAnimationFrame: jasmine.createSpy('$window.webkitCancelRequestAnimationFrame') + }); + }]); + + var $$rAF = injector.get('$$rAF'); + var $window = injector.get('$window'); + var cancel = $$rAF(function() {}); + + expect($$rAF.supported).toBe(true); + + try { + cancel(); + } catch(e) {} + + expect($window.webkitCancelRequestAnimationFrame).toHaveBeenCalled(); + }); + }); });