diff --git a/src/ng/browser.js b/src/ng/browser.js index 3925348317ce..9682cd28a0c8 100644 --- a/src/ng/browser.js +++ b/src/ng/browser.js @@ -276,14 +276,15 @@ function Browser(window, document, $log, $sniffer) { } else { if (isString(value)) { cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) + ';path=' + cookiePath).length + 1; + + // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum: + // - 300 cookies + // - 20 cookies per unique domain + // - 4096 bytes per cookie if (cookieLength > 4096) { $log.warn("Cookie '"+ name +"' possibly not set or overflowed because it was too large ("+ cookieLength + " > 4096 bytes)!"); } - if (lastCookies.length > 20) { - $log.warn("Cookie '"+ name +"' possibly not set or overflowed because too many cookies " + - "were already set (" + lastCookies.length + " > 20 )"); - } } } } else { diff --git a/test/ng/browserSpecs.js b/test/ng/browserSpecs.js index 3f28c6059c5c..53ca26429493 100644 --- a/test/ng/browserSpecs.js +++ b/test/ng/browserSpecs.js @@ -277,33 +277,6 @@ describe('browser', function() { expect(browser.cookies().x).toEqual('shortVal'); }); - - it('should log warnings when 20 cookies per domain storage limit is reached', function() { - var i, str, cookieStr; - - for (i=0; i<20; i++) { - str = '' + i; - browser.cookies(str, str); - } - - i=0; - for (str in browser.cookies()) { - i++; - } - expect(i).toEqual(20); - expect(logs.warn).toEqual([]); - cookieStr = document.cookie; - - browser.cookies('one', 'more'); - expect(logs.warn).toEqual([]); - - //if browser dropped a cookie (very likely), make sure that the cache is not out of sync - if (document.cookie === cookieStr) { - expect(size(browser.cookies())).toEqual(20); - } else { - expect(size(browser.cookies())).toEqual(21); - } - }); });