gecko-dev/netwerk/cookie/CookiePrivateStorage.h
Nick Alexander 52e65cee71 Bug 1675829 - Allow disabling the cookie database in the profile with network.cookie.noPersistentStorage. r=baku
Firefox background tasks use a new temporary profile directory for
every invocation.  We would like to write as little data as possible
into the temporary profile directory in this mode.  This patch allows
to make the persistent cookie storage discard cookies just like
private cookie storage.

This approach simply uses that the base `CookieStorage` class is close
to sufficient already.  There may be a performance impact with more
virtual invocations, but none of these functions seem likely to be
hot.

Differential Revision: https://phabricator.services.mozilla.com/D139910
2022-03-18 04:20:02 +00:00

59 lines
1.9 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_net_CookiePrivateStorage_h
#define mozilla_net_CookiePrivateStorage_h
#include "CookieStorage.h"
class nsICookieTransactionCallback;
namespace mozilla {
namespace net {
class CookiePrivateStorage final : public CookieStorage {
public:
static already_AddRefed<CookiePrivateStorage> Create();
void StaleCookies(const nsTArray<Cookie*>& aCookieList,
int64_t aCurrentTimeInUsec) override;
void Close() override{};
void EnsureInitialized() override{};
nsresult RunInTransaction(nsICookieTransactionCallback* aCallback) override {
// It might make sense for this to be a no-op, or to return
// `NS_ERROR_NOT_AVAILABLE`, or to evalute `aCallback` (in case it has
// side-effects), but for now, just crash.
MOZ_CRASH("RunInTransaction is not supported for private storage");
};
protected:
const char* NotificationTopic() const override {
return "private-cookie-changed";
}
void NotifyChangedInternal(nsISupports* aSubject, const char16_t* aData,
bool aOldCookieIsSession) override {}
void RemoveAllInternal() override {}
void RemoveCookieFromDB(const CookieListIter& aIter) override {}
already_AddRefed<nsIArray> PurgeCookies(int64_t aCurrentTimeInUsec,
uint16_t aMaxNumberOfCookies,
int64_t aCookiePurgeAge) override;
void StoreCookie(const nsACString& aBaseDomain,
const OriginAttributes& aOriginAttributes,
Cookie* aCookie) override {}
};
} // namespace net
} // namespace mozilla
#endif // mozilla_net_CookiePrivateStorage_h