diff options
| -rw-r--r-- | src/ng/sniffer.js | 9 | ||||
| -rw-r--r-- | test/ng/anchorScrollSpec.js | 3 | ||||
| -rw-r--r-- | test/ng/logSpec.js | 2 | ||||
| -rw-r--r-- | test/ng/snifferSpec.js | 1 |
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); } |
