Diff
Modified: trunk/Source/WebKit/ChangeLog (262565 => 262566)
--- trunk/Source/WebKit/ChangeLog 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/ChangeLog 2020-06-04 20:38:29 UTC (rev 262566)
@@ -1,3 +1,34 @@
+2020-06-04 Chris Dumez <cdu...@apple.com>
+
+ [iOS] Drop DependentProcessLink ProcessAssertion as it creates power leaks
+ https://bugs.webkit.org/show_bug.cgi?id=212768
+ <rdar://problem/62408828>
+
+ Reviewed by Alex Christensen.
+
+ Drop DependentProcessLink ProcessAssertion since it creates a process assertion cycle between
+ the UIProcess and the WebContent process and leads to power leaks.
+
+ * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
+ * Shared/WebProcessCreationParameters.cpp:
+ (WebKit::WebProcessCreationParameters::encode const):
+ (WebKit::WebProcessCreationParameters::decode):
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::platformInitializeWebProcess):
+ * UIProcess/ProcessAssertion.h:
+ * UIProcess/ProcessThrottler.cpp:
+ (WebKit::ProcessThrottler::assertionName const):
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::didSetAssertionType):
+ * UIProcess/ios/ProcessAssertionIOS.mm:
+ (WebKit::runningBoardNameForAssertionType):
+ (WebKit::flagsForAssertionType):
+ (WebKit::toBKSProcessAssertionReason):
+ * WebProcess/WebProcess.h:
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::platformInitializeWebProcess):
+
2020-06-04 Brent Fulgham <bfulg...@apple.com>
Revise sandbox to support network stack telemetry without sandbox violation reports
Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb (262565 => 262566)
--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb 2020-06-04 20:38:29 UTC (rev 262566)
@@ -951,7 +951,6 @@
"com.apple.nehelper"
"com.apple.nesessionmanager.content-filter"
"com.apple.osanalytics.osanalyticshelper"
- "com.apple.runningboard"
"com.apple.tccd"
"com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"
"com.apple.webinspector"
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (262565 => 262566)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2020-06-04 20:38:29 UTC (rev 262566)
@@ -163,7 +163,6 @@
#if PLATFORM(IOS_FAMILY)
encoder << diagnosticsExtensionHandles;
- encoder << runningboardExtensionHandle;
encoder << dynamicMachExtensionHandles;
encoder << dynamicIOKitExtensionHandles;
#endif
@@ -443,12 +442,6 @@
return false;
parameters.diagnosticsExtensionHandles = WTFMove(*diagnosticsExtensionHandles);
- Optional<Optional<SandboxExtension::Handle>> runningboardExtensionHandle;
- decoder >> runningboardExtensionHandle;
- if (!runningboardExtensionHandle)
- return false;
- parameters.runningboardExtensionHandle = WTFMove(*runningboardExtensionHandle);
-
Optional<SandboxExtension::HandleArray> dynamicMachExtensionHandles;
decoder >> dynamicMachExtensionHandles;
if (!dynamicMachExtensionHandles)
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (262565 => 262566)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-06-04 20:38:29 UTC (rev 262566)
@@ -203,7 +203,6 @@
#if PLATFORM(IOS_FAMILY)
SandboxExtension::HandleArray diagnosticsExtensionHandles;
- Optional<SandboxExtension::Handle> runningboardExtensionHandle;
SandboxExtension::HandleArray dynamicMachExtensionHandles;
SandboxExtension::HandleArray dynamicIOKitExtensionHandles;
#endif
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (262565 => 262566)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-06-04 20:38:29 UTC (rev 262566)
@@ -403,10 +403,6 @@
if (isInternalInstall())
parameters.diagnosticsExtensionHandles = SandboxExtension::createHandlesForMachLookup(diagnosticServices(), WTF::nullopt, SandboxExtension::Flags::NoReport);
- SandboxExtension::Handle runningboardExtensionHandle;
- if (SandboxExtension::createHandleForMachLookup("com.apple.runningboard", WTF::nullopt, runningboardExtensionHandle, SandboxExtension::Flags::NoReport))
- parameters.runningboardExtensionHandle = WTFMove(runningboardExtensionHandle);
-
if (WebCore::deviceHasAGXCompilerService())
parameters.dynamicIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(agxCompilerClasses(), WTF::nullopt);
#endif
Modified: trunk/Source/WebKit/UIProcess/ProcessAssertion.h (262565 => 262566)
--- trunk/Source/WebKit/UIProcess/ProcessAssertion.h 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/ProcessAssertion.h 2020-06-04 20:38:29 UTC (rev 262566)
@@ -53,7 +53,6 @@
UnboundedNetworking,
Foreground,
MediaPlayback,
- DependentProcessLink,
};
class ProcessAssertion : public CanMakeWeakPtr<ProcessAssertion> {
Modified: trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp (262565 => 262566)
--- trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp 2020-06-04 20:38:29 UTC (rev 262566)
@@ -112,7 +112,6 @@
return "Suspended"_s;
case ProcessAssertionType::UnboundedNetworking:
case ProcessAssertionType::MediaPlayback:
- case ProcessAssertionType::DependentProcessLink:
ASSERT_NOT_REACHED(); // These other assertion types are not used by the ProcessThrottler.
break;
}
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (262565 => 262566)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2020-06-04 20:38:29 UTC (rev 262566)
@@ -1376,7 +1376,6 @@
case ProcessAssertionType::MediaPlayback:
case ProcessAssertionType::UnboundedNetworking:
- case ProcessAssertionType::DependentProcessLink:
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm (262565 => 262566)
--- trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm 2020-06-04 20:38:29 UTC (rev 262566)
@@ -322,14 +322,10 @@
return @"UnboundedNetworking";
case ProcessAssertionType::Foreground:
return @"Foreground";
- case ProcessAssertionType::DependentProcessLink:
- return @"DependentProcessLink";
case ProcessAssertionType::MediaPlayback:
return @"MediaPlayback";
}
#else
- if (assertionType == ProcessAssertionType::DependentProcessLink)
- return @"DependentProcessLink";
return nil;
#endif
}
@@ -351,9 +347,6 @@
case ProcessAssertionType::Foreground:
case ProcessAssertionType::MediaPlayback:
return foregroundTabFlags;
- case ProcessAssertionType::DependentProcessLink:
- ASSERT_NOT_REACHED();
- return backgroundTabFlags;
}
}
@@ -368,9 +361,6 @@
return BKSProcessAssertionReasonFinishTaskUnbounded;
case ProcessAssertionType::MediaPlayback:
return BKSProcessAssertionReasonMediaPlayback;
- case ProcessAssertionType::DependentProcessLink:
- ASSERT_NOT_REACHED();
- return BKSProcessAssertionReasonExtension;
}
}
Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (262565 => 262566)
--- trunk/Source/WebKit/WebProcess/WebProcess.h 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h 2020-06-04 20:38:29 UTC (rev 262566)
@@ -577,10 +577,6 @@
RefPtr<WebCore::ApplicationCacheStorage> m_applicationCacheStorage;
-#if PLATFORM(IOS_FAMILY)
- std::unique_ptr<ProcessAssertion> m_uiProcessDependencyProcessAssertion;
-#endif
-
bool m_suppressMemoryPressureHandler { false };
#if PLATFORM(MAC)
std::unique_ptr<WebCore::CPUMonitor> m_cpuMonitor;
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (262565 => 262566)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-06-04 20:38:29 UTC (rev 262566)
@@ -185,23 +185,6 @@
ASSERT(String(uti.get()) == String(adoptCF(UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, CFSTR("text/html"), 0)).get()));
}
-#if PLATFORM(IOS_FAMILY)
- if (parameters.runningboardExtensionHandle) {
- auto extension = SandboxExtension::create(WTFMove(*parameters.runningboardExtensionHandle));
- bool consumed = extension->consume();
- ASSERT_UNUSED(consumed, consumed);
-
- ASSERT(!m_uiProcessDependencyProcessAssertion);
- if (auto remoteProcessID = parentProcessConnection()->remoteProcessID())
- m_uiProcessDependencyProcessAssertion = makeUnique<ProcessAssertion>(remoteProcessID, "WebContent process dependency on UIProcess"_s, ProcessAssertionType::DependentProcessLink);
- else
- RELEASE_LOG_ERROR_IF_ALLOWED(ProcessSuspension, "Unable to create a process dependency assertion on UIProcess because remoteProcessID is 0");
-
- bool revoked = extension->revoke();
- ASSERT_UNUSED(revoked, revoked);
- }
-#endif
-
#if !LOG_DISABLED || !RELEASE_LOG_DISABLED
WebCore::initializeLogChannelsIfNecessary(parameters.webCoreLoggingChannels);
WebKit::initializeLogChannelsIfNecessary(parameters.webKitLoggingChannels);