Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

Commit

Permalink
fix($cookies): set cookies on Safari&IE when base[href] is undefined
Browse files Browse the repository at this point in the history
Safari and IE don't like being told to store cookies with path set to
undefined. This change ensures that if base[href] (from which cookie path
is derived) is undefined then the cookie path defaults to ''.

The test verifies that the cookie is set instead of checking that cookie has correct path,
this is due to that cookie meta information is not avabile once the cookie is set.

Closes #1190, #1191
  • Loading branch information
fredrikbonander authored and IgorMinar committed Feb 7, 2013
1 parent df744f3 commit 7090924
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/ng/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ function Browser(window, document, $log, $sniffer) {
*/
self.baseHref = function() {
var href = baseElement.attr('href');
return href ? href.replace(/^https?\:\/\/[^\/]*/, '') : href;
return href ? href.replace(/^https?\:\/\/[^\/]*/, '') : '';
};

//////////////////////////////////////////////////////////////
Expand Down
16 changes: 14 additions & 2 deletions test/ng/browserSpecs.js
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,18 @@ describe('browser', function() {
});
});

describe('put via cookies(cookieName, string), if no <base href> ', function () {
beforeEach(function () {
fakeDocument.basePath = undefined;
});

it('should default path in cookie to "" (empty string)', function () {
browser.cookies('cookie', 'bender');
// This only fails in Safari and IE when cookiePath returns undefined
// Where it now succeeds since baseHref return '' instead of undefined
expect(document.cookie).toEqual('cookie=bender');
});
});

describe('get via cookies()[cookieName]', function() {

Expand Down Expand Up @@ -555,9 +567,9 @@ describe('browser', function() {
expect(browser.baseHref()).toEqual('/base/path/');
});

it('should return undefined if no <base href>', function() {
it('should return \'\' (empty string) if no <base href>', function() {
fakeDocument.basePath = undefined;
expect(browser.baseHref()).toBeUndefined();
expect(browser.baseHref()).toEqual('');
});

it('should remove domain from <base href>', function() {
Expand Down

0 comments on commit 7090924

Please sign in to comment.