Diff
Modified: trunk/Source/WebCore/ChangeLog (263312 => 263313)
--- trunk/Source/WebCore/ChangeLog 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebCore/ChangeLog 2020-06-20 03:50:10 UTC (rev 263313)
@@ -1,3 +1,20 @@
+2020-06-19 Chris Dumez <cdu...@apple.com>
+
+ [Cocoa] Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued
+ https://bugs.webkit.org/show_bug.cgi?id=213414
+ <rdar://problem/64548684>
+
+ Reviewed by Per Arne Vollan.
+
+ setHasConsumedSandboxExtensions() can now get called several times, every time a WebPage is created.
+ Once a sandbox extension has been consumed, there is no going back so return early if the state is
+ already "Consumed".
+
+ * platform/cocoa/NetworkExtensionContentFilter.mm:
+ (WebCore::NetworkExtensionContentFilter::setHasConsumedSandboxExtensions):
+ * platform/cocoa/ParentalControlsContentFilter.mm:
+ (WebCore::ParentalControlsContentFilter::setHasConsumedSandboxExtension):
+
2020-06-19 Zalan Bujtas <za...@apple.com>
[AutoSizing] Resolve viewport units against the preferred content size
Modified: trunk/Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm (263312 => 263313)
--- trunk/Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm 2020-06-20 03:50:10 UTC (rev 263313)
@@ -228,6 +228,9 @@
void NetworkExtensionContentFilter::setHasConsumedSandboxExtensions(bool hasConsumedSandboxExtensions)
{
+ if (m_sandboxExtensionsState == SandboxExtensionsState::Consumed)
+ return;
+
m_sandboxExtensionsState = (hasConsumedSandboxExtensions ? SandboxExtensionsState::Consumed : SandboxExtensionsState::NotConsumed);
}
Modified: trunk/Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm (263312 => 263313)
--- trunk/Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm 2020-06-20 03:50:10 UTC (rev 263313)
@@ -150,6 +150,9 @@
#if PLATFORM(IOS)
void ParentalControlsContentFilter::setHasConsumedSandboxExtension(bool hasConsumedSandboxExtension)
{
+ if (m_sandboxExtensionState == SandboxExtensionState::Consumed)
+ return;
+
m_sandboxExtensionState = (hasConsumedSandboxExtension ? SandboxExtensionState::Consumed : SandboxExtensionState::NotConsumed);
}
#endif
Modified: trunk/Source/WebKit/ChangeLog (263312 => 263313)
--- trunk/Source/WebKit/ChangeLog 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/ChangeLog 2020-06-20 03:50:10 UTC (rev 263313)
@@ -1,3 +1,46 @@
+2020-06-19 Chris Dumez <cdu...@apple.com>
+
+ [Cocoa] Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued
+ https://bugs.webkit.org/show_bug.cgi?id=213414
+ <rdar://problem/64548684>
+
+ Reviewed by Per Arne Vollan.
+
+ Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued.
+ This is a Safari launch time optimization since the checks needed to decide whether or not to issue
+ the extensions are expensive and there is no reason to issue them as soon as the process launches
+ (especially in the case of a prewarmed process).
+
+ * Shared/Cocoa/LoadParametersCocoa.mm:
+ (WebKit::LoadParameters::platformEncode const):
+ (WebKit::LoadParameters::platformDecode):
+ * Shared/LoadParameters.h:
+ * Shared/WebProcessCreationParameters.cpp:
+ (WebKit::WebProcessCreationParameters::encode const):
+ (WebKit::WebProcessCreationParameters::decode):
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/Cocoa/WebPageProxyCocoa.mm:
+ (WebKit::WebPageProxy::addPlatformLoadParameters):
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::platformInitializeWebProcess):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::addPlatformLoadParameters):
+ (WebKit::WebPageProxy::loadRequestWithNavigationShared):
+ (WebKit::WebPageProxy::loadFile):
+ (WebKit::WebPageProxy::loadDataWithNavigationShared):
+ (WebKit::WebPageProxy::loadAlternateHTML):
+ (WebKit::WebPageProxy::loadWebArchiveData):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebProcessProxy.h:
+ (WebKit::WebProcessProxy::hasNetworkExtensionSandboxAccess const):
+ (WebKit::WebProcessProxy::markHasNetworkExtensionSandboxAccess):
+ (WebKit::WebProcessProxy::hasManagedSessionSandboxAccess const):
+ (WebKit::WebProcessProxy::markHasManagedSessionSandboxAccess):
+ * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
+ (WebKit::WebPage::platformDidReceiveLoadParameters):
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::platformInitializeWebProcess):
+
2020-06-19 Ryan Haddad <ryanhad...@apple.com>
Unreviewed, reverting r263287.
Modified: trunk/Source/WebKit/Shared/Cocoa/LoadParametersCocoa.mm (263312 => 263313)
--- trunk/Source/WebKit/Shared/Cocoa/LoadParametersCocoa.mm 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/Shared/Cocoa/LoadParametersCocoa.mm 2020-06-20 03:50:10 UTC (rev 263313)
@@ -36,13 +36,46 @@
void LoadParameters::platformEncode(IPC::Encoder& encoder) const
{
IPC::encode(encoder, dataDetectionContext.get());
+
+ encoder << neHelperExtensionHandle;
+ encoder << neSessionManagerExtensionHandle;
+#if PLATFORM(IOS)
+ encoder << contentFilterExtensionHandle;
+ encoder << frontboardServiceExtensionHandle;
+#endif
}
-bool LoadParameters::platformDecode(IPC::Decoder& decoder, LoadParameters& data)
+bool LoadParameters::platformDecode(IPC::Decoder& decoder, LoadParameters& parameters)
{
- if (!IPC::decode(decoder, data.dataDetectionContext))
+ if (!IPC::decode(decoder, parameters.dataDetectionContext))
return false;
+ Optional<Optional<SandboxExtension::Handle>> neHelperExtensionHandle;
+ decoder >> neHelperExtensionHandle;
+ if (!neHelperExtensionHandle)
+ return false;
+ parameters.neHelperExtensionHandle = WTFMove(*neHelperExtensionHandle);
+
+ Optional<Optional<SandboxExtension::Handle>> neSessionManagerExtensionHandle;
+ decoder >> neSessionManagerExtensionHandle;
+ if (!neSessionManagerExtensionHandle)
+ return false;
+ parameters.neSessionManagerExtensionHandle = WTFMove(*neSessionManagerExtensionHandle);
+
+#if PLATFORM(IOS)
+ Optional<Optional<SandboxExtension::Handle>> contentFilterExtensionHandle;
+ decoder >> contentFilterExtensionHandle;
+ if (!contentFilterExtensionHandle)
+ return false;
+ parameters.contentFilterExtensionHandle = WTFMove(*contentFilterExtensionHandle);
+
+ Optional<Optional<SandboxExtension::Handle>> frontboardServiceExtensionHandle;
+ decoder >> frontboardServiceExtensionHandle;
+ if (!frontboardServiceExtensionHandle)
+ return false;
+ parameters.frontboardServiceExtensionHandle = WTFMove(*frontboardServiceExtensionHandle);
+#endif
+
return true;
}
Modified: trunk/Source/WebKit/Shared/LoadParameters.h (263312 => 263313)
--- trunk/Source/WebKit/Shared/LoadParameters.h 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/Shared/LoadParameters.h 2020-06-20 03:50:10 UTC (rev 263313)
@@ -74,7 +74,13 @@
#if PLATFORM(COCOA)
RetainPtr<NSDictionary> dataDetectionContext;
+ Optional<SandboxExtension::Handle> neHelperExtensionHandle;
+ Optional<SandboxExtension::Handle> neSessionManagerExtensionHandle;
#endif
+#if PLATFORM(IOS)
+ Optional<SandboxExtension::Handle> contentFilterExtensionHandle;
+ Optional<SandboxExtension::Handle> frontboardServiceExtensionHandle;
+#endif
};
} // namespace WebKit
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (263312 => 263313)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2020-06-20 03:50:10 UTC (rev 263313)
@@ -157,8 +157,6 @@
#if PLATFORM(IOS)
encoder << compilerServiceExtensionHandle;
- encoder << contentFilterExtensionHandle;
- encoder << frontboardServiceExtensionHandle;
#endif
#if PLATFORM(IOS_FAMILY)
@@ -168,8 +166,6 @@
#endif
#if PLATFORM(COCOA)
- encoder << neHelperExtensionHandle;
- encoder << neSessionManagerExtensionHandle;
encoder << mapDBExtensionHandle;
encoder << systemHasBattery;
#endif
@@ -421,18 +417,6 @@
if (!compilerServiceExtensionHandle)
return false;
parameters.compilerServiceExtensionHandle = WTFMove(*compilerServiceExtensionHandle);
-
- Optional<Optional<SandboxExtension::Handle>> contentFilterExtensionHandle;
- decoder >> contentFilterExtensionHandle;
- if (!contentFilterExtensionHandle)
- return false;
- parameters.contentFilterExtensionHandle = WTFMove(*contentFilterExtensionHandle);
-
- Optional<Optional<SandboxExtension::Handle>> frontboardServiceExtensionHandle;
- decoder >> frontboardServiceExtensionHandle;
- if (!frontboardServiceExtensionHandle)
- return false;
- parameters.frontboardServiceExtensionHandle = WTFMove(*frontboardServiceExtensionHandle);
#endif
#if PLATFORM(IOS_FAMILY)
@@ -456,18 +440,6 @@
#endif
#if PLATFORM(COCOA)
- Optional<Optional<SandboxExtension::Handle>> neHelperExtensionHandle;
- decoder >> neHelperExtensionHandle;
- if (!neHelperExtensionHandle)
- return false;
- parameters.neHelperExtensionHandle = WTFMove(*neHelperExtensionHandle);
-
- Optional<Optional<SandboxExtension::Handle>> neSessionManagerExtensionHandle;
- decoder >> neSessionManagerExtensionHandle;
- if (!neSessionManagerExtensionHandle)
- return false;
- parameters.neSessionManagerExtensionHandle = WTFMove(*neSessionManagerExtensionHandle);
-
Optional<Optional<SandboxExtension::Handle>> mapDBExtensionHandle;
decoder >> mapDBExtensionHandle;
if (!mapDBExtensionHandle)
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (263312 => 263313)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-06-20 03:50:10 UTC (rev 263313)
@@ -201,8 +201,6 @@
#if PLATFORM(IOS)
Optional<SandboxExtension::Handle> compilerServiceExtensionHandle;
- Optional<SandboxExtension::Handle> contentFilterExtensionHandle;
- Optional<SandboxExtension::Handle> frontboardServiceExtensionHandle;
#endif
#if PLATFORM(IOS_FAMILY)
@@ -212,8 +210,6 @@
#endif
#if PLATFORM(COCOA)
- Optional<SandboxExtension::Handle> neHelperExtensionHandle;
- Optional<SandboxExtension::Handle> neSessionManagerExtensionHandle;
Optional<SandboxExtension::Handle> mapDBExtensionHandle;
bool systemHasBattery { false };
#endif
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (263312 => 263313)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2020-06-20 03:50:10 UTC (rev 263313)
@@ -47,7 +47,9 @@
#import <WebCore/SearchPopupMenuCocoa.h>
#import <WebCore/TextAlternativeWithRange.h>
#import <WebCore/ValidationBubble.h>
+#import <pal/spi/cocoa/NEFilterSourceSPI.h>
#import <wtf/BlockPtr.h>
+#import <wtf/SoftLinking.h>
#import <wtf/cf/TypeCastsCF.h>
#if ENABLE(MEDIA_USAGE)
@@ -54,6 +56,16 @@
#import "MediaUsageManagerCocoa.h"
#endif
+#if PLATFORM(IOS)
+#import <pal/spi/cocoa/WebFilterEvaluatorSPI.h>
+
+SOFT_LINK_PRIVATE_FRAMEWORK(WebContentAnalysis);
+SOFT_LINK_CLASS(WebContentAnalysis, WebFilterEvaluator);
+#endif
+
+SOFT_LINK_FRAMEWORK_OPTIONAL(NetworkExtension);
+SOFT_LINK_CLASS_OPTIONAL(NetworkExtension, NEFilterSource);
+
#define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, process().connection())
#define MESSAGE_CHECK_COMPLETION(assertion, completion) MESSAGE_CHECK_COMPLETION_BASE(assertion, process().connection(), completion)
@@ -129,9 +141,38 @@
}
#endif
-void WebPageProxy::addPlatformLoadParameters(LoadParameters& loadParameters)
+void WebPageProxy::addPlatformLoadParameters(WebProcessProxy& process, LoadParameters& loadParameters)
{
loadParameters.dataDetectionContext = m_uiClient->dataDetectionContext();
+
+ if (!process.hasNetworkExtensionSandboxAccess() && [getNEFilterSourceClass() filterRequired]) {
+ SandboxExtension::Handle helperHandle;
+ SandboxExtension::createHandleForMachLookup("com.apple.nehelper"_s, WTF::nullopt, helperHandle);
+ loadParameters.neHelperExtensionHandle = WTFMove(helperHandle);
+ SandboxExtension::Handle managerHandle;
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500
+ SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager"_s, WTF::nullopt, managerHandle);
+#else
+ SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager.content-filter"_s, WTF::nullopt, managerHandle);
+#endif
+ loadParameters.neSessionManagerExtensionHandle = WTFMove(managerHandle);
+
+ process.markHasNetworkExtensionSandboxAccess();
+ }
+
+#if PLATFORM(IOS)
+ if (!process.hasManagedSessionSandboxAccess() && [getWebFilterEvaluatorClass() isManagedSession]) {
+ SandboxExtension::Handle handle;
+ SandboxExtension::createHandleForMachLookup("com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"_s, WTF::nullopt, handle);
+ loadParameters.contentFilterExtensionHandle = WTFMove(handle);
+
+ SandboxExtension::Handle frontboardServiceExtensionHandle;
+ if (SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, WTF::nullopt, frontboardServiceExtensionHandle))
+ loadParameters.frontboardServiceExtensionHandle = WTFMove(frontboardServiceExtensionHandle);
+
+ process.markHasManagedSessionSandboxAccess();
+ }
+#endif
}
void WebPageProxy::createSandboxExtensionsIfNeeded(const Vector<String>& files, SandboxExtension::Handle& fileReadHandle, SandboxExtension::HandleArray& fileUploadHandles)
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (263312 => 263313)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-06-20 03:50:10 UTC (rev 263313)
@@ -79,8 +79,6 @@
#import <QuartzCore/CARemoteLayerServer.h>
#else
#import "UIKitSPI.h"
-#import <pal/ios/ManagedConfigurationSoftLink.h>
-#import <pal/spi/ios/ManagedConfigurationSPI.h>
#endif
#if PLATFORM(IOS_FAMILY)
@@ -87,19 +85,8 @@
#import <pal/spi/ios/MobileGestaltSPI.h>
#endif
-#if PLATFORM(IOS)
-#import <pal/spi/cocoa/WebFilterEvaluatorSPI.h>
-
-SOFT_LINK_PRIVATE_FRAMEWORK(WebContentAnalysis);
-SOFT_LINK_CLASS(WebContentAnalysis, WebFilterEvaluator);
-#endif
-
#if PLATFORM(COCOA)
#import <WebCore/SystemBattery.h>
-#import <pal/spi/cocoa/NEFilterSourceSPI.h>
-
-SOFT_LINK_FRAMEWORK_OPTIONAL(NetworkExtension);
-SOFT_LINK_CLASS_OPTIONAL(NetworkExtension, NEFilterSource);
#endif
NSString *WebServiceWorkerRegistrationDirectoryDefaultsKey = @"WebServiceWorkerRegistrationDirectory";
@@ -408,18 +395,6 @@
#endif
#if PLATFORM(COCOA)
- if ([getNEFilterSourceClass() filterRequired]) {
- SandboxExtension::Handle helperHandle;
- SandboxExtension::createHandleForMachLookup("com.apple.nehelper"_s, WTF::nullopt, helperHandle);
- parameters.neHelperExtensionHandle = WTFMove(helperHandle);
- SandboxExtension::Handle managerHandle;
-#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500
- SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager"_s, WTF::nullopt, managerHandle);
-#else
- SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager.content-filter"_s, WTF::nullopt, managerHandle);
-#endif
- parameters.neSessionManagerExtensionHandle = WTFMove(managerHandle);
- }
parameters.systemHasBattery = systemHasBattery();
SandboxExtension::Handle mapDBHandle;
@@ -426,19 +401,7 @@
if (SandboxExtension::createHandleForMachLookup("com.apple.lsd.mapdb"_s, WTF::nullopt, mapDBHandle, SandboxExtension::Flags::NoReport))
parameters.mapDBExtensionHandle = WTFMove(mapDBHandle);
#endif
-
-#if PLATFORM(IOS)
- if ([getWebFilterEvaluatorClass() isManagedSession]) {
- SandboxExtension::Handle handle;
- SandboxExtension::createHandleForMachLookup("com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"_s, WTF::nullopt, handle);
- parameters.contentFilterExtensionHandle = WTFMove(handle);
- SandboxExtension::Handle frontboardServiceExtensionHandle;
- if (SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, WTF::nullopt, frontboardServiceExtensionHandle))
- parameters.frontboardServiceExtensionHandle = WTFMove(frontboardServiceExtensionHandle);
- }
-#endif
-
#if PLATFORM(IOS_FAMILY)
parameters.currentUserInterfaceIdiomIsPad = currentUserInterfaceIdiomIsPad();
parameters.supportsPictureInPicture = supportsPictureInPicture();
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (263312 => 263313)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2020-06-20 03:50:10 UTC (rev 263313)
@@ -1266,7 +1266,7 @@
}
#if !PLATFORM(COCOA)
-void WebPageProxy::addPlatformLoadParameters(LoadParameters&)
+void WebPageProxy::addPlatformLoadParameters(WebProcessProxy&, LoadParameters&)
{
}
#endif
@@ -1323,7 +1323,7 @@
loadParameters.isNavigatingToAppBoundDomain = isNavigatingToAppBoundDomain;
maybeInitializeSandboxExtensionHandle(process, url, m_pageLoadState.resourceDirectoryURL(), loadParameters.sandboxExtensionHandle);
- addPlatformLoadParameters(loadParameters);
+ addPlatformLoadParameters(process, loadParameters);
preconnectTo(url);
@@ -1385,7 +1385,7 @@
loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get());
const bool checkAssumedReadAccessToResourceURL = false;
maybeInitializeSandboxExtensionHandle(m_process, fileURL, resourceDirectoryURL, loadParameters.sandboxExtensionHandle, checkAssumedReadAccessToResourceURL);
- addPlatformLoadParameters(loadParameters);
+ addPlatformLoadParameters(m_process, loadParameters);
#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
if (m_process->isLaunching())
@@ -1445,7 +1445,7 @@
loadParameters.websitePolicies = WTFMove(websitePolicies);
loadParameters.shouldOpenExternalURLsPolicy = shouldOpenExternalURLsPolicy;
loadParameters.isNavigatingToAppBoundDomain = isNavigatingToAppBoundDomain;
- addPlatformLoadParameters(loadParameters);
+ addPlatformLoadParameters(process, loadParameters);
process->assumeReadAccessToBaseURL(*this, baseURL);
process->send(Messages::WebPage::LoadData(loadParameters), webPageID);
@@ -1487,7 +1487,7 @@
loadParameters.unreachableURLString = unreachableURL.string();
loadParameters.provisionalLoadErrorURLString = m_failingProvisionalLoadURL;
loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get());
- addPlatformLoadParameters(loadParameters);
+ addPlatformLoadParameters(process(), loadParameters);
m_process->assumeReadAccessToBaseURL(*this, baseURL.string());
m_process->assumeReadAccessToBaseURL(*this, unreachableURL.string());
@@ -1516,7 +1516,7 @@
loadParameters.MIMEType = "application/x-webarchive"_s;
loadParameters.encodingName = "utf-16"_s;
loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get());
- addPlatformLoadParameters(loadParameters);
+ addPlatformLoadParameters(process(), loadParameters);
send(Messages::WebPage::LoadData(loadParameters));
m_process->startResponsivenessTimer();
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (263312 => 263313)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2020-06-20 03:50:10 UTC (rev 263313)
@@ -603,7 +603,7 @@
void closePage();
- void addPlatformLoadParameters(LoadParameters&);
+ void addPlatformLoadParameters(WebProcessProxy&, LoadParameters&);
RefPtr<API::Navigation> loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemes, API::Object* userData = nullptr);
RefPtr<API::Navigation> loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr);
RefPtr<API::Navigation> loadData(const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr, WebCore::ShouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldNotAllow);
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (263312 => 263313)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2020-06-20 03:50:10 UTC (rev 263313)
@@ -388,6 +388,15 @@
bool hasSleepDisabler() const;
+#if PLATFORM(COCOA)
+ bool hasNetworkExtensionSandboxAccess() const { return m_hasNetworkExtensionSandboxAccess; }
+ void markHasNetworkExtensionSandboxAccess() { m_hasNetworkExtensionSandboxAccess = true; }
+#endif
+#if PLATFORM(IOS)
+ bool hasManagedSessionSandboxAccess() const { return m_hasManagedSessionSandboxAccess; }
+ void markHasManagedSessionSandboxAccess() { m_hasManagedSessionSandboxAccess = true; }
+#endif
+
protected:
WebProcessProxy(WebProcessPool&, WebsiteDataStore*, IsPrewarmed);
@@ -578,6 +587,12 @@
#if ENABLE(ATTACHMENT_ELEMENT) && PLATFORM(IOS_FAMILY)
bool m_hasIssuedAttachmentElementRelatedSandboxExtensions { false };
#endif
+#if PLATFORM(COCOA)
+ bool m_hasNetworkExtensionSandboxAccess { false };
+#endif
+#if PLATFORM(IOS)
+ bool m_hasManagedSessionSandboxAccess { false };
+#endif
Optional<UseLazyStop> m_shouldStartResponsivenessTimerWhenLaunched;
#if PLATFORM(WATCHOS)
Modified: trunk/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm (263312 => 263313)
--- trunk/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm 2020-06-20 03:50:10 UTC (rev 263313)
@@ -45,6 +45,7 @@
#import <WebCore/HTMLOListElement.h>
#import <WebCore/HTMLUListElement.h>
#import <WebCore/HitTestResult.h>
+#import <WebCore/NetworkExtensionContentFilter.h>
#import <WebCore/NodeRenderStyle.h>
#import <WebCore/PaymentCoordinator.h>
#import <WebCore/PlatformMediaSessionManager.h>
@@ -51,13 +52,32 @@
#import <WebCore/Range.h>
#import <WebCore/RenderElement.h>
+#if PLATFORM(IOS)
+#import <WebCore/ParentalControlsContentFilter.h>
+#endif
+
#if PLATFORM(COCOA)
namespace WebKit {
-void WebPage::platformDidReceiveLoadParameters(const LoadParameters& loadParameters)
+void WebPage::platformDidReceiveLoadParameters(const LoadParameters& parameters)
{
- m_dataDetectionContext = loadParameters.dataDetectionContext;
+ m_dataDetectionContext = parameters.dataDetectionContext;
+
+ if (parameters.neHelperExtensionHandle)
+ SandboxExtension::consumePermanently(*parameters.neHelperExtensionHandle);
+ if (parameters.neSessionManagerExtensionHandle)
+ SandboxExtension::consumePermanently(*parameters.neSessionManagerExtensionHandle);
+ NetworkExtensionContentFilter::setHasConsumedSandboxExtensions(parameters.neHelperExtensionHandle.hasValue() && parameters.neSessionManagerExtensionHandle.hasValue());
+
+#if PLATFORM(IOS)
+ if (parameters.contentFilterExtensionHandle)
+ SandboxExtension::consumePermanently(*parameters.contentFilterExtensionHandle);
+ ParentalControlsContentFilter::setHasConsumedSandboxExtension(parameters.contentFilterExtensionHandle.hasValue());
+
+ if (parameters.frontboardServiceExtensionHandle)
+ SandboxExtension::consumePermanently(*parameters.frontboardServiceExtensionHandle);
+#endif
}
void WebPage::requestActiveNowPlayingSessionInfo(CallbackID callbackID)
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (263312 => 263313)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-06-20 03:17:41 UTC (rev 263312)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-06-20 03:50:10 UTC (rev 263313)
@@ -63,7 +63,6 @@
#import <WebCore/LogInitialization.h>
#import <WebCore/MemoryRelease.h>
#import <WebCore/NSScrollerImpDetails.h>
-#import <WebCore/NetworkExtensionContentFilter.h>
#import <WebCore/PerformanceLogging.h>
#import <WebCore/PictureInPictureSupport.h>
#import <WebCore/RuntimeApplicationChecks.h>
@@ -94,10 +93,6 @@
#import <_javascript_Core/RemoteInspector.h>
#endif
-#if PLATFORM(IOS)
-#import <WebCore/ParentalControlsContentFilter.h>
-#endif
-
#if PLATFORM(IOS_FAMILY)
#import "UIKitSPI.h"
#import <bmalloc/MemoryStatusSPI.h>
@@ -272,13 +267,6 @@
#if PLATFORM(IOS)
if (parameters.compilerServiceExtensionHandle)
SandboxExtension::consumePermanently(*parameters.compilerServiceExtensionHandle);
-
- if (parameters.contentFilterExtensionHandle)
- SandboxExtension::consumePermanently(*parameters.contentFilterExtensionHandle);
- ParentalControlsContentFilter::setHasConsumedSandboxExtension(parameters.contentFilterExtensionHandle.hasValue());
-
- if (parameters.frontboardServiceExtensionHandle)
- SandboxExtension::consumePermanently(*parameters.frontboardServiceExtensionHandle);
#endif
#if PLATFORM(IOS_FAMILY)
@@ -287,12 +275,6 @@
SandboxExtension::consumePermanently(parameters.dynamicIOKitExtensionHandles);
#endif
- if (parameters.neHelperExtensionHandle)
- SandboxExtension::consumePermanently(*parameters.neHelperExtensionHandle);
- if (parameters.neSessionManagerExtensionHandle)
- SandboxExtension::consumePermanently(*parameters.neSessionManagerExtensionHandle);
- NetworkExtensionContentFilter::setHasConsumedSandboxExtensions(parameters.neHelperExtensionHandle.hasValue() && parameters.neSessionManagerExtensionHandle.hasValue());
-
setSystemHasBattery(parameters.systemHasBattery);
#if PLATFORM(IOS_FAMILY)