☠☠ backed out by 1ffc15e90603 ☠ ☠ | |
author | bsilverberg <bsilverberg@mozilla.com> |
Tue, 29 Mar 2016 17:20:58 -0400 | |
changeset 291307 | 0228e00caf591a590ac553d3ccf297c647b4c9c0 |
parent 291306 | 1d794d077cb1d12228185a0b9f6bbf64c56b8513 |
child 291308 | f91054a848d692f7c6f66a5be829ffa5421a898a |
push id | 30131 |
push user | kwierso@gmail.com |
push date | Fri, 01 Apr 2016 22:43:45 +0000 |
treeherder | autoland@c40c0b2f3b4c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | kmag |
bugs | 1255569 |
milestone | 48.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/toolkit/components/extensions/ext-cookies.js +++ b/toolkit/components/extensions/ext-cookies.js @@ -333,17 +333,17 @@ extensions.registerSchemaAPI("cookies", case "changed": notify(true, subject, "overwrite"); notify(false, subject, "explicit"); break; case "batch-deleted": subject.QueryInterface(Ci.nsIArray); for (let i = 0; i < subject.length; i++) { let cookie = subject.queryElementAt(i, Ci.nsICookie2); - if (!cookie.isSession && (cookie.expiry + 1) * 1000 <= Date.now()) { + if (!cookie.isSession && cookie.expiry * 1000 <= Date.now()) { notify(true, cookie, "expired"); } else { notify(true, cookie, "evicted"); } } break; } };
--- a/toolkit/components/extensions/test/mochitest/test_ext_cookies.html +++ b/toolkit/components/extensions/test/mochitest/test_ext_cookies.html @@ -176,12 +176,64 @@ add_task(function* test_cookies() { yield extension.startup(); info("extension loaded"); yield extension.awaitFinish("cookies"); yield extension.unload(); info("extension unloaded"); }); +add_task(function* test_cookies_expiry() { + function background() { + let expectedEvents = []; + + browser.cookies.onChanged.addListener(event => { + expectedEvents.push(`${event.removed}:${event.cause}`); + if (expectedEvents.length === 1) { + browser.test.assertEq("true:expired", expectedEvents[0], "expired cookie removed"); + browser.test.assertEq("first", event.cookie.name, "expired cookie has the expected name"); + browser.test.assertEq("one", event.cookie.value, "expired cookie has the expected value"); + } else { + browser.test.assertEq("false:explicit", expectedEvents[1], "new cookie added"); + browser.test.assertEq("first", event.cookie.name, "new cookie has the expected name"); + browser.test.assertEq("one-again", event.cookie.value, "new cookie has the expected value"); + browser.test.notifyPass("cookie-expiry"); + } + }); + + setTimeout(() => { + browser.test.sendMessage("change-cookies"); + }, 1000); + } + + let domain = ".example.com"; + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + "permissions": ["http://example.com/", "cookies"], + }, + background: `(${background})()`, + }); + + let cookieSvc = SpecialPowers.Services.cookies; + + let cookie = { + host: domain, + name: "first", + path: "/", + }; + + do { + cookieSvc.add(cookie.host, cookie.path, cookie.name, "one", false, false, false, Date.now() / 1000 + 1); + } while (!cookieSvc.cookieExists(cookie)); + + yield extension.startup(); + yield extension.awaitMessage("change-cookies"); + + cookieSvc.add(cookie.host, cookie.path, cookie.name, "one-again", false, false, false, Date.now() / 1000 + 10); + + yield extension.awaitFinish("cookie-expiry"); + yield extension.unload(); +}); + </script> </body> </html>