aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDusan Bartos2013-08-21 14:54:54 +0200
committerJeff Cross2013-08-23 11:57:55 -0700
commiteefcdad013b56d5d3a05c0b2137a5860091b2575 (patch)
treec62d49512d1367873fc5a9a159b0df2e68f53a80
parent74ae3edf8614ea8a97580033db0fd145d5260b62 (diff)
downloadangular.js-eefcdad013b56d5d3a05c0b2137a5860091b2575.tar.bz2
fix($sniffer): history problems on Boxee box
History API not working properly on Boxee box browser (old Webkit) problem similar to the one on Android < 4
-rw-r--r--src/ng/sniffer.js12
-rw-r--r--test/ng/snifferSpec.js26
2 files changed, 34 insertions, 4 deletions
diff --git a/src/ng/sniffer.js b/src/ng/sniffer.js
index 585519b3..7f26e312 100644
--- a/src/ng/sniffer.js
+++ b/src/ng/sniffer.js
@@ -19,6 +19,7 @@ function $SnifferProvider() {
this.$get = ['$window', '$document', function($window, $document) {
var eventSupport = {},
android = int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
+ boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
document = $document[0] || {},
vendorPrefix,
vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,
@@ -42,10 +43,10 @@ function $SnifferProvider() {
transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));
animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));
-
+
if (android && (!transitions||!animations)) {
- transitions = isString(document.body.style.webkitTransition);
- animations = isString(document.body.style.webkitAnimation);
+ transitions = isString(document.body.style.webkitTransition);
+ animations = isString(document.body.style.webkitAnimation);
}
}
@@ -55,7 +56,10 @@ function $SnifferProvider() {
// 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)),
+
+ // older webit browser (533.9) on Boxee box has exactly the same problem as Android has
+ // so let's not use the history API also
+ history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),
hashchange: 'onhashchange' in $window &&
// IE8 compatible mode lies
(!document.documentMode || document.documentMode > 7),
diff --git a/test/ng/snifferSpec.js b/test/ng/snifferSpec.js
index 2206a271..1bf29f73 100644
--- a/test/ng/snifferSpec.js
+++ b/test/ng/snifferSpec.js
@@ -316,4 +316,30 @@ describe('$sniffer', function() {
});
});
+
+
+ describe('history', function() {
+ it('should be true on Boxee box with an older version of Webkit', function() {
+ module(function($provide) {
+ var doc = {
+ body : {
+ style : {}
+ }
+ };
+ var win = {
+ history: {
+ pushState: noop
+ },
+ navigator: {
+ userAgent: 'boxee (alpha/Darwin 8.7.1 i386 - 0.9.11.5591)'
+ }
+ };
+ $provide.value('$document', jqLite(doc));
+ $provide.value('$window', win);
+ });
+ inject(function($sniffer) {
+ expect($sniffer.history).toBe(false);
+ });
+ });
+ });
});