Diff
Modified: trunk/Source/WebCore/ChangeLog (254930 => 254931)
--- trunk/Source/WebCore/ChangeLog 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/ChangeLog 2020-01-22 19:31:15 UTC (rev 254931)
@@ -1,5 +1,31 @@
2020-01-22 Chris Dumez <[email protected]>
+ Frequent NetworkConnectionToWebProcess::CookiesEnabled sync IPC when browsing reddit.com
+ https://bugs.webkit.org/show_bug.cgi?id=206450
+
+ Reviewed by Darin Adler.
+
+ Move HTTPCookieAcceptPolicy.h header from WebKit to WebCore so that the HTTPCookieAcceptPolicy enum
+ can be used in NetworkStorageSession. Replace NetworkStorageSession::cookiesEnabled() with a more
+ detailed NetworkStorageSession::cookieAcceptPolicy() method.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * loader/CookieJar.cpp:
+ (WebCore::CookieJar::cookiesEnabled const):
+ * platform/network/HTTPCookieAcceptPolicy.h: Renamed from Source/WebKit/Shared/HTTPCookieAcceptPolicy.h.
+ * platform/network/NetworkStorageSession.cpp:
+ * platform/network/NetworkStorageSession.h:
+ * platform/network/cf/NetworkStorageSessionCFNetWin.cpp:
+ (WebCore::NetworkStorageSession::cookieAcceptPolicy const):
+ * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
+ (WebCore::NetworkStorageSession::cookieAcceptPolicy const):
+ * platform/network/curl/NetworkStorageSessionCurl.cpp:
+ (WebCore::NetworkStorageSession::cookieAcceptPolicy const):
+ * platform/network/soup/NetworkStorageSessionSoup.cpp:
+ (WebCore::NetworkStorageSession::cookieAcceptPolicy const):
+
+2020-01-22 Chris Dumez <[email protected]>
+
Stop doing synchronous DecidePolicyForNavigationActionSync IPCs for initially empty document loads
https://bugs.webkit.org/show_bug.cgi?id=206458
Modified: trunk/Source/WebCore/Headers.cmake (254930 => 254931)
--- trunk/Source/WebCore/Headers.cmake 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/Headers.cmake 2020-01-22 19:31:15 UTC (rev 254931)
@@ -1224,6 +1224,7 @@
platform/network/DNS.h
platform/network/DNSResolveQueue.h
platform/network/FormData.h
+ platform/network/HTTPCookieAcceptPolicy.h
platform/network/HTTPHeaderMap.h
platform/network/HTTPParsers.h
platform/network/NetworkLoadInformation.h
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (254930 => 254931)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2020-01-22 19:31:15 UTC (rev 254931)
@@ -1252,6 +1252,7 @@
46B9519A207D635400A7D2DD /* RemoteFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B95192207D632E00A7D2DD /* RemoteFrame.h */; settings = {ATTRIBUTES = (Private, ); }; };
46B95BF52231CFD60053A504 /* DeviceOrientationAndMotionAccessController.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B95BF42231CFB80053A504 /* DeviceOrientationAndMotionAccessController.h */; };
46BCBBC22085008F00710638 /* JSRemoteDOMWindowBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 46BCBBC02085007F00710638 /* JSRemoteDOMWindowBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 46C0962123D78DD600657C09 /* HTTPCookieAcceptPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 46C0962023D78DD600657C09 /* HTTPCookieAcceptPolicy.h */; settings = {ATTRIBUTES = (Private, ); }; };
46C376622085177D00C73829 /* JSRemoteDOMWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 46C376612085176D00C73829 /* JSRemoteDOMWindow.h */; };
46C696CB1E7205F700597937 /* CPUMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 46C696C91E7205E400597937 /* CPUMonitor.h */; settings = {ATTRIBUTES = (Private, ); }; };
46C696CC1E7205FC00597937 /* CPUMonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46C696CA1E7205E400597937 /* CPUMonitor.cpp */; };
@@ -1261,6 +1262,7 @@
46DFF4981DC2603100B80B48 /* ShadowRootMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 46DFF4961DC2601300B80B48 /* ShadowRootMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
46DFF49C1DC2620B00B80B48 /* JSShadowRootMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 46DFF49A1DC261F900B80B48 /* JSShadowRootMode.h */; };
46E0C0DE23C006E9005E47AE /* DragEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E0C0DA23C006B3005E47AE /* DragEvent.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 46E139F823D8B8EB0075848E /* HTTPCookieAcceptPolicyCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E139F623D8B8E70075848E /* HTTPCookieAcceptPolicyCocoa.h */; settings = {ATTRIBUTES = (Private, ); }; };
46E1666E1FCC86A200C9710B /* DocumentIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E1666C1FCC868700C9710B /* DocumentIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
46E791491F97E01A00199739 /* JSVisibilityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E791461F97E01700199739 /* JSVisibilityState.h */; };
46EB37CA1F97CCD200B65523 /* JSServiceWorkerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EB37C31F97CCCB00B65523 /* JSServiceWorkerClient.h */; };
@@ -7785,6 +7787,7 @@
46BCBBC02085007F00710638 /* JSRemoteDOMWindowBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRemoteDOMWindowBase.h; sourceTree = "<group>"; };
46BCBBC12085008000710638 /* JSRemoteDOMWindowBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRemoteDOMWindowBase.cpp; sourceTree = "<group>"; };
46BCBBC3208500A700710638 /* RemoteDOMWindow.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RemoteDOMWindow.idl; sourceTree = "<group>"; };
+ 46C0962023D78DD600657C09 /* HTTPCookieAcceptPolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPCookieAcceptPolicy.h; sourceTree = "<group>"; };
46C3765F2085176C00C73829 /* JSRemoteDOMWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRemoteDOMWindow.cpp; sourceTree = "<group>"; };
46C376612085176D00C73829 /* JSRemoteDOMWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRemoteDOMWindow.h; sourceTree = "<group>"; };
46C696C91E7205E400597937 /* CPUMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPUMonitor.h; sourceTree = "<group>"; };
@@ -7802,6 +7805,7 @@
46E0C0DA23C006B3005E47AE /* DragEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragEvent.h; sourceTree = "<group>"; };
46E0C0DC23C006B4005E47AE /* DragEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DragEvent.cpp; sourceTree = "<group>"; };
46E0C0DD23C006B4005E47AE /* DragEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DragEvent.idl; sourceTree = "<group>"; };
+ 46E139F623D8B8E70075848E /* HTTPCookieAcceptPolicyCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPCookieAcceptPolicyCocoa.h; sourceTree = "<group>"; };
46E1666C1FCC868700C9710B /* DocumentIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentIdentifier.h; sourceTree = "<group>"; };
46E791451F97E01700199739 /* JSVisibilityState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVisibilityState.cpp; sourceTree = "<group>"; };
46E791461F97E01700199739 /* JSVisibilityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVisibilityState.h; sourceTree = "<group>"; };
@@ -20465,6 +20469,7 @@
514C765B0CE923A1007EF3CD /* FormData.h */,
085B92B80EFDE73D00E6123C /* FormDataBuilder.cpp */,
085B92B90EFDE73D00E6123C /* FormDataBuilder.h */,
+ 46C0962023D78DD600657C09 /* HTTPCookieAcceptPolicy.h */,
0B8C56D30F28627F000502E1 /* HTTPHeaderMap.cpp */,
514C765C0CE923A1007EF3CD /* HTTPHeaderMap.h */,
1AC900BF1943AF3D008625B5 /* HTTPHeaderNames.in */,
@@ -21449,6 +21454,7 @@
5120BBAC1F1CE77000EFEBF1 /* CookieStorageObserver.mm */,
3792917C1987678F00F4B661 /* CredentialCocoa.h */,
3792917B1987678F00F4B661 /* CredentialCocoa.mm */,
+ 46E139F623D8B8E70075848E /* HTTPCookieAcceptPolicyCocoa.h */,
5C9B860B1C21E3C600110F36 /* NetworkLoadMetrics.mm */,
51D1248A1E73625C002B2820 /* NetworkStorageSessionCocoa.mm */,
372ADA37197F47B900FC501E /* ProtectionSpaceCocoa.h */,
@@ -30285,6 +30291,8 @@
E44613AB0CD6331000FADA75 /* HTMLVideoElement.h in Headers */,
1D2F8E052344751D00993B68 /* HTMLVideoElementPictureInPicture.h in Headers */,
839AAFED1A0C0C8D00605F99 /* HTMLWBRElement.h in Headers */,
+ 46C0962123D78DD600657C09 /* HTTPCookieAcceptPolicy.h in Headers */,
+ 46E139F823D8B8EB0075848E /* HTTPCookieAcceptPolicyCocoa.h in Headers */,
5CA1DEC61F71F1C700E71BD3 /* HTTPHeaderField.h in Headers */,
514C76710CE923A1007EF3CD /* HTTPHeaderMap.h in Headers */,
1AB5EBD2194A50F30059AC70 /* HTTPHeaderNames.h in Headers */,
Modified: trunk/Source/WebCore/loader/CookieJar.cpp (254930 => 254931)
--- trunk/Source/WebCore/loader/CookieJar.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/loader/CookieJar.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -32,6 +32,7 @@
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClient.h"
+#include "HTTPCookieAcceptPolicy.h"
#include "NetworkStorageSession.h"
#include "NetworkingContext.h"
#include "PlatformStrategies.h"
@@ -122,7 +123,7 @@
bool CookieJar::cookiesEnabled(const Document&) const
{
if (auto* session = m_storageSessionProvider->storageSession())
- return session->cookiesEnabled();
+ return session->cookieAcceptPolicy() != HTTPCookieAcceptPolicy::Never;
ASSERT_NOT_REACHED();
return false;
Copied: trunk/Source/WebCore/platform/network/HTTPCookieAcceptPolicy.h (from rev 254930, trunk/Source/WebKit/Shared/HTTPCookieAcceptPolicy.h) (0 => 254931)
--- trunk/Source/WebCore/platform/network/HTTPCookieAcceptPolicy.h (rev 0)
+++ trunk/Source/WebCore/platform/network/HTTPCookieAcceptPolicy.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2011-2020 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+namespace WebCore {
+
+enum class HTTPCookieAcceptPolicy : uint8_t {
+ AlwaysAccept = 0,
+ Never = 1,
+ _OnlyFromMainDocumentDomain_ = 2,
+ ExclusivelyFromMainDocumentDomain = 3,
+};
+
+} // namespace WebKit
+
+namespace WTF {
+
+template<> struct EnumTraits<WebCore::HTTPCookieAcceptPolicy> {
+ using values = EnumValues<
+ WebCore::HTTPCookieAcceptPolicy,
+ WebCore::HTTPCookieAcceptPolicy::AlwaysAccept,
+ WebCore::HTTPCookieAcceptPolicy::Never,
+ WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain,
+ WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain
+ >;
+};
+
+}
Modified: trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp (254930 => 254931)
--- trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -26,6 +26,7 @@
#include "config.h"
#include "NetworkStorageSession.h"
+#include "HTTPCookieAcceptPolicy.h"
#include "RuntimeApplicationChecks.h"
#include <wtf/NeverDestroyed.h>
#include <wtf/ProcessPrivilege.h>
Modified: trunk/Source/WebCore/platform/network/NetworkStorageSession.h (254930 => 254931)
--- trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -72,6 +72,7 @@
struct CookieRequestHeaderFieldProxy;
struct SameSiteInfo;
+enum class HTTPCookieAcceptPolicy : uint8_t;
enum class IncludeSecureCookies : bool;
enum class IncludeHttpOnlyCookies : bool;
enum class ThirdPartyCookieBlockingMode : uint8_t { All, AllOnSitesWithoutUserInteraction, OnlyAccordingToPerDomainPolicy };
@@ -125,7 +126,7 @@
NetworkingContext* context() const;
#endif
- WEBCORE_EXPORT bool cookiesEnabled() const;
+ WEBCORE_EXPORT HTTPCookieAcceptPolicy cookieAcceptPolicy() const;
WEBCORE_EXPORT void setCookie(const Cookie&);
WEBCORE_EXPORT void setCookies(const Vector<Cookie>&, const URL&, const URL& mainDocumentURL);
WEBCORE_EXPORT void setCookiesFromDOM(const URL& firstParty, const SameSiteInfo&, const URL&, Optional<FrameIdentifier>, Optional<PageIdentifier>, ShouldAskITP, const String&) const;
Modified: trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp (254930 => 254931)
--- trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -28,6 +28,7 @@
#include "Cookie.h"
#include "CookieRequestHeaderFieldProxy.h"
+#include "HTTPCookieAcceptPolicy.h"
#include "NotImplemented.h"
#include <CFNetwork/CFHTTPCookiesPriv.h>
#include <CoreFoundation/CoreFoundation.h>
@@ -258,10 +259,18 @@
return cookieRequestHeaderFieldValue(headerFieldProxy.firstParty, headerFieldProxy.sameSiteInfo, headerFieldProxy.url, headerFieldProxy.frameID, headerFieldProxy.pageID, headerFieldProxy.includeSecureCookies, ShouldAskITP::Yes);
}
-bool NetworkStorageSession::cookiesEnabled() const
+HTTPCookieAcceptPolicy NetworkStorageSession::cookieAcceptPolicy() const
{
- CFHTTPCookieStorageAcceptPolicy policy = CFHTTPCookieStorageGetCookieAcceptPolicy(cookieStorage().get());
- return policy == CFHTTPCookieStorageAcceptPolicyOnlyFromMainDocumentDomain || policy == CFHTTPCookieStorageAcceptPolicyExclusivelyFromMainDocumentDomain || policy == CFHTTPCookieStorageAcceptPolicyAlways;
+ switch (CFHTTPCookieStorageGetCookieAcceptPolicy(cookieStorage().get())) {
+ case CFHTTPCookieStorageAcceptPolicyAlways:
+ return HTTPCookieAcceptPolicy::AlwaysAccept;
+ case CFHTTPCookieStorageAcceptPolicyOnlyFromMainDocumentDomain:
+ return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
+ case CFHTTPCookieStorageAcceptPolicyExclusivelyFromMainDocumentDomain:
+ return HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
+ default:
+ return HTTPCookieAcceptPolicy::Never;
+ }
}
bool NetworkStorageSession::getRawCookies(const URL& firstParty, const SameSiteInfo&, const URL& url, Optional<FrameIdentifier> frameID, Optional<PageIdentifier> pageID, ShouldAskITP, Vector<Cookie>& rawCookies) const
Copied: trunk/Source/WebCore/platform/network/cocoa/HTTPCookieAcceptPolicyCocoa.h (from rev 254930, trunk/Source/WebKit/Shared/HTTPCookieAcceptPolicy.h) (0 => 254931)
--- trunk/Source/WebCore/platform/network/cocoa/HTTPCookieAcceptPolicyCocoa.h (rev 0)
+++ trunk/Source/WebCore/platform/network/cocoa/HTTPCookieAcceptPolicyCocoa.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2011-2020 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "HTTPCookieAcceptPolicy.h"
+
+namespace WebCore {
+
+inline HTTPCookieAcceptPolicy toHTTPCookieAcceptPolicy(NSHTTPCookieAcceptPolicy policy)
+{
+ switch (static_cast<NSUInteger>(policy)) {
+ case NSHTTPCookieAcceptPolicyAlways:
+ return WebCore::HTTPCookieAcceptPolicy::AlwaysAccept;
+ case NSHTTPCookieAcceptPolicyNever:
+ return WebCore::HTTPCookieAcceptPolicy::Never;
+ case NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
+ return WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
+ case NSHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain:
+ return WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
+ }
+
+ ASSERT_NOT_REACHED();
+ return WebCore::HTTPCookieAcceptPolicy::Never;
+}
+
+}
Modified: trunk/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm (254930 => 254931)
--- trunk/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm 2020-01-22 19:31:15 UTC (rev 254931)
@@ -29,6 +29,7 @@
#import "Cookie.h"
#import "CookieRequestHeaderFieldProxy.h"
#import "CookieStorageObserver.h"
+#import "HTTPCookieAcceptPolicyCocoa.h"
#import "SameSiteInfo.h"
#import <pal/spi/cf/CFNetworkSPI.h>
#import <wtf/BlockObjCExceptions.h>
@@ -441,15 +442,14 @@
return static_cast<NSHTTPCookieAcceptPolicy>(CFHTTPCookieStorageGetCookieAcceptPolicy(cookieStorage));
}
-bool NetworkStorageSession::cookiesEnabled() const
+HTTPCookieAcceptPolicy NetworkStorageSession::cookieAcceptPolicy() const
{
BEGIN_BLOCK_OBJC_EXCEPTIONS;
+ auto policy = httpCookieAcceptPolicy(cookieStorage().get());
+ return toHTTPCookieAcceptPolicy(policy);
+ END_BLOCK_OBJC_EXCEPTIONS;
- NSHTTPCookieAcceptPolicy cookieAcceptPolicy = httpCookieAcceptPolicy(cookieStorage().get());
- return cookieAcceptPolicy == NSHTTPCookieAcceptPolicyAlways || cookieAcceptPolicy == NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain || cookieAcceptPolicy == NSHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain;
-
- END_BLOCK_OBJC_EXCEPTIONS;
- return false;
+ return HTTPCookieAcceptPolicy::Never;
}
bool NetworkStorageSession::getRawCookies(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<FrameIdentifier> frameID, Optional<PageIdentifier> pageID, ShouldAskITP shouldAskITP, Vector<Cookie>& rawCookies) const
Modified: trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp (254930 => 254931)
--- trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -33,6 +33,7 @@
#include "CookieJarDB.h"
#include "CookieRequestHeaderFieldProxy.h"
#include "CurlContext.h"
+#include "HTTPCookieAcceptPolicy.h"
#include "NetworkingContext.h"
#include "ResourceHandle.h"
#include <wtf/FileSystem.h>
@@ -85,9 +86,21 @@
cookieStorage().setCookiesFromDOM(*this, firstParty, sameSiteInfo, url, frameID, pageID, value);
}
-bool NetworkStorageSession::cookiesEnabled() const
+HTTPCookieAcceptPolicy NetworkStorageSession::cookieAcceptPolicy() const
{
- return cookieStorage().cookiesEnabled(*this);
+ switch (cookieStorage().cookieAcceptPolicy(*this)) {
+ case CookieAcceptPolicy::Always:
+ return HTTPCookieAcceptPolicy::AlwaysAccept;
+ case CookieAcceptPolicy::Never:
+ return HTTPCookieAcceptPolicy::Never;
+ case CookieAcceptPolicy::OnlyFromMainDocumentDomain:
+ return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
+ case CookieAcceptPolicy::ExclusivelyFromMainDocumentDomain:
+ return HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
+ }
+
+ ASSERT_NOT_REACHED();
+ return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
}
std::pair<String, bool> NetworkStorageSession::cookiesForDOM(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<FrameIdentifier> frameID, Optional<PageIdentifier> pageID, IncludeSecureCookies includeSecureCookies, ShouldAskITP) const
Modified: trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp (254930 => 254931)
--- trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -34,6 +34,7 @@
#include "Cookie.h"
#include "CookieRequestHeaderFieldProxy.h"
#include "GUniquePtrSoup.h"
+#include "HTTPCookieAcceptPolicy.h"
#include "ResourceHandle.h"
#include "SoupNetworkSession.h"
#include "URLSoup.h"
@@ -241,10 +242,16 @@
#endif
}
-bool NetworkStorageSession::cookiesEnabled() const
+HTTPCookieAcceptPolicy NetworkStorageSession::cookieAcceptPolicy() const
{
- auto policy = soup_cookie_jar_get_accept_policy(cookieStorage());
- return policy == SOUP_COOKIE_JAR_ACCEPT_ALWAYS || policy == SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY;
+ switch (soup_cookie_jar_get_accept_policy(cookieStorage())) {
+ case SOUP_COOKIE_JAR_ACCEPT_ALWAYS:
+ return HTTPCookieAcceptPolicy::AlwaysAccept;
+ case SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY:
+ return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
+ default:
+ return HTTPCookieAcceptPolicy::Never;
+ }
}
static inline bool httpOnlyCookieExists(const GSList* cookies, const gchar* name, const gchar* path)
Modified: trunk/Source/WebKit/ChangeLog (254930 => 254931)
--- trunk/Source/WebKit/ChangeLog 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/ChangeLog 2020-01-22 19:31:15 UTC (rev 254931)
@@ -1,5 +1,79 @@
2020-01-22 Chris Dumez <[email protected]>
+ Frequent NetworkConnectionToWebProcess::CookiesEnabled sync IPC when browsing reddit.com
+ https://bugs.webkit.org/show_bug.cgi?id=206450
+
+ Reviewed by Darin Adler.
+
+ Frequent NetworkConnectionToWebProcess::CookiesEnabled sync IPC when browsing reddit.com. This
+ happens every time the page script calls navigator.cookieEnabled. To address the issue, we now
+ store the "cookie accept policy" on the WebContent process side. This allows us to know
+ synchronously on the WebContent process if cookies are enabled or not and without any IPC to
+ the network process. To achieve this, I added a new cookieAcceptPolicy member to
+ NetworkProcessConnectionInfo so that the WebContent process is aware of the initial policy when
+ it connects to the network process. The policy on the WebContent process side is then kept up
+ to date via IPCs from the network process to the WebContent processes whenever the cookie
+ accept policy changes.
+
+ * NetworkProcess/Cookies/WebCookieManager.cpp:
+ (WebKit::WebCookieManager::setHTTPCookieAcceptPolicy):
+ (WebKit::WebCookieManager::getHTTPCookieAcceptPolicy):
+ * NetworkProcess/Cookies/WebCookieManager.h:
+ * NetworkProcess/Cookies/WebCookieManager.messages.in:
+ * NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:
+ * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
+ * NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp:
+ * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+ (WebKit::NetworkConnectionToWebProcess::cookieAcceptPolicyChanged):
+ * NetworkProcess/NetworkConnectionToWebProcess.h:
+ * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
+ (WebKit::NetworkProcess::cookieAcceptPolicyChanged):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in:
+ * NetworkProcess/NetworkProcessCreationParameters.h:
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/API/APIHTTPCookieStore.cpp:
+ (API::HTTPCookieStore::setHTTPCookieAcceptPolicy):
+ (API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore):
+ * UIProcess/API/APIHTTPCookieStore.h:
+ * UIProcess/API/C/WKAPICast.h:
+ (WebKit::toHTTPCookieAcceptPolicy):
+ (WebKit::toAPI):
+ * UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm:
+ (API::toNSHTTPCookieAcceptPolicy):
+ (API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore):
+ * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
+ * UIProcess/API/Cocoa/WKProcessPool.mm:
+ (toHTTPCookieAcceptPolicy):
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::openNetworkProcessConnection):
+ * UIProcess/WebCookieManagerProxy.h:
+ * UIProcess/WebProcessPool.h:
+ * WebKit.xcodeproj/project.pbxproj:
+ * WebProcess/Network/NetworkProcessConnection.cpp:
+ (WebKit::NetworkProcessConnection::NetworkProcessConnection):
+ (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
+ (WebKit::NetworkProcessConnection::cookiesEnabled):
+ (WebKit::NetworkProcessConnection::cookieAcceptPolicyChanged):
+ * WebProcess/Network/NetworkProcessConnection.h:
+ (WebKit::NetworkProcessConnection::create):
+ * WebProcess/Network/NetworkProcessConnection.messages.in:
+ * WebProcess/Network/NetworkProcessConnectionInfo.h:
+ (WebKit::NetworkProcessConnectionInfo::encode const):
+ (WebKit::NetworkProcessConnectionInfo::decode):
+ * WebProcess/WebPage/WebCookieJar.cpp:
+ (WebKit::WebCookieJar::cookiesEnabled const):
+ - Return false early if the document has no frame / page (cookie-averse as per spec)
+ - Return false early if ITP is enabled and it is a third-party iframe without storage
+ access. This bypasses the sync IPC call completely for such iframes.
+
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::ensureNetworkProcessConnection):
+
+2020-01-22 Chris Dumez <[email protected]>
+
[IPC Hardening] Only process Messages::NetworkProcess messages when sent by the UIProcess
https://bugs.webkit.org/show_bug.cgi?id=206558
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -144,6 +144,7 @@
void WebCookieManager::setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy, CompletionHandler<void()>&& completionHandler)
{
platformSetHTTPCookieAcceptPolicy(policy);
+ m_process.cookieAcceptPolicyChanged(policy);
completionHandler();
}
@@ -150,7 +151,7 @@
void WebCookieManager::getHTTPCookieAcceptPolicy(CompletionHandler<void(HTTPCookieAcceptPolicy)>&& completionHandler)
{
- completionHandler(platformGetHTTPCookieAcceptPolicy());
+ completionHandler(m_process.defaultStorageSession().cookieAcceptPolicy());
}
} // namespace WebKit
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -39,12 +39,12 @@
namespace WebCore {
struct Cookie;
+enum class HTTPCookieAcceptPolicy : uint8_t;
}
namespace WebKit {
class NetworkProcess;
-enum class HTTPCookieAcceptPolicy : uint8_t;
class WebCookieManager : public NetworkProcessSupplement, public IPC::MessageReceiver {
WTF_MAKE_FAST_ALLOCATED;
@@ -55,7 +55,7 @@
static const char* supplementName();
- void setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy, CompletionHandler<void()>&&);
+ void setHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy, CompletionHandler<void()>&&);
#if USE(SOUP)
void setCookiePersistentStorage(PAL::SessionID, const String& storagePath, SoupCookiePersistentStorageType);
@@ -79,9 +79,8 @@
void getAllCookies(PAL::SessionID, CompletionHandler<void(Vector<WebCore::Cookie>&&)>&&);
void getCookies(PAL::SessionID, const URL&, CompletionHandler<void(Vector<WebCore::Cookie>&&)>&&);
- void platformSetHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy);
- void getHTTPCookieAcceptPolicy(CompletionHandler<void(HTTPCookieAcceptPolicy)>&&);
- HTTPCookieAcceptPolicy platformGetHTTPCookieAcceptPolicy();
+ void platformSetHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy);
+ void getHTTPCookieAcceptPolicy(CompletionHandler<void(WebCore::HTTPCookieAcceptPolicy)>&&);
void startObservingCookieChanges(PAL::SessionID);
void stopObservingCookieChanges(PAL::SessionID);
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in 2020-01-22 19:31:15 UTC (rev 254931)
@@ -35,8 +35,8 @@
void DeleteCookie(PAL::SessionID sessionID, struct WebCore::Cookie cookie) -> () Async
void DeleteAllCookiesModifiedSince(PAL::SessionID sessionID, WallTime time) -> () Async
- void SetHTTPCookieAcceptPolicy(enum:uint8_t WebKit::HTTPCookieAcceptPolicy policy) -> () Async
- void GetHTTPCookieAcceptPolicy() -> (enum:uint8_t WebKit::HTTPCookieAcceptPolicy policy) Async
+ void SetHTTPCookieAcceptPolicy(enum:uint8_t WebCore::HTTPCookieAcceptPolicy policy) -> () Async
+ void GetHTTPCookieAcceptPolicy() -> (enum:uint8_t WebCore::HTTPCookieAcceptPolicy policy) Async
void StartObservingCookieChanges(PAL::SessionID sessionID)
void StopObservingCookieChanges(PAL::SessionID sessionID)
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -26,8 +26,8 @@
#include "config.h"
#include "WebCookieManager.h"
-#include "HTTPCookieAcceptPolicy.h"
#include "NetworkProcess.h"
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/NetworkStorageSession.h>
namespace WebKit {
@@ -57,22 +57,4 @@
});
}
-HTTPCookieAcceptPolicy WebCookieManager::platformGetHTTPCookieAcceptPolicy()
-{
- const auto& networkStorageSession = m_process.defaultStorageSession();
- switch (networkStorageSession.cookieStorage().cookieAcceptPolicy(networkStorageSession)) {
- case CookieAcceptPolicy::Always:
- return HTTPCookieAcceptPolicy::AlwaysAccept;
- case CookieAcceptPolicy::Never:
- return HTTPCookieAcceptPolicy::Never;
- case CookieAcceptPolicy::OnlyFromMainDocumentDomain:
- return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
- case CookieAcceptPolicy::ExclusivelyFromMainDocumentDomain:
- return HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
- }
-
- ASSERT_NOT_REACHED();
- return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
-}
-
} // namespace WebKit
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/mac/WebCookieManagerMac.mm (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/Cookies/mac/WebCookieManagerMac.mm 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/mac/WebCookieManagerMac.mm 2020-01-22 19:31:15 UTC (rev 254931)
@@ -26,9 +26,9 @@
#import "config.h"
#import "WebCookieManager.h"
-#import "HTTPCookieAcceptPolicy.h"
#import "NetworkProcess.h"
#import "NetworkSession.h"
+#import <WebCore/HTTPCookieAcceptPolicy.h>
#import <WebCore/NetworkStorageSession.h>
#import <pal/spi/cf/CFNetworkSPI.h>
#import <wtf/ProcessPrivilege.h>
@@ -65,23 +65,4 @@
});
}
-HTTPCookieAcceptPolicy WebCookieManager::platformGetHTTPCookieAcceptPolicy()
-{
- ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
-
- switch ([[NSHTTPCookieStorage sharedHTTPCookieStorage] cookieAcceptPolicy]) {
- case NSHTTPCookieAcceptPolicyAlways:
- return HTTPCookieAcceptPolicy::AlwaysAccept;
- case NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
- return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
- case NSHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain:
- return HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
- case NSHTTPCookieAcceptPolicyNever:
- return HTTPCookieAcceptPolicy::Never;
- }
-
- ASSERT_NOT_REACHED();
- return HTTPCookieAcceptPolicy::AlwaysAccept;
-}
-
} // namespace WebKit
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -26,10 +26,10 @@
#include "config.h"
#include "WebCookieManager.h"
-#include "HTTPCookieAcceptPolicy.h"
#include "NetworkProcess.h"
#include "NetworkSessionSoup.h"
#include "SoupCookiePersistentStorageType.h"
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/NetworkStorageSession.h>
#include <WebCore/SoupNetworkSession.h>
#include <libsoup/soup.h>
@@ -60,21 +60,6 @@
});
}
-HTTPCookieAcceptPolicy WebCookieManager::platformGetHTTPCookieAcceptPolicy()
-{
- switch (soup_cookie_jar_get_accept_policy(m_process.defaultStorageSession().cookieStorage())) {
- case SOUP_COOKIE_JAR_ACCEPT_ALWAYS:
- return HTTPCookieAcceptPolicy::AlwaysAccept;
- case SOUP_COOKIE_JAR_ACCEPT_NEVER:
- return HTTPCookieAcceptPolicy::Never;
- case SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY:
- return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
- }
-
- ASSERT_NOT_REACHED();
- return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
-}
-
void WebCookieManager::setCookiePersistentStorage(PAL::SessionID sessionID, const String& storagePath, SoupCookiePersistentStorageType storageType)
{
if (auto* networkSession = m_process.networkSession(sessionID))
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -63,6 +63,7 @@
#include "WebSWServerToContextConnectionMessages.h"
#include "WebsiteDataStoreParameters.h"
#include <WebCore/DocumentStorageAccess.h>
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/NetworkStorageSession.h>
#include <WebCore/ResourceLoadObserver.h>
#include <WebCore/ResourceLoadStatistics.h>
@@ -469,6 +470,11 @@
m_connection->send(Messages::NetworkProcessConnection::SetOnLineState(isOnLine), 0);
}
+void NetworkConnectionToWebProcess::cookieAcceptPolicyChanged(HTTPCookieAcceptPolicy newPolicy)
+{
+ m_connection->send(Messages::NetworkProcessConnection::CookieAcceptPolicyChanged(newPolicy), 0);
+}
+
void NetworkConnectionToWebProcess::removeLoadIdentifier(ResourceLoadIdentifier identifier)
{
RELEASE_ASSERT(identifier);
@@ -599,14 +605,6 @@
#endif
}
-void NetworkConnectionToWebProcess::cookiesEnabled(CompletionHandler<void(bool)>&& completionHandler)
-{
- auto* networkStorageSession = storageSession();
- if (!networkStorageSession)
- return completionHandler(false);
- completionHandler(networkStorageSession->cookiesEnabled());
-}
-
void NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<FrameIdentifier> frameID, Optional<PageIdentifier> pageID, IncludeSecureCookies includeSecureCookies, ShouldAskITP shouldAskITP, CompletionHandler<void(String, bool)>&& completionHandler)
{
auto* networkStorageSession = storageSession();
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -61,6 +61,7 @@
enum class ShouldAskITP : bool;
struct SameSiteInfo;
+enum class HTTPCookieAcceptPolicy : uint8_t;
enum class IncludeSecureCookies : bool;
}
@@ -167,6 +168,8 @@
NetworkSchemeRegistry& schemeRegistry() { return m_schemeRegistry.get(); }
+ void cookieAcceptPolicyChanged(WebCore::HTTPCookieAcceptPolicy);
+
private:
NetworkConnectionToWebProcess(NetworkProcess&, WebCore::ProcessIdentifier, PAL::SessionID, IPC::Connection::Identifier);
@@ -200,7 +203,6 @@
void cookiesForDOM(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, WebCore::FrameIdentifier, WebCore::PageIdentifier, WebCore::IncludeSecureCookies, WebCore::ShouldAskITP, CompletionHandler<void(String cookieString, bool secureCookiesAccessed)>&&);
void setCookiesFromDOM(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, WebCore::FrameIdentifier, WebCore::PageIdentifier, WebCore::ShouldAskITP, const String&);
- void cookiesEnabled(CompletionHandler<void(bool)>&&);
void cookieRequestHeaderFieldValue(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, Optional<WebCore::FrameIdentifier>, Optional<WebCore::PageIdentifier>, WebCore::IncludeSecureCookies, WebCore::ShouldAskITP, CompletionHandler<void(String cookieString, bool secureCookiesAccessed)>&&);
void getRawCookies(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, Optional<WebCore::FrameIdentifier>, Optional<WebCore::PageIdentifier>, WebCore::ShouldAskITP, CompletionHandler<void(Vector<WebCore::Cookie>&&)>&&);
void deleteCookie(const URL&, const String& cookieName);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2020-01-22 19:31:15 UTC (rev 254931)
@@ -36,7 +36,6 @@
CookiesForDOM(URL firstParty, struct WebCore::SameSiteInfo sameSiteInfo, URL url, WebCore::FrameIdentifier frameID, WebCore::PageIdentifier pageID, enum:bool WebCore::IncludeSecureCookies includeSecureCookies, enum:bool WebCore::ShouldAskITP shouldAskITP) -> (String cookieString, bool didAccessSecureCookies) Synchronous
SetCookiesFromDOM(URL firstParty, struct WebCore::SameSiteInfo sameSiteInfo, URL url, WebCore::FrameIdentifier frameID, WebCore::PageIdentifier pageID, enum:bool WebCore::ShouldAskITP shouldAskITP, String cookieString)
- CookiesEnabled() -> (bool enabled) Synchronous
CookieRequestHeaderFieldValue(URL firstParty, struct WebCore::SameSiteInfo sameSiteInfo, URL url, Optional<WebCore::FrameIdentifier> frameID, Optional<WebCore::PageIdentifier> pageID, enum:bool WebCore::IncludeSecureCookies includeSecureCookies, enum:bool WebCore::ShouldAskITP shouldAskITP) -> (String cookieString, bool didAccessSecureCookies) Synchronous
GetRawCookies(URL firstParty, struct WebCore::SameSiteInfo sameSiteInfo, URL url, Optional<WebCore::FrameIdentifier> frameID, Optional<WebCore::PageIdentifier> pageID, enum:bool WebCore::ShouldAskITP shouldAskITP) -> (Vector<WebCore::Cookie> cookies) Synchronous
DeleteCookie(URL url, String cookieName)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -70,6 +70,7 @@
#include <WebCore/DNS.h>
#include <WebCore/DeprecatedGlobalSettings.h>
#include <WebCore/DiagnosticLoggingClient.h>
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/LegacySchemeRegistry.h>
#include <WebCore/LogInitialization.h>
#include <WebCore/MIMETypeRegistry.h>
@@ -382,11 +383,11 @@
supplement->initializeConnection(connection);
}
-void NetworkProcess::createNetworkConnectionToWebProcess(ProcessIdentifier identifier, PAL::SessionID sessionID, CompletionHandler<void(Optional<IPC::Attachment>&&)>&& completionHandler)
+void NetworkProcess::createNetworkConnectionToWebProcess(ProcessIdentifier identifier, PAL::SessionID sessionID, CompletionHandler<void(Optional<IPC::Attachment>&&, HTTPCookieAcceptPolicy)>&& completionHandler)
{
auto ipcConnection = createIPCConnectionPair();
if (!ipcConnection) {
- completionHandler({ });
+ completionHandler({ }, HTTPCookieAcceptPolicy::Never);
return;
}
@@ -396,7 +397,8 @@
ASSERT(!m_webProcessConnections.contains(identifier));
m_webProcessConnections.add(identifier, WTFMove(newConnection));
- completionHandler(WTFMove(ipcConnection->second));
+ auto* storage = storageSession(sessionID);
+ completionHandler(WTFMove(ipcConnection->second), storage ? storage->cookieAcceptPolicy() : HTTPCookieAcceptPolicy::Never);
connection.setOnLineState(NetworkStateNotifier::singleton().onLine());
@@ -521,6 +523,12 @@
#endif
}
+void NetworkProcess::cookieAcceptPolicyChanged(HTTPCookieAcceptPolicy newPolicy)
+{
+ for (auto& connection : m_webProcessConnections.values())
+ connection->cookieAcceptPolicyChanged(newPolicy);
+}
+
WebCore::NetworkStorageSession* NetworkProcess::storageSession(const PAL::SessionID& sessionID) const
{
if (sessionID == PAL::SessionID::defaultSessionID())
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -81,6 +81,7 @@
class NetworkStorageSession;
class ResourceError;
class SWServer;
+enum class HTTPCookieAcceptPolicy : uint8_t;
enum class IncludeHttpOnlyCookies : bool;
enum class StoredCredentialsPolicy : uint8_t;
enum class StorageAccessPromptWasShown : bool;
@@ -341,6 +342,8 @@
void resetServiceWorkerFetchTimeoutForTesting(CompletionHandler<void()>&&);
Seconds serviceWorkerFetchTimeout() const { return m_serviceWorkerFetchTimeout; }
+ void cookieAcceptPolicyChanged(WebCore::HTTPCookieAcceptPolicy);
+
private:
void platformInitializeNetworkProcess(const NetworkProcessCreationParameters&);
std::unique_ptr<WebCore::NetworkStorageSession> platformCreateDefaultStorageSession() const;
@@ -383,7 +386,7 @@
// Message Handlers
void didReceiveSyncNetworkProcessMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&);
void initializeNetworkProcess(NetworkProcessCreationParameters&&);
- void createNetworkConnectionToWebProcess(WebCore::ProcessIdentifier, PAL::SessionID, CompletionHandler<void(Optional<IPC::Attachment>&&)>&&);
+ void createNetworkConnectionToWebProcess(WebCore::ProcessIdentifier, PAL::SessionID, CompletionHandler<void(Optional<IPC::Attachment>&&, WebCore::HTTPCookieAcceptPolicy)>&&);
void fetchWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, OptionSet<WebsiteDataFetchOption>, uint64_t callbackID);
void deleteWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, WallTime modifiedSince, uint64_t callbackID);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2020-01-22 19:31:15 UTC (rev 254931)
@@ -25,7 +25,7 @@
InitializeNetworkProcess(struct WebKit::NetworkProcessCreationParameters processCreationParameters)
# Creates a connection for communication with a WebProcess
- CreateNetworkConnectionToWebProcess(WebCore::ProcessIdentifier processIdentifier, PAL::SessionID sessionID) -> (Optional<IPC::Attachment> connectionIdentifier) Async
+ CreateNetworkConnectionToWebProcess(WebCore::ProcessIdentifier processIdentifier, PAL::SessionID sessionID) -> (Optional<IPC::Attachment> connectionIdentifier, enum:uint8_t WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy) Async
#if USE(SOUP)
SetIgnoreTLSErrors(bool ignoreTLSErrors)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (254930 => 254931)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -34,7 +34,7 @@
#include <wtf/text/WTFString.h>
#if USE(SOUP)
-#include "HTTPCookieAcceptPolicy.h"
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/SoupNetworkProxySettings.h>
#endif
@@ -76,7 +76,7 @@
WebsiteDataStoreParameters defaultDataStoreParameters;
#if USE(SOUP)
- HTTPCookieAcceptPolicy cookieAcceptPolicy { HTTPCookieAcceptPolicy::AlwaysAccept };
+ WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::AlwaysAccept };
bool ignoreTLSErrors { false };
Vector<String> languages;
WebCore::SoupNetworkProxySettings proxySettings;
Deleted: trunk/Source/WebKit/Shared/HTTPCookieAcceptPolicy.h (254930 => 254931)
--- trunk/Source/WebKit/Shared/HTTPCookieAcceptPolicy.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/Shared/HTTPCookieAcceptPolicy.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-namespace WebKit {
-
-enum class HTTPCookieAcceptPolicy : uint8_t {
- AlwaysAccept = 0,
- Never = 1,
- _OnlyFromMainDocumentDomain_ = 2,
- ExclusivelyFromMainDocumentDomain = 3,
-};
-
-} // namespace WebKit
-
-namespace WTF {
-
-template<> struct EnumTraits<WebKit::HTTPCookieAcceptPolicy> {
- using values = EnumValues<
- WebKit::HTTPCookieAcceptPolicy,
- WebKit::HTTPCookieAcceptPolicy::AlwaysAccept,
- WebKit::HTTPCookieAcceptPolicy::Never,
- WebKit::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain,
- WebKit::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain
- >;
-};
-
-}
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (254930 => 254931)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -47,7 +47,7 @@
#endif
#if USE(SOUP)
-#include "HTTPCookieAcceptPolicy.h"
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/SoupNetworkProxySettings.h>
#endif
Modified: trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -31,6 +31,7 @@
#include "WebsiteDataStore.h"
#include <WebCore/Cookie.h>
#include <WebCore/CookieStorage.h>
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/NetworkStorageSession.h>
using namespace WebKit;
@@ -133,7 +134,7 @@
RunLoop::main().dispatch(WTFMove(completionHandler));
}
-void HTTPCookieStore::setHTTPCookieAcceptPolicy(WebKit::HTTPCookieAcceptPolicy policy, CompletionHandler<void()>&& completionHandler)
+void HTTPCookieStore::setHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy policy, CompletionHandler<void()>&& completionHandler)
{
auto* pool = m_owningDataStore->processPoolForCookieStorageOperations();
if (!pool) {
@@ -279,7 +280,7 @@
void HTTPCookieStore::startObservingChangesToDefaultUIProcessCookieStore(Function<void()>&&) { }
void HTTPCookieStore::stopObservingChangesToDefaultUIProcessCookieStore() { }
void HTTPCookieStore::deleteCookiesInDefaultUIProcessCookieStore() { }
-void HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore(WebKit::HTTPCookieAcceptPolicy) { }
+void HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore(WebCore::HTTPCookieAcceptPolicy) { }
#endif
} // namespace API
Modified: trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.h (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -26,7 +26,6 @@
#pragma once
#include "APIObject.h"
-#include "HTTPCookieAcceptPolicy.h"
#include <WebCore/Cookie.h>
#include <wtf/CompletionHandler.h>
#include <wtf/Forward.h>
@@ -37,12 +36,12 @@
#if PLATFORM(COCOA)
class CookieStorageObserver;
#endif
+enum class HTTPCookieAcceptPolicy : uint8_t;
}
namespace WebKit {
class WebCookieManagerProxy;
class WebsiteDataStore;
-enum class HTTPCookieAcceptPolicy : uint8_t;
}
namespace API {
@@ -63,7 +62,7 @@
void deleteCookie(const WebCore::Cookie&, CompletionHandler<void()>&&);
void deleteAllCookies(CompletionHandler<void()>&&);
- void setHTTPCookieAcceptPolicy(WebKit::HTTPCookieAcceptPolicy, CompletionHandler<void()>&&);
+ void setHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy, CompletionHandler<void()>&&);
class Observer {
public:
@@ -90,7 +89,7 @@
void startObservingChangesToDefaultUIProcessCookieStore(Function<void()>&&);
void stopObservingChangesToDefaultUIProcessCookieStore();
void deleteCookiesInDefaultUIProcessCookieStore();
- void setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore(WebKit::HTTPCookieAcceptPolicy);
+ void setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore(WebCore::HTTPCookieAcceptPolicy);
// FIXME: This is a reference cycle.
Ref<WebKit::WebsiteDataStore> m_owningDataStore;
Modified: trunk/Source/WebKit/UIProcess/API/C/WKAPICast.h (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/API/C/WKAPICast.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/API/C/WKAPICast.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -28,7 +28,6 @@
#define WKAPICast_h
#include "CacheModel.h"
-#include "HTTPCookieAcceptPolicy.h"
#include "InjectedBundleHitTestResultMediaType.h"
#include "PluginModuleInfo.h"
#include "ProcessTerminationReason.h"
@@ -46,6 +45,7 @@
#include "WKSharedAPICast.h"
#include <WebCore/Credential.h>
#include <WebCore/FrameLoaderTypes.h>
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/PluginData.h>
#include <WebCore/ProtectionSpace.h>
#include <WebCore/Settings.h>
@@ -369,33 +369,33 @@
return AllResourceCaches;
}
-inline HTTPCookieAcceptPolicy toHTTPCookieAcceptPolicy(WKHTTPCookieAcceptPolicy policy)
+inline WebCore::HTTPCookieAcceptPolicy toHTTPCookieAcceptPolicy(WKHTTPCookieAcceptPolicy policy)
{
switch (policy) {
case kWKHTTPCookieAcceptPolicyAlways:
- return HTTPCookieAcceptPolicy::AlwaysAccept;
+ return WebCore::HTTPCookieAcceptPolicy::AlwaysAccept;
case kWKHTTPCookieAcceptPolicyNever:
- return HTTPCookieAcceptPolicy::Never;
+ return WebCore::HTTPCookieAcceptPolicy::Never;
case kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
- return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
+ return WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
case kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain:
- return HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
+ return WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
}
ASSERT_NOT_REACHED();
- return HTTPCookieAcceptPolicy::AlwaysAccept;
+ return WebCore::HTTPCookieAcceptPolicy::AlwaysAccept;
}
-inline WKHTTPCookieAcceptPolicy toAPI(HTTPCookieAcceptPolicy policy)
+inline WKHTTPCookieAcceptPolicy toAPI(WebCore::HTTPCookieAcceptPolicy policy)
{
switch (policy) {
- case HTTPCookieAcceptPolicy::AlwaysAccept:
+ case WebCore::HTTPCookieAcceptPolicy::AlwaysAccept:
return kWKHTTPCookieAcceptPolicyAlways;
- case HTTPCookieAcceptPolicy::Never:
+ case WebCore::HTTPCookieAcceptPolicy::Never:
return kWKHTTPCookieAcceptPolicyNever;
- case HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain:
+ case WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain:
return kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain;
- case HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain:
+ case WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain:
return kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain;
}
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm 2020-01-22 19:31:15 UTC (rev 254931)
@@ -28,6 +28,7 @@
#include <WebCore/Cookie.h>
#include <WebCore/CookieStorageObserver.h>
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <pal/spi/cf/CFNetworkSPI.h>
namespace API {
@@ -75,16 +76,16 @@
[[NSHTTPCookieStorage sharedHTTPCookieStorage] removeCookiesSinceDate:[NSDate distantPast]];
}
-static NSHTTPCookieAcceptPolicy toNSHTTPCookieAcceptPolicy(WebKit::HTTPCookieAcceptPolicy policy)
+static NSHTTPCookieAcceptPolicy toNSHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy policy)
{
switch (policy) {
- case WebKit::HTTPCookieAcceptPolicy::AlwaysAccept:
+ case WebCore::HTTPCookieAcceptPolicy::AlwaysAccept:
return NSHTTPCookieAcceptPolicyAlways;
- case WebKit::HTTPCookieAcceptPolicy::Never:
+ case WebCore::HTTPCookieAcceptPolicy::Never:
return NSHTTPCookieAcceptPolicyNever;
- case WebKit::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain:
+ case WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain:
return NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain;
- case WebKit::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain:
+ case WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain:
return (NSHTTPCookieAcceptPolicy)NSHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain;
}
ASSERT_NOT_REACHED();
@@ -91,7 +92,7 @@
return NSHTTPCookieAcceptPolicyAlways;
}
-void HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore(WebKit::HTTPCookieAcceptPolicy policy)
+void HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore(WebCore::HTTPCookieAcceptPolicy policy)
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:toNSHTTPCookieAcceptPolicy(policy)];
}
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStore.mm (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStore.mm 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStore.mm 2020-01-22 19:31:15 UTC (rev 254931)
@@ -26,8 +26,8 @@
#import "config.h"
#import "WKHTTPCookieStoreInternal.h"
-#import "HTTPCookieAcceptPolicy.h"
#import <WebCore/Cookie.h>
+#import <WebCore/HTTPCookieAcceptPolicy.h>
#import <pal/spi/cf/CFNetworkSPI.h>
#import <wtf/HashMap.h>
#import <wtf/RetainPtr.h>
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2020-01-22 19:31:15 UTC (rev 254931)
@@ -48,6 +48,7 @@
#import "_WKDownloadInternal.h"
#import "_WKProcessPoolConfigurationInternal.h"
#import <WebCore/CertificateInfo.h>
+#import <WebCore/HTTPCookieAcceptPolicyCocoa.h>
#import <WebCore/PluginData.h>
#import <WebCore/RegistrableDomain.h>
#import <pal/spi/cf/CFNetworkSPI.h>
@@ -200,26 +201,9 @@
{
}
-static WebKit::HTTPCookieAcceptPolicy toHTTPCookieAcceptPolicy(NSHTTPCookieAcceptPolicy policy)
-{
- switch (static_cast<NSUInteger>(policy)) {
- case NSHTTPCookieAcceptPolicyAlways:
- return WebKit::HTTPCookieAcceptPolicy::AlwaysAccept;
- case NSHTTPCookieAcceptPolicyNever:
- return WebKit::HTTPCookieAcceptPolicy::Never;
- case NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
- return WebKit::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
- case NSHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain:
- return WebKit::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain;
- }
-
- ASSERT_NOT_REACHED();
- return WebKit::HTTPCookieAcceptPolicy::AlwaysAccept;
-}
-
- (void)_setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)policy
{
- _processPool->supplement<WebKit::WebCookieManagerProxy>()->setHTTPCookieAcceptPolicy(PAL::SessionID::defaultSessionID(), toHTTPCookieAcceptPolicy(policy), []() { });
+ _processPool->supplement<WebKit::WebCookieManagerProxy>()->setHTTPCookieAcceptPolicy(PAL::SessionID::defaultSessionID(), WebCore::toHTTPCookieAcceptPolicy(policy), []() { });
}
- (id)_objectForBundleParameter:(NSString *)parameter
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -28,6 +28,7 @@
#include "WebKitWebsiteDataManagerPrivate.h"
#include "WebKitWebsiteDataPrivate.h"
#include "WebsiteDataRecord.h"
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <glib/gi18n-lib.h>
#include <pal/SessionID.h>
#include <wtf/glib/GRefPtr.h>
@@ -87,14 +88,14 @@
}
}
-static inline WebKitCookieAcceptPolicy toWebKitCookieAcceptPolicy(HTTPCookieAcceptPolicy httpPolicy)
+static inline WebKitCookieAcceptPolicy toWebKitCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy httpPolicy)
{
switch (httpPolicy) {
- case HTTPCookieAcceptPolicy::AlwaysAccept:
+ case WebCore::HTTPCookieAcceptPolicy::AlwaysAccept:
return WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS;
- case HTTPCookieAcceptPolicy::Never:
+ case WebCore::HTTPCookieAcceptPolicy::Never:
return WEBKIT_COOKIE_POLICY_ACCEPT_NEVER;
- case HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain:
+ case WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain:
return WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY;
default:
ASSERT_NOT_REACHED();
@@ -102,18 +103,18 @@
}
}
-static inline HTTPCookieAcceptPolicy toHTTPCookieAcceptPolicy(WebKitCookieAcceptPolicy kitPolicy)
+static inline WebCore::HTTPCookieAcceptPolicy toHTTPCookieAcceptPolicy(WebKitCookieAcceptPolicy kitPolicy)
{
switch (kitPolicy) {
case WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS:
- return HTTPCookieAcceptPolicy::AlwaysAccept;
+ return WebCore::HTTPCookieAcceptPolicy::AlwaysAccept;
case WEBKIT_COOKIE_POLICY_ACCEPT_NEVER:
- return HTTPCookieAcceptPolicy::Never;
+ return WebCore::HTTPCookieAcceptPolicy::Never;
case WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY:
- return HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
+ return WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain;
default:
ASSERT_NOT_REACHED();
- return HTTPCookieAcceptPolicy::AlwaysAccept;
+ return WebCore::HTTPCookieAcceptPolicy::AlwaysAccept;
}
}
@@ -218,7 +219,7 @@
return;
}
- processPools[0]->supplement<WebCookieManagerProxy>()->getHTTPCookieAcceptPolicy(manager->priv->sessionID(), [task = WTFMove(task)](HTTPCookieAcceptPolicy policy) {
+ processPools[0]->supplement<WebCookieManagerProxy>()->getHTTPCookieAcceptPolicy(manager->priv->sessionID(), [task = WTFMove(task)](WebCore::HTTPCookieAcceptPolicy policy) {
g_task_return_int(task.get(), toWebKitCookieAcceptPolicy(policy));
});
}
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -147,7 +147,7 @@
void NetworkProcessProxy::openNetworkProcessConnection(uint64_t connectionRequestIdentifier, WebProcessProxy& webProcessProxy)
{
- connection()->sendWithAsyncReply(Messages::NetworkProcess::CreateNetworkConnectionToWebProcess { webProcessProxy.coreProcessIdentifier(), webProcessProxy.sessionID() }, [this, weakThis = makeWeakPtr(this), webProcessProxy = makeWeakPtr(webProcessProxy), connectionRequestIdentifier](auto&& connectionIdentifier) mutable {
+ connection()->sendWithAsyncReply(Messages::NetworkProcess::CreateNetworkConnectionToWebProcess { webProcessProxy.coreProcessIdentifier(), webProcessProxy.sessionID() }, [this, weakThis = makeWeakPtr(this), webProcessProxy = makeWeakPtr(webProcessProxy), connectionRequestIdentifier](auto&& connectionIdentifier, HTTPCookieAcceptPolicy cookieAcceptPolicy) mutable {
if (!weakThis)
return;
@@ -161,10 +161,10 @@
auto request = m_connectionRequests.take(connectionRequestIdentifier);
#if USE(UNIX_DOMAIN_SOCKETS) || OS(WINDOWS)
- request.reply(NetworkProcessConnectionInfo { WTFMove(*connectionIdentifier) });
+ request.reply(NetworkProcessConnectionInfo { WTFMove(*connectionIdentifier), cookieAcceptPolicy });
#elif OS(DARWIN)
MESSAGE_CHECK(MACH_PORT_VALID(connectionIdentifier->port()));
- request.reply(NetworkProcessConnectionInfo { IPC::Attachment { connectionIdentifier->port(), MACH_MSG_TYPE_MOVE_SEND }, connection()->getAuditToken() });
+ request.reply(NetworkProcessConnectionInfo { IPC::Attachment { connectionIdentifier->port(), MACH_MSG_TYPE_MOVE_SEND }, cookieAcceptPolicy, connection()->getAuditToken() });
#else
notImplemented();
#endif
Modified: trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -53,7 +53,7 @@
class WebProcessProxy;
typedef GenericCallback<API::Array*> ArrayCallback;
-typedef GenericCallback<HTTPCookieAcceptPolicy> HTTPCookieAcceptPolicyCallback;
+typedef GenericCallback<WebCore::HTTPCookieAcceptPolicy> HTTPCookieAcceptPolicyCallback;
typedef GenericCallback<const Vector<WebCore::Cookie>&> GetCookiesCallback;
class WebCookieManagerProxy : public API::ObjectImpl<API::Object::Type::CookieManager>, public WebContextSupplement, private IPC::MessageReceiver {
@@ -77,8 +77,8 @@
void getAllCookies(PAL::SessionID, CompletionHandler<void(Vector<WebCore::Cookie>&&)>&&);
void getCookies(PAL::SessionID, const URL&, CompletionHandler<void(Vector<WebCore::Cookie>&&)>&&);
- void setHTTPCookieAcceptPolicy(PAL::SessionID, HTTPCookieAcceptPolicy, CompletionHandler<void()>&&);
- void getHTTPCookieAcceptPolicy(PAL::SessionID, CompletionHandler<void(HTTPCookieAcceptPolicy)>&&);
+ void setHTTPCookieAcceptPolicy(PAL::SessionID, WebCore::HTTPCookieAcceptPolicy, CompletionHandler<void()>&&);
+ void getHTTPCookieAcceptPolicy(PAL::SessionID, CompletionHandler<void(WebCore::HTTPCookieAcceptPolicy)>&&);
void startObservingCookieChanges(PAL::SessionID);
void stopObservingCookieChanges(PAL::SessionID);
@@ -119,7 +119,7 @@
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
#if PLATFORM(COCOA)
- void persistHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy);
+ void persistHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy);
#endif
HashMap<PAL::SessionID, WTF::Function<void ()>> m_legacyCookieObservers;
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -294,7 +294,7 @@
void stopMemorySampler();
#if USE(SOUP)
- void setInitialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy) { m_initialHTTPCookieAcceptPolicy = policy; }
+ void setInitialHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy policy) { m_initialHTTPCookieAcceptPolicy = policy; }
void setNetworkProxySettings(const WebCore::SoupNetworkProxySettings&);
#endif
void setEnhancedAccessibility(bool);
@@ -677,7 +677,7 @@
WebContextSupplementMap m_supplements;
#if USE(SOUP)
- HTTPCookieAcceptPolicy m_initialHTTPCookieAcceptPolicy { HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain };
+ WebCore::HTTPCookieAcceptPolicy m_initialHTTPCookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain };
WebCore::SoupNetworkProxySettings m_networkProxySettings;
#endif
Modified: trunk/Source/WebKit/UIProcess/mac/WebCookieManagerProxyMac.mm (254930 => 254931)
--- trunk/Source/WebKit/UIProcess/mac/WebCookieManagerProxyMac.mm 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/UIProcess/mac/WebCookieManagerProxyMac.mm 2020-01-22 19:31:15 UTC (rev 254931)
@@ -31,7 +31,7 @@
namespace WebKit {
-void WebCookieManagerProxy::persistHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy)
+void WebCookieManagerProxy::persistHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy policy)
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (254930 => 254931)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2020-01-22 19:31:15 UTC (rev 254931)
@@ -882,7 +882,6 @@
37DFA7001810BB92001F4A9F /* WKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 37DFA6FF1810BB92001F4A9F /* WKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; };
37E25D6E18FDE5D6005D3A00 /* APIFormClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 37E25D6D18FDE5D6005D3A00 /* APIFormClient.h */; };
37F623B812A57B6200E3FDF6 /* WKFindOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 37F623B712A57B6200E3FDF6 /* WKFindOptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 37F90DE31376560E0051CF68 /* HTTPCookieAcceptPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = F638954F133BEF38008941D5 /* HTTPCookieAcceptPolicy.h */; };
37FC19471850FBF2008CFA47 /* WKBrowsingContextLoadDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 37FC19461850FBF2008CFA47 /* WKBrowsingContextLoadDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
37FC194B18510D6A008CFA47 /* WKNSURLAuthenticationChallenge.h in Headers */ = {isa = PBXBuildFile; fileRef = 37FC194918510D6A008CFA47 /* WKNSURLAuthenticationChallenge.h */; };
3F418EF91887BD97002795FD /* VideoFullscreenManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F418EF51887BD97002795FD /* VideoFullscreenManagerMessageReceiver.cpp */; };
@@ -2119,9 +2118,9 @@
07B93FF523AF0CB80036F8EA /* RemoteMediaPlayerConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerConfiguration.h; sourceTree = "<group>"; };
07BAF35623A2CC170044257E /* RemoteMediaPlayerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerProxy.h; sourceTree = "<group>"; };
07BAF35723A2CC190044257E /* RemoteMediaPlayerProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteMediaPlayerProxy.cpp; sourceTree = "<group>"; };
- 07E19EF823D401F00094FFB4 /* MediaPlayerPrivateRemoteMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaPlayerPrivateRemoteMessageReceiver.cpp; path = MediaPlayerPrivateRemoteMessageReceiver.cpp; sourceTree = "<group>"; };
- 07E19EF923D401F00094FFB4 /* MediaPlayerPrivateRemoteMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlayerPrivateRemoteMessages.h; path = MediaPlayerPrivateRemoteMessages.h; sourceTree = "<group>"; };
- 07E19EFA23D401F00094FFB4 /* MediaPlayerPrivateRemoteMessagesReplies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlayerPrivateRemoteMessagesReplies.h; path = MediaPlayerPrivateRemoteMessagesReplies.h; sourceTree = "<group>"; };
+ 07E19EF823D401F00094FFB4 /* MediaPlayerPrivateRemoteMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaPlayerPrivateRemoteMessageReceiver.cpp; sourceTree = "<group>"; };
+ 07E19EF923D401F00094FFB4 /* MediaPlayerPrivateRemoteMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerPrivateRemoteMessages.h; sourceTree = "<group>"; };
+ 07E19EFA23D401F00094FFB4 /* MediaPlayerPrivateRemoteMessagesReplies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerPrivateRemoteMessagesReplies.h; sourceTree = "<group>"; };
0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
089C1667FE841158C02AAC07 /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
0E97D74C200E8FF300BF6643 /* SafeBrowsingSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SafeBrowsingSPI.h; sourceTree = "<group>"; };
@@ -5130,7 +5129,6 @@
F6113E26126CE19B0057D0A7 /* WKUserContentURLPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKUserContentURLPattern.cpp; sourceTree = "<group>"; };
F6113E27126CE19B0057D0A7 /* WKUserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKUserContentURLPattern.h; sourceTree = "<group>"; };
F634445512A885C8000612D8 /* APISecurityOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APISecurityOrigin.h; sourceTree = "<group>"; };
- F638954F133BEF38008941D5 /* HTTPCookieAcceptPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPCookieAcceptPolicy.h; sourceTree = "<group>"; };
F6A0C13F13281E6E0070430F /* ResourceCachesToClear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceCachesToClear.h; sourceTree = "<group>"; };
F6A90811133C1F3D0082C3F4 /* WebCookieManagerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCookieManagerMac.mm; sourceTree = "<group>"; };
F6D632BA133D181B00743D77 /* WebCookieManagerProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCookieManagerProxyMac.mm; sourceTree = "<group>"; };
@@ -5697,7 +5695,6 @@
1A14F8DF1D74C834006CBEC6 /* FrameInfoData.cpp */,
1A14F8E01D74C834006CBEC6 /* FrameInfoData.h */,
1AC75A1A1B3368270056745B /* HangDetectionDisabler.h */,
- F638954F133BEF38008941D5 /* HTTPCookieAcceptPolicy.h */,
BCCF6B2312C93E7A008F9C35 /* ImageOptions.h */,
1A92DC1212F8BAB90017AF65 /* LayerTreeContext.cpp */,
1A92DC1012F8BA460017AF65 /* LayerTreeContext.h */,
@@ -10218,7 +10215,6 @@
5772F206217DBD6A0056BF2C /* HidService.h in Headers */,
312CC9F2215B06F100DE40CA /* HighPerformanceGPUManager.h in Headers */,
839A2F321E2067450039057E /* HighPerformanceGraphicsUsageSampler.h in Headers */,
- 37F90DE31376560E0051CF68 /* HTTPCookieAcceptPolicy.h in Headers */,
51C0C9741DDD76000032CAD3 /* IconLoadingDelegate.h in Headers */,
51E351CB180F2CCC00E53BE9 /* IDBUtilities.h in Headers */,
BCCF6B2512C93E7A008F9C35 /* ImageOptions.h in Headers */,
Modified: trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp (254930 => 254931)
--- trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -56,6 +56,7 @@
#include "WebSocketStream.h"
#include "WebSocketStreamMessages.h"
#include <WebCore/CachedResource.h>
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/MemoryCache.h>
#include <WebCore/MessagePort.h>
#include <WebCore/SharedBuffer.h>
@@ -68,8 +69,9 @@
namespace WebKit {
using namespace WebCore;
-NetworkProcessConnection::NetworkProcessConnection(IPC::Connection::Identifier connectionIdentifier)
+NetworkProcessConnection::NetworkProcessConnection(IPC::Connection::Identifier connectionIdentifier, HTTPCookieAcceptPolicy cookieAcceptPolicy)
: m_connection(IPC::Connection::createClientConnection(connectionIdentifier, *this))
+ , m_cookieAcceptPolicy(cookieAcceptPolicy)
{
m_connection->open();
}
@@ -204,7 +206,7 @@
void NetworkProcessConnection::writeBlobsToTemporaryFiles(const Vector<String>& blobURLs, CompletionHandler<void(Vector<String>&& filePaths)>&& completionHandler)
{
- WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::WriteBlobsToTemporaryFiles(blobURLs), WTFMove(completionHandler));
+ connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::WriteBlobsToTemporaryFiles(blobURLs), WTFMove(completionHandler));
}
void NetworkProcessConnection::didFinishPingLoad(uint64_t pingLoadIdentifier, ResourceError&& error, ResourceResponse&& response)
@@ -222,6 +224,16 @@
WebProcess::singleton().webLoaderStrategy().setOnLineState(isOnLine);
}
+bool NetworkProcessConnection::cookiesEnabled() const
+{
+ return m_cookieAcceptPolicy != HTTPCookieAcceptPolicy::Never;
+}
+
+void NetworkProcessConnection::cookieAcceptPolicyChanged(HTTPCookieAcceptPolicy newPolicy)
+{
+ m_cookieAcceptPolicy = newPolicy;
+}
+
#if ENABLE(SHAREABLE_RESOURCE)
void NetworkProcessConnection::didCacheResource(const ResourceRequest& request, const ShareableResource::Handle& handle)
{
Modified: trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.h (254930 => 254931)
--- trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -43,6 +43,7 @@
class ResourceResponse;
struct MessagePortIdentifier;
struct MessageWithMessagePorts;
+enum class HTTPCookieAcceptPolicy : uint8_t;
}
namespace WebKit {
@@ -54,9 +55,9 @@
class NetworkProcessConnection : public RefCounted<NetworkProcessConnection>, IPC::Connection::Client {
public:
- static Ref<NetworkProcessConnection> create(IPC::Connection::Identifier connectionIdentifier)
+ static Ref<NetworkProcessConnection> create(IPC::Connection::Identifier connectionIdentifier, WebCore::HTTPCookieAcceptPolicy httpCookieAcceptPolicy)
{
- return adoptRef(*new NetworkProcessConnection(connectionIdentifier));
+ return adoptRef(*new NetworkProcessConnection(connectionIdentifier, httpCookieAcceptPolicy));
}
~NetworkProcessConnection();
@@ -80,8 +81,10 @@
Optional<audit_token_t> networkProcessAuditToken() const { return m_networkProcessAuditToken; }
#endif
+ bool cookiesEnabled() const;
+
private:
- NetworkProcessConnection(IPC::Connection::Identifier);
+ NetworkProcessConnection(IPC::Connection::Identifier, WebCore::HTTPCookieAcceptPolicy);
// IPC::Connection::Client
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
@@ -92,6 +95,7 @@
void didFinishPingLoad(uint64_t pingLoadIdentifier, WebCore::ResourceError&&, WebCore::ResourceResponse&&);
void didFinishPreconnection(uint64_t preconnectionIdentifier, WebCore::ResourceError&&);
void setOnLineState(bool isOnLine);
+ void cookieAcceptPolicyChanged(WebCore::HTTPCookieAcceptPolicy);
void checkProcessLocalPortForActivity(const WebCore::MessagePortIdentifier&, CompletionHandler<void(WebCore::MessagePortChannelProvider::HasActivity)>&&);
void messagesAvailableForPort(const WebCore::MessagePortIdentifier&);
@@ -114,6 +118,7 @@
#if ENABLE(SERVICE_WORKER)
RefPtr<WebSWClientConnection> m_swConnection;
#endif
+ WebCore::HTTPCookieAcceptPolicy m_cookieAcceptPolicy;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.messages.in (254930 => 254931)
--- trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.messages.in 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.messages.in 2020-01-22 19:31:15 UTC (rev 254931)
@@ -29,6 +29,7 @@
DidFinishPingLoad(uint64_t pingLoadIdentifier, WebCore::ResourceError error, WebCore::ResourceResponse response)
DidFinishPreconnection(uint64_t preconnectionIdentifier, WebCore::ResourceError error)
SetOnLineState(bool isOnLine);
+ CookieAcceptPolicyChanged(enum:uint8_t WebCore::HTTPCookieAcceptPolicy policy);
CheckProcessLocalPortForActivity(struct WebCore::MessagePortIdentifier port) -> (WebCore::MessagePortChannelProvider::HasActivity hasActivity) Async
MessagesAvailableForPort(struct WebCore::MessagePortIdentifier port)
Modified: trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnectionInfo.h (254930 => 254931)
--- trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnectionInfo.h 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnectionInfo.h 2020-01-22 19:31:15 UTC (rev 254931)
@@ -25,10 +25,13 @@
#pragma once
+#include <WebCore/HTTPCookieAcceptPolicy.h>
+
namespace WebKit {
struct NetworkProcessConnectionInfo {
IPC::Attachment connection;
+ WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy;
#if HAVE(AUDIT_TOKEN)
Optional<audit_token_t> auditToken;
#endif
@@ -61,6 +64,7 @@
void encode(IPC::Encoder& encoder) const
{
encoder << connection;
+ encoder << cookieAcceptPolicy;
#if HAVE(AUDIT_TOKEN)
encoder << auditToken;
#endif
@@ -70,6 +74,8 @@
{
if (!decoder.decode(info.connection))
return false;
+ if (!decoder.decodeEnum(info.cookieAcceptPolicy))
+ return false;
#if HAVE(AUDIT_TOKEN)
if (!decoder.decode(info.auditToken))
return false;
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp (254930 => 254931)
--- trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -129,12 +129,19 @@
WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::SetCookiesFromDOM(document.firstPartyForCookies(), sameSiteInfo(document), url, frameID, pageID, shouldAskITPInNetworkProcess, cookieString), 0);
}
-bool WebCookieJar::cookiesEnabled(const WebCore::Document& document) const
+bool WebCookieJar::cookiesEnabled(const Document& document) const
{
- bool result = false;
- if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().sendSync(Messages::NetworkConnectionToWebProcess::CookiesEnabled(), Messages::NetworkConnectionToWebProcess::CookiesEnabled::Reply(result), 0))
+ auto* webFrame = document.frame() ? WebFrame::fromCoreFrame(*document.frame()) : nullptr;
+ if (!webFrame || !webFrame->page())
return false;
- return result;
+
+#if ENABLE(RESOURCE_LOAD_STATISTICS)
+ ShouldAskITP dummy;
+ if (shouldBlockCookies(webFrame, document.firstPartyForCookies(), document.cookieURL(), dummy))
+ return false;
+#endif
+
+ return WebProcess::singleton().ensureNetworkProcessConnection().cookiesEnabled();
}
std::pair<String, WebCore::SecureCookiesAccessed> WebCookieJar::cookieRequestHeaderFieldValue(const URL& firstParty, const WebCore::SameSiteInfo& sameSiteInfo, const URL& url, Optional<FrameIdentifier> frameID, Optional<PageIdentifier> pageID, WebCore::IncludeSecureCookies includeSecureCookies) const
Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (254930 => 254931)
--- trunk/Source/WebKit/WebProcess/WebProcess.cpp 2020-01-22 19:29:49 UTC (rev 254930)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp 2020-01-22 19:31:15 UTC (rev 254931)
@@ -1191,7 +1191,7 @@
if (!IPC::Connection::identifierIsValid(connectionInfo.identifier()))
CRASH();
- m_networkProcessConnection = NetworkProcessConnection::create(connectionInfo.releaseIdentifier());
+ m_networkProcessConnection = NetworkProcessConnection::create(connectionInfo.releaseIdentifier(), connectionInfo.cookieAcceptPolicy);
#if HAVE(AUDIT_TOKEN)
m_networkProcessConnection->setNetworkProcessAuditToken(WTFMove(connectionInfo.auditToken));
#endif