aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVojta Jina2012-05-14 14:14:52 -0700
committerVojta Jina2012-05-14 15:12:51 -0700
commit7b739c97028be2a5d5aef679ef1f8064cd10d386 (patch)
treed549dc84026352e50f54df0d4ca22906540fb616
parentc1533ef5762199bea18d3bf3bcba7fcf89272931 (diff)
downloadangular.js-7b739c97028be2a5d5aef679ef1f8064cd10d386.tar.bz2
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
-rw-r--r--src/ng/sniffer.js9
-rw-r--r--test/ng/anchorScrollSpec.js3
-rw-r--r--test/ng/logSpec.js2
-rw-r--r--test/ng/snifferSpec.js1
4 files changed, 11 insertions, 4 deletions
diff --git a/src/ng/sniffer.js b/src/ng/sniffer.js
index b19e7ccf..0b116e27 100644
--- a/src/ng/sniffer.js
+++ b/src/ng/sniffer.js
@@ -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),
diff --git a/test/ng/anchorScrollSpec.js b/test/ng/anchorScrollSpec.js
index 7e4b3aa3..ba64d1a5 100644
--- a/test/ng/anchorScrollSpec.js
+++ b/test/ng/anchorScrollSpec.js
@@ -51,7 +51,8 @@ describe('$anchorScroll', function() {
elmSpy = {};
$provide.value('$window', {
scrollTo: jasmine.createSpy('$window.scrollTo'),
- document: document
+ document: document,
+ navigator: {}
});
}));
diff --git a/test/ng/logSpec.js b/test/ng/logSpec.js
index 269057a2..ce5c4f11 100644
--- a/test/ng/logSpec.js
+++ b/test/ng/logSpec.js
@@ -6,7 +6,7 @@ describe('$log', function() {
beforeEach(module(function($provide){
- $window = {};
+ $window = {navigator: {}};
logger = '';
log = function() { logger+= 'log;'; };
warn = function() { logger+= 'warn;'; };
diff --git a/test/ng/snifferSpec.js b/test/ng/snifferSpec.js
index 81a0db5e..a34a1975 100644
--- a/test/ng/snifferSpec.js
+++ b/test/ng/snifferSpec.js
@@ -3,6 +3,7 @@
describe('$sniffer', function() {
function sniffer($window) {
+ $window.navigator = {};
return new $SnifferProvider().$get[1]($window);
}