From 427ee93f11d0ef64b8844f9b43b2a0f21f2be2cb Mon Sep 17 00:00:00 2001 From: Chirayu Krishnappa Date: Mon, 26 Aug 2013 17:26:08 -0700 Subject: fix(core): parse IE11 UA string correctly It's great that IE11 wants to be compatible enough that it doesn't want to be special cased and treated differently. However, as long as one has to have a different code path for IE than for the other supported browsers, we still need to detect and special case it. For instance, our URL parsing code still needs the same workaround the we used for IE10. We still see the same Access denied / TypeError exceptions when setting certain values. FYI, Angular doesn't generally blindly test for IE – we also check the version number. Thanks to modern.ie for the free IE11 test VM. Closes #3682 --- test/AngularSpec.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'test/AngularSpec.js') diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 344e2ead..f6796496 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -1003,4 +1003,19 @@ describe('angular', function() { }); }); + describe('msie UA parsing', function() { + if (/ Trident\/.*; rv:/.test(window.navigator.userAgent)) { + it('should fail when the Trident and the rv versions disagree for IE11+', function() { + // When this test fails, we can think about whether we want to use the version from the + // Trident token in the UA string or stick with the version from rv: as we currently do. + // Refer https://github.com/angular/angular.js/pull/3758#issuecomment-23529245 for the + // discussion. + var UA = window.navigator.userAgent; + var tridentVersion = parseInt((/Trident\/(\d+)/.exec(UA) || [])[1], 10) + 4; + var rvVersion = parseInt((/Trident\/.*; rv:(\d+)/.exec(UA) || [])[1], 10); + expect(tridentVersion).toBe(rvVersion); + }); + } + }); + }); -- cgit v1.2.3