fix($location): don't rewrite links to different base paths

links to different base paths should not be left untouched
This commit is contained in:
Thibault Leruitte 2012-04-04 16:41:50 +02:00 committed by Igor Minar
parent 7c430c5ed0
commit 0a5050eb3c
2 changed files with 85 additions and 0 deletions

View file

@ -503,6 +503,9 @@ function $LocationProvider(){
var href = elm.attr('href');
if (!href || isDefined(elm.attr('ng-ext-link')) || elm.attr('target')) return;
// link to different base path
if (href[0] === '/' && href.indexOf(pathPrefix) !== 0) return;
// remove same domain from full url links (IE7 always returns full hrefs)
href = href.replace(absUrlPrefix, '');

View file

@ -864,6 +864,88 @@ describe('$location', function() {
});
it('should not rewrite when link to different base path when history enabled on new browser',
function() {
configureService('/other_base/link', true, true);
inject(
initBrowser(),
initLocation(),
function($browser) {
browserTrigger(link, 'click');
expectNoRewrite($browser);
}
);
});
it('should not rewrite when link to different base path when history enabled on old browser',
function() {
configureService('/other_base/link', true, false);
inject(
initBrowser(),
initLocation(),
function($browser) {
browserTrigger(link, 'click');
expectNoRewrite($browser);
}
);
});
it('should not rewrite when link to different base path when history disabled', function() {
configureService('/other_base/link', false);
inject(
initBrowser(),
initLocation(),
function($browser) {
browserTrigger(link, 'click');
expectNoRewrite($browser);
}
);
});
it('should not rewrite when full link to different base path when history enabled on new browser',
function() {
configureService('http://host.com/other_base/link', true, true);
inject(
initBrowser(),
initLocation(),
function($browser) {
browserTrigger(link, 'click');
expectNoRewrite($browser);
}
);
});
it('should not rewrite when full link to different base path when history enabled on old browser',
function() {
configureService('http://host.com/other_base/link', true, false);
inject(
initBrowser(),
initLocation(),
function($browser) {
browserTrigger(link, 'click');
expectNoRewrite($browser);
}
);
});
it('should not rewrite when full link to different base path when history disabled', function() {
configureService('http://host.com/other_base/link', false);
inject(
initBrowser(),
initLocation(),
function($browser) {
browserTrigger(link, 'click');
expectNoRewrite($browser);
}
);
});
// don't run next tests on IE<9, as browserTrigger does not simulate pressed keys
if (!(msie < 9)) {