From bc3ff2cecd0861766a9e8606f3cc2c582d9875df Mon Sep 17 00:00:00 2001 From: Caitlin Potter Date: Wed, 18 Dec 2013 17:12:02 -0500 Subject: fix($location): parse xlink:href for SVGAElements Before this fix, the xlink:href property of an SVG element could not be parsed on click, as the property is an SVGAnimatedString rather than a DOMString. This patch parses the xlink:href's animVal into a DOMString in order to prevent an `Object # has no method 'indexOf'` exception from being thrown, and also to update the location if necessary as expected. Closes #5472 Closes #5198 Closes #5199 Closes #4098 Closes #1420 --- test/ng/locationSpec.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test') diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js index b9dd17fa..f23965f8 100644 --- a/test/ng/locationSpec.js +++ b/test/ng/locationSpec.js @@ -1229,6 +1229,31 @@ describe('$location', function() { }); browserTrigger(button, 'click'); })); + + + it('should not throw when clicking an SVGAElement link', function() { + var base; + module(function($locationProvider) { + return function($browser) { + window.location.hash = '!someHash'; + $browser.url(base = window.location.href); + base = base.split('#')[0]; + $locationProvider.hashPrefix('!'); + } + }); + inject(function($rootScope, $compile, $browser, $rootElement, $document, $location) { + // we need to do this otherwise we can't simulate events + $document.find('body').append($rootElement); + var template = ''; + var element = $compile(template)($rootScope); + + $rootElement.append(element); + var av1 = $rootElement.find('a').eq(0); + expect(function() { + browserTrigger(av1, 'click'); + }).not.toThrow(); + }); + }); }); -- cgit v1.2.3