diff options
| author | Traxmaxx | 2014-03-04 18:54:08 +0100 | 
|---|---|---|
| committer | Matias Niemelä | 2014-03-18 21:38:20 -0400 | 
| commit | e84da2283c4e195be557f7b06c8783fe502acbbb (patch) | |
| tree | d51904bcc4fda16217e6f09e572fc66403f6e51e | |
| parent | 3dd9572754c7bafec30dd625f5c611346959c969 (diff) | |
| download | angular.js-e84da2283c4e195be557f7b06c8783fe502acbbb.tar.bz2 | |
fix($$RAFProvider): check for webkitCancelRequestAnimationFrame
Android 4.3 only supports webkitCancelRequestAnimationFrame.
Closes #6526
| -rw-r--r-- | src/ng/raf.js | 3 | ||||
| -rw-r--r-- | test/ng/rafSpec.js | 32 | 
2 files changed, 29 insertions, 6 deletions
| diff --git a/src/ng/raf.js b/src/ng/raf.js index e07adbfe..bb1f47ed 100644 --- a/src/ng/raf.js +++ b/src/ng/raf.js @@ -8,7 +8,8 @@ function $$RAFProvider(){ //rAF      var cancelAnimationFrame = $window.cancelAnimationFrame ||                                 $window.webkitCancelAnimationFrame || -                               $window.mozCancelAnimationFrame; +                               $window.mozCancelAnimationFrame || +                               $window.webkitCancelRequestAnimationFrame;      var rafSupported = !!requestAnimationFrame;      var raf = rafSupported diff --git a/test/ng/rafSpec.js b/test/ng/rafSpec.js index 8bf76efd..7c67b8c9 100644 --- a/test/ng/rafSpec.js +++ b/test/ng/rafSpec.js @@ -38,11 +38,8 @@ describe('$$rAF', function() {        //we need to create our own injector to work around the ngMock overrides        var injector = createInjector(['ng', function($provide) {          $provide.value('$timeout', timeoutSpy); -        $provide.decorator('$window', function($delegate) { -          $delegate.requestAnimationFrame = false; -          $delegate.webkitRequestAnimationFrame = false; -          $delegate.mozRequestAnimationFrame = false; -          return $delegate; +        $provide.value('$window', { +          location : window.location,          });        }]); @@ -76,4 +73,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', { +          location : window.location, +          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(); +    }); +  });  }); | 
