mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-16 23:30:23 +00:00
fix($cookies): set cookies on Safari&IE when base[href] is undefined
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
This commit is contained in:
parent
df744f3af4
commit
7090924515
2 changed files with 15 additions and 3 deletions
|
|
@ -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?\:\/\/[^\/]*/, '') : '';
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
||||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue