Permalink
Browse files

fix($sniffer): report history false on Android < 4

Android has history.pushState, but it does not update the location correctly:
http://code.google.com/p/android/issues/detail?id=17471

Closes #904
  • Loading branch information...
1 parent c1533ef commit 7b739c97028be2a5d5aef679ef1f8064cd10d386 @vojtajina vojtajina committed May 14, 2012
Showing with 11 additions and 4 deletions.
  1. +7 −2 src/ng/sniffer.js
  2. +2 −1 test/ng/anchorScrollSpec.js
  3. +1 −1 test/ng/logSpec.js
  4. +1 −0 test/ng/snifferSpec.js
View
@@ -14,10 +14,15 @@
*/
function $SnifferProvider() {
this.$get = ['$window', function($window) {
- var eventSupport = {};
+ var eventSupport = {},
+ android = int((/android (\d+)/.exec(lowercase($window.navigator.userAgent)) || [])[1]);
return {
- history: !!($window.history && $window.history.pushState),
+ // Android has history.pushState, but it does not update location correctly
+ // so let's not use the history API at all.
+ // http://code.google.com/p/android/issues/detail?id=17471
+ // https://github.com/angular/angular.js/issues/904
+ history: !!($window.history && $window.history.pushState && !(android < 4)),
hashchange: 'onhashchange' in $window &&
// IE8 compatible mode lies
(!$window.document.documentMode || $window.document.documentMode > 7),
@@ -51,7 +51,8 @@ describe('$anchorScroll', function() {
elmSpy = {};
$provide.value('$window', {
scrollTo: jasmine.createSpy('$window.scrollTo'),
- document: document
+ document: document,
+ navigator: {}
});
}));
View
@@ -6,7 +6,7 @@ describe('$log', function() {
beforeEach(module(function($provide){
- $window = {};
+ $window = {navigator: {}};
logger = '';
log = function() { logger+= 'log;'; };
warn = function() { logger+= 'warn;'; };
@@ -3,6 +3,7 @@
describe('$sniffer', function() {
function sniffer($window) {
+ $window.navigator = {};
return new $SnifferProvider().$get[1]($window);
}

0 comments on commit 7b739c9

Please sign in to comment.