From 5215e7f7244fd06d76d21fe34b8a18aab0f9be4a Mon Sep 17 00:00:00 2001
From: agisboye <august@heegaard.org>
Date: Sun, 15 Dec 2024 23:25:17 +0100
Subject: [PATCH 1/3] Add public initializer to HTTPCookieStorage

---
 Sources/FoundationNetworking/HTTPCookieStorage.swift | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Sources/FoundationNetworking/HTTPCookieStorage.swift b/Sources/FoundationNetworking/HTTPCookieStorage.swift
index 8f78c6ca8c..9363cf8a7f 100644
--- a/Sources/FoundationNetworking/HTTPCookieStorage.swift
+++ b/Sources/FoundationNetworking/HTTPCookieStorage.swift
@@ -67,6 +67,13 @@ open class HTTPCookieStorage: NSObject, @unchecked Sendable {
     private let syncQ = DispatchQueue(label: "org.swift.HTTPCookieStorage.syncQ")
 
     private let isEphemeral: Bool
+    
+    public init() {
+        _allCookies = [:]
+        cookieAcceptPolicy = .always
+        isEphemeral = true
+        super.init()
+    }
 
     private init(cookieStorageName: String, isEphemeral: Bool = false) {
         _allCookies = [:]

From 84104a724806234c36bd2d9d66437bff7f505c48 Mon Sep 17 00:00:00 2001
From: agisboye <august@heegaard.org>
Date: Thu, 19 Dec 2024 20:18:17 +0100
Subject: [PATCH 2/3] Disable cookie storage when using empty initializer

---
 .../HTTPCookieStorage.swift                     |  7 +++++++
 Tests/Foundation/TestHTTPCookieStorage.swift    | 17 +++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/Sources/FoundationNetworking/HTTPCookieStorage.swift b/Sources/FoundationNetworking/HTTPCookieStorage.swift
index 9363cf8a7f..c012aa3ac5 100644
--- a/Sources/FoundationNetworking/HTTPCookieStorage.swift
+++ b/Sources/FoundationNetworking/HTTPCookieStorage.swift
@@ -67,11 +67,13 @@ open class HTTPCookieStorage: NSObject, @unchecked Sendable {
     private let syncQ = DispatchQueue(label: "org.swift.HTTPCookieStorage.syncQ")
 
     private let isEphemeral: Bool
+    private let isStorageDisabled: Bool
     
     public init() {
         _allCookies = [:]
         cookieAcceptPolicy = .always
         isEphemeral = true
+        isStorageDisabled = true
         super.init()
     }
 
@@ -79,6 +81,7 @@ open class HTTPCookieStorage: NSObject, @unchecked Sendable {
         _allCookies = [:]
         cookieAcceptPolicy = .always
         self.isEphemeral = isEphemeral
+        isStorageDisabled = false
         super.init()
         if !isEphemeral {
             let bundlePath = Bundle.main.bundlePath
@@ -176,6 +179,8 @@ open class HTTPCookieStorage: NSObject, @unchecked Sendable {
         same name, domain and path, if any.
     */
     open func setCookie(_ cookie: HTTPCookie) {
+        guard !isStorageDisabled else { return }
+
         self.syncQ.sync {
             guard cookieAcceptPolicy != .never else { return }
 
@@ -309,6 +314,8 @@ open class HTTPCookieStorage: NSObject, @unchecked Sendable {
         in accordance with policy settings.
     */
     open func setCookies(_ cookies: [HTTPCookie], for url: URL?, mainDocumentURL: URL?) {
+        guard !isStorageDisabled else { return }
+
         //if the cookieAcceptPolicy is `never` we don't have anything to do
         guard cookieAcceptPolicy != .never else { return }
 
diff --git a/Tests/Foundation/TestHTTPCookieStorage.swift b/Tests/Foundation/TestHTTPCookieStorage.swift
index ecd46fa7bd..69ff182ff2 100644
--- a/Tests/Foundation/TestHTTPCookieStorage.swift
+++ b/Tests/Foundation/TestHTTPCookieStorage.swift
@@ -81,6 +81,23 @@ class TestHTTPCookieStorage: XCTestCase {
         checkCookieDomainMatching(for: .shared)
         checkCookieDomainMatching(for: .groupContainer("test"))
     }
+    
+    func test_emptyInitializer() {
+        let storage = HTTPCookieStorage()
+        let url = URL(string: "https://swift.org")
+        let simpleCookie = HTTPCookie(properties: [
+            .name: "TestCookie1",
+            .value: "Test @#$%^$&*99",
+            .path: "/",
+            .domain: "swift.org",
+        ])!
+        
+        storage.setCookie(simpleCookie)
+        XCTAssertEqual(storage.cookies!.count, 0)
+
+        storage.setCookies([simpleCookie], for: url, mainDocumentURL: nil)
+        XCTAssertEqual(storage.cookies!.count, 0)
+    }
 
     func cookieStorage(for type: StorageType) -> HTTPCookieStorage {
         switch type {

From b84c874810fdaec0e14bab8d79f42da83a330cd8 Mon Sep 17 00:00:00 2001
From: agisboye <august@heegaard.org>
Date: Mon, 13 Jan 2025 09:34:29 +0100
Subject: [PATCH 3/3] Add override

---
 Sources/FoundationNetworking/HTTPCookieStorage.swift | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Sources/FoundationNetworking/HTTPCookieStorage.swift b/Sources/FoundationNetworking/HTTPCookieStorage.swift
index c012aa3ac5..eb632e43a7 100644
--- a/Sources/FoundationNetworking/HTTPCookieStorage.swift
+++ b/Sources/FoundationNetworking/HTTPCookieStorage.swift
@@ -69,7 +69,7 @@ open class HTTPCookieStorage: NSObject, @unchecked Sendable {
     private let isEphemeral: Bool
     private let isStorageDisabled: Bool
     
-    public init() {
+    public override init() {
         _allCookies = [:]
         cookieAcceptPolicy = .always
         isEphemeral = true