From d0159454dfa2e1cee4dd4ab7a41c2fcf9e121a64 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Thu, 3 May 2012 14:52:26 -0700 Subject: bug($cookie): set on app base path rather the current path. --- src/ng/browser.js | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) (limited to 'src/ng/browser.js') diff --git a/src/ng/browser.js b/src/ng/browser.js index fe14a3d7..9dce89db 100644 --- a/src/ng/browser.js +++ b/src/ng/browser.js @@ -17,12 +17,11 @@ /** * @param {object} window The global window object. * @param {object} document jQuery wrapped document. - * @param {object} body jQuery wrapped document.body. * @param {function()} XHR XMLHttpRequest constructor. * @param {object} $log console.log or an object with the same interface. * @param {object} $sniffer $sniffer service */ -function Browser(window, document, body, $log, $sniffer) { +function Browser(window, document, $log, $sniffer) { var self = this, rawDocument = document[0], location = window.location, @@ -221,11 +220,27 @@ function Browser(window, document, body, $log, $sniffer) { return callback; }; + ////////////////////////////////////////////////////////////// + // Misc API + ////////////////////////////////////////////////////////////// + + /** + * Returns current + * (always relative - without domain) + * + * @returns {string=} + */ + self.baseHref = function() { + var href = document.find('base').attr('href'); + return href ? href.replace(/^https?\:\/\/[^\/]*/, '') : href; + }; + ////////////////////////////////////////////////////////////// // Cookies API ////////////////////////////////////////////////////////////// var lastCookies = {}; var lastCookieString = ''; + var cookiePath = self.baseHref(); /** * @ngdoc method @@ -253,12 +268,10 @@ function Browser(window, document, body, $log, $sniffer) { if (name) { if (value === undefined) { - rawDocument.cookie = escape(name) + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; + rawDocument.cookie = escape(name) + "=;path=" + cookiePath + ";expires=Thu, 01 Jan 1970 00:00:00 GMT"; } else { if (isString(value)) { - rawDocument.cookie = escape(name) + '=' + escape(value); - - cookieLength = name.length + value.length + 1; + cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) + ';path=' + cookiePath).length + 1; if (cookieLength > 4096) { $log.warn("Cookie '"+ name +"' possibly not set or overflowed because it was too large ("+ cookieLength + " > 4096 bytes)!"); @@ -338,26 +351,11 @@ function Browser(window, document, body, $log, $sniffer) { return false; }; - - ////////////////////////////////////////////////////////////// - // Misc API - ////////////////////////////////////////////////////////////// - - /** - * Returns current - * (always relative - without domain) - * - * @returns {string=} - */ - self.baseHref = function() { - var href = document.find('base').attr('href'); - return href ? href.replace(/^https?\:\/\/[^\/]*/, '') : href; - }; } function $BrowserProvider(){ this.$get = ['$window', '$log', '$sniffer', '$document', function( $window, $log, $sniffer, $document){ - return new Browser($window, $document, $document.find('body'), $log, $sniffer); + return new Browser($window, $document, $log, $sniffer); }]; } -- cgit v1.2.3