Backed out changeset 74330da56b82 (bug 1259169) for assertion failures in nsCookieService.cpp:2390

This commit is contained in:
Carsten "Tomcat" Book 2016-04-08 14:47:39 +02:00
parent 41d71a39c9
commit 78d9f80444
18 changed files with 38 additions and 60 deletions

View File

@ -249,7 +249,7 @@ Sanitizer.prototype = {
if (cookie.creationTime > range[0]) {
// This cookie was created after our cutoff, clear it
cookieMgr.remove(cookie.host, cookie.name, cookie.path,
false, cookie.originAttributes);
cookie.originAttributes, false);
if (++yieldCounter % YIELD_PERIOD == 0) {
yield new Promise(resolve => setTimeout(resolve, 0)); // Don't block the main thread too long

View File

@ -623,7 +623,7 @@ Cookies.prototype = {
// a domain cookie. See bug 222343.
if (host.length > 0) {
// Fist delete any possible extant matching host cookie.
Services.cookies.remove(host, name, path, false, {});
Services.cookies.remove(host, name, path, {}, false);
// Now make it a domain cookie.
if (host[0] != "." && !hostIsIPAddress(host))
host = "." + host;

View File

@ -591,7 +591,7 @@ var gCookiesWindow = {
for (var i = 0; i < deleteItems.length; ++i) {
var item = deleteItems[i];
this._cm.remove(item.host, item.name, item.path,
blockFutureCookies, item.originAttributes);
item.originAttributes, blockFutureCookies);
}
},

View File

@ -133,7 +133,7 @@ exports.items = [
if (isCookieAtHost(cookie, host)) {
if (cookie.name == args.name) {
cookieMgr.remove(cookie.host, cookie.name, cookie.path,
false, cookie.originAttributes);
cookie.originAttributes, false);
}
}
}

View File

@ -28,9 +28,9 @@ function run_test() {
do_check_throws(function() {
cm.countCookiesFromHost("..baz.com");
}, Cr.NS_ERROR_ILLEGAL_VALUE);
cm.remove("BAZ.com.", "foo", "/", false, {});
cm.remove("BAZ.com.", "foo", "/", {}, false);
do_check_eq(cm.countCookiesFromHost("baz.com"), 1);
cm.remove("baz.com", "foo", "/", false, {});
cm.remove("baz.com", "foo", "/", {}, false);
do_check_eq(cm.countCookiesFromHost("baz.com"), 0);
// Test that 'baz.com' and 'baz.com.' are treated differently
@ -40,9 +40,9 @@ function run_test() {
do_check_eq(cm.countCookiesFromHost(".baz.com"), 0);
do_check_eq(cm.countCookiesFromHost("baz.com."), 1);
do_check_eq(cm.countCookiesFromHost(".baz.com."), 1);
cm.remove("baz.com", "foo", "/", false, {});
cm.remove("baz.com", "foo", "/", {}, false);
do_check_eq(cm.countCookiesFromHost("baz.com."), 1);
cm.remove("baz.com.", "foo", "/", false, {});
cm.remove("baz.com.", "foo", "/", {}, false);
do_check_eq(cm.countCookiesFromHost("baz.com."), 0);
// test that domain cookies are illegal for IP addresses, aliases such as
@ -174,10 +174,10 @@ function run_test() {
}, Cr.NS_ERROR_ILLEGAL_VALUE);
do_check_eq(getCookieCount(), 1);
cm.remove("", "foo2", "/", false, {});
cm.remove("", "foo2", "/", {}, false);
do_check_eq(getCookieCount(), 0);
do_check_throws(function() {
cm.remove(".", "foo3", "/", false, {});
cm.remove(".", "foo3", "/", {}, false);
}, Cr.NS_ERROR_ILLEGAL_VALUE);
// test that the 'domain' attribute accepts a leading dot for IP addresses,

View File

@ -58,7 +58,7 @@ function do_run_test() {
}, Cr.NS_ERROR_NOT_AVAILABLE);
do_check_throws(function() {
Services.cookiemgr.remove("foo.com", "", "oh4", false, {});
Services.cookiemgr.remove("foo.com", "", "oh4", {}, false);
}, Cr.NS_ERROR_NOT_AVAILABLE);
do_check_throws(function() {

View File

@ -86,11 +86,11 @@ function do_run_test() {
// remove some of the cookies, in both reverse and forward order
for (let i = 100; i-- > 0; ) {
let host = i.toString() + ".com";
Services.cookiemgr.remove(host, "oh", "/", false, {});
Services.cookiemgr.remove(host, "oh", "/", {}, false);
}
for (let i = CMAX - 100; i < CMAX; ++i) {
let host = i.toString() + ".com";
Services.cookiemgr.remove(host, "oh", "/", false, {});
Services.cookiemgr.remove(host, "oh", "/", {}, false);
}
// check the count

View File

@ -12,13 +12,11 @@
#include "mozilla/net/NeckoCommon.h"
#include "nsCookieService.h"
#include "nsContentUtils.h"
#include "nsIServiceManager.h"
#include "nsIIOService.h"
#include "nsIPrefBranch.h"
#include "nsIPrefService.h"
#include "nsIScriptError.h"
#include "nsICookiePermission.h"
#include "nsIURI.h"
#include "nsIURL.h"
@ -2368,35 +2366,21 @@ NS_IMETHODIMP
nsCookieService::Remove(const nsACString &aHost,
const nsACString &aName,
const nsACString &aPath,
bool aBlocked,
JS::HandleValue aOriginAttributes,
JSContext* aCx,
uint8_t aArgc)
bool aBlocked,
JSContext* aCx)
{
MOZ_ASSERT(aArgc == 0 || aArgc == 1);
if (aArgc == 0) {
// This is supposed to be temporary and in 1 or 2 releases we want to
// have originAttributes param as mandatory. But for now, we don't want to
// break existing addons, so we write a console message to inform the addon
// developers about it.
nsContentUtils::ReportToConsole(nsIScriptError::warningFlag,
NS_LITERAL_CSTRING("Cookie Manager"),
nullptr,
nsContentUtils::eNECKO_PROPERTIES,
"nsICookieManagerRemoveDeprecated");
}
NeckoOriginAttributes attrs;
MOZ_ASSERT(attrs.Init(aCx, aOriginAttributes));
return RemoveNative(aHost, aName, aPath, aBlocked, &attrs);
return RemoveNative(aHost, aName, aPath, &attrs, aBlocked);
}
NS_IMETHODIMP_(nsresult)
nsCookieService::RemoveNative(const nsACString &aHost,
const nsACString &aName,
const nsACString &aPath,
bool aBlocked,
NeckoOriginAttributes* aOriginAttributes)
NeckoOriginAttributes* aOriginAttributes,
bool aBlocked)
{
if (NS_WARN_IF(!aOriginAttributes)) {
return NS_ERROR_FAILURE;

View File

@ -47,24 +47,21 @@ interface nsICookieManager : nsISupports
* dot must be present.
* @param aName The name specified in the cookie
* @param aPath The path for which the cookie was set
* @param aOriginAttributes The originAttributes of this cookie. This
* attribute is optional to avoid breaking add-ons.
* In 1 or 2 releases it will be mandatory: bug 1260399.
* @param aBlocked Indicates if cookies from this host should be permanently
* blocked.
* @param aOriginAttributes The originAttributes of this cookie
* @param aBlocked Indicates if cookies from this host should be permanently blocked
*
*/
[implicit_jscontext, optional_argc]
[implicit_jscontext]
void remove(in AUTF8String aHost,
in ACString aName,
in AUTF8String aPath,
in boolean aBlocked,
[optional] in jsval aOriginAttributes);
in jsval aOriginAttributes,
in boolean aBlocked);
[notxpcom]
nsresult removeNative(in AUTF8String aHost,
in ACString aName,
in AUTF8String aPath,
in boolean aBlocked,
in NeckoOriginAttributesPtr aOriginAttributes);
in NeckoOriginAttributesPtr aOriginAttributes,
in boolean aBlocked);
};

View File

@ -43,6 +43,3 @@ TrackingUriBlocked=The resource at "%1$S" was blocked because tracking protectio
# LOCALIZATION NOTE (APIDeprecationWarning):
# %1$S is the deprected API; %2$S is the API function that should be used.
APIDeprecationWarning=Warning: '%1$S' deprecated, please use '%2$S'
# LOCALIZATION NOTE (nsICookieManagerRemoveDeprecated): don't localize nsICookieManager.remove() and originAttributes.
nsICookieManagerRemoveDeprecated="'nsICookieManager.remove()' is changed. Update your code and pass the correct originAttributes. Read more on MDN: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsICookieManager'

View File

@ -665,8 +665,8 @@ main(int32_t argc, char *argv[])
rv[10] = NS_SUCCEEDED(cookieMgr->RemoveNative(NS_LITERAL_CSTRING("new.domain"), // domain
NS_LITERAL_CSTRING("test3"), // name
NS_LITERAL_CSTRING("/rabbit"), // path
true, // is blocked
&attrs)); // originAttributes
&attrs, // originAttributes
true)); // is blocked
rv[11] = NS_SUCCEEDED(cookieMgr2->CookieExists(newDomainCookie, &found)) && !found;
rv[12] = NS_SUCCEEDED(cookieMgr2->Add(NS_LITERAL_CSTRING("new.domain"), // domain
NS_LITERAL_CSTRING("/rabbit"), // path

View File

@ -2285,8 +2285,8 @@ GeckoDriver.prototype.deleteAllCookies = function*(cmd, resp) {
cookie.host,
cookie.name,
cookie.path,
false,
cookie.originAttributes);
cookie.originAttributes,
false);
return true;
};
this.mm.addMessageListener("Marionette:deleteCookie", cb);
@ -2303,8 +2303,8 @@ GeckoDriver.prototype.deleteCookie = function*(cmd, resp) {
cookie.host,
cookie.name,
cookie.path,
false,
cookie.originAttributes);
cookie.originAttributes,
false);
return true;
};
this.mm.addMessageListener("Marionette:deleteCookie", cb);

View File

@ -295,7 +295,7 @@ extensions.registerSchemaAPI("cookies", "cookies", (extension, context) => {
remove: function(details) {
for (let cookie of query(details, ["url", "name", "storeId"], extension)) {
Services.cookies.remove(cookie.host, cookie.name, cookie.path, false, cookie.originAttributes);
Services.cookies.remove(cookie.host, cookie.name, cookie.path, cookie.originAttributes, false);
// Todo: could there be multiple per subdomain?
return Promise.resolve({
url: details.url,

View File

@ -117,7 +117,7 @@ function* testCookies(options) {
yield extension.awaitMessage("change-cookies");
cookieSvc.add(domain, "/", "x", "y", options.secure, false, false, options.expiry);
cookieSvc.add(domain, "/", "x", "z", options.secure, false, false, options.expiry);
cookieSvc.remove(domain, "x", "/", false, {});
cookieSvc.remove(domain, "x", "/", {}, false);
extension.sendMessage("cookies-changed");
yield extension.awaitFinish("cookie-permissions");
@ -168,7 +168,7 @@ function* testCookies(options) {
}
for (let cookie of cookies) {
cookieSvc.remove(cookie.host, cookie.name, "/", false, {});
cookieSvc.remove(cookie.host, cookie.name, "/", {}, false);
}
// Make sure we don't silently poison subsequent tests if something goes wrong.
is(getCookies(options.domain).length, 0, "cookies cleared");

View File

@ -77,7 +77,7 @@ this.ForgetAboutSite = {
let enumerator = cm.getCookiesFromHost(aDomain);
while (enumerator.hasMoreElements()) {
let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie);
cm.remove(cookie.host, cookie.name, cookie.path, false, cookie.originAttributes);
cm.remove(cookie.host, cookie.name, cookie.path, cookie.originAttributes, false);
}
// EME

View File

@ -31,7 +31,7 @@ function finish_test(count) {
var cm = Components.classes["@mozilla.org/cookiemanager;1"]
.getService(Components.interfaces.nsICookieManager2);
cm.remove("example.com", "xpinstall", "/browser/" + RELATIVE_DIR, false, {});
cm.remove("example.com", "xpinstall", "/browser/" + RELATIVE_DIR, {}, false);
Services.perms.remove(makeURI("http://example.com"), "install");

View File

@ -33,7 +33,7 @@ function finish_test(count) {
var cm = Components.classes["@mozilla.org/cookiemanager;1"]
.getService(Components.interfaces.nsICookieManager2);
cm.remove("example.com", "xpinstall", "/browser/" + RELATIVE_DIR, false, {});
cm.remove("example.com", "xpinstall", "/browser/" + RELATIVE_DIR, {}, false);
Services.prefs.clearUserPref("network.cookie.cookieBehavior");

View File

@ -33,7 +33,7 @@ function finish_test(count) {
is(count, 0, "No add-ons should have been installed");
var cm = Components.classes["@mozilla.org/cookiemanager;1"]
.getService(Components.interfaces.nsICookieManager2);
cm.remove("example.org", "xpinstall", "/browser/" + RELATIVE_DIR, false, {});
cm.remove("example.org", "xpinstall", "/browser/" + RELATIVE_DIR, {}, false);
Services.prefs.clearUserPref("network.cookie.cookieBehavior");
Services.perms.remove(makeURI("http://example.com"), "install");