From 317384b656d77753e363b41b48f557ae0bf491dd Mon Sep 17 00:00:00 2001 From: Traxmaxx Date: Tue, 4 Mar 2014 18:54:08 +0100 Subject: [PATCH] fix($$RAFProvider): check for webkitCancelRequestAnimationFrame. Android 4.3 only supports webkitCancelRequestAnimationFrame. Closes #6526 --- src/ng/raf.js | 5 +++-- test/ng/rafSpec.js | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) 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(); + }); + }); });