Skip to content

Commit

Permalink
Move ProcessThrottler to AuxiliaryProcessProxy
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=269136
rdar://122708925

Reviewed by Chris Dumez.

We can simplify the code by moving the ProcessThrottler object from every subclass to the
AuxiliaryProcessProxy base class.

This was previously landed in <https://commits.webkit.org/275195@main> and later reverted
because it introduced a crash. The reason for the crash was that the ProcessThrottler
was being deleted later since it moved to AuxiliaryProcessProxy. That could result in
pure virtual function calls in the AuxiliaryProcessProxy destructor, since the
ProcessThrottler calls virtual methods in AuxiliaryProcessProxy. This patch addresses
this crash by calling didDisconnectFromProcess in AuxiliaryProcessProxy::shutDownProcess.

* Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:
(WebKit::AuxiliaryProcessProxy::sendProcessDidResume):
(WebKit::AuxiliaryProcessProxy::clientName const):
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::didFinishLaunching):
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:
(WebKit::AuxiliaryProcessProxy::throttler):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::didFinishLaunching):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
* Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp:
(WebKit::ModelProcessProxy::didFinishLaunching):
* Source/WebKit/UIProcess/Model/ModelProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didFinishLaunching):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didFinishLaunching):
* Source/WebKit/UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::throttler const): Deleted.

Canonical link: https://commits.webkit.org/275528@main
  • Loading branch information
pvollan committed Mar 1, 2024
1 parent 40b5c0b commit 868e634
Show file tree
Hide file tree
Showing 12 changed files with 50 additions and 77 deletions.
21 changes: 19 additions & 2 deletions Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "WebPageProxyIdentifier.h"
#include "WebProcessProxy.h"
#include <wtf/RunLoop.h>
#include <wtf/Scope.h>

#if PLATFORM(COCOA)
#include "CoreIPCSecureCoding.h"
Expand Down Expand Up @@ -66,9 +67,10 @@ static Seconds adjustedTimeoutForThermalState(Seconds timeout)
#endif
}

AuxiliaryProcessProxy::AuxiliaryProcessProxy(bool alwaysRunsAtBackgroundPriority, Seconds responsivenessTimeout)
AuxiliaryProcessProxy::AuxiliaryProcessProxy(ShouldTakeUIBackgroundAssertion shouldTakeUIBackgroundAssertion, AlwaysRunsAtBackgroundPriority alwaysRunsAtBackgroundPriority, Seconds responsivenessTimeout)
: m_responsivenessTimer(*this, adjustedTimeoutForThermalState(responsivenessTimeout))
, m_alwaysRunsAtBackgroundPriority(alwaysRunsAtBackgroundPriority)
, m_alwaysRunsAtBackgroundPriority(alwaysRunsAtBackgroundPriority == AlwaysRunsAtBackgroundPriority::Yes)
, m_throttler(*this, shouldTakeUIBackgroundAssertion == ShouldTakeUIBackgroundAssertion::Yes)
#if USE(RUNNINGBOARD)
, m_timedActivityForIPC(3_s)
#endif
Expand All @@ -77,6 +79,8 @@ AuxiliaryProcessProxy::AuxiliaryProcessProxy(bool alwaysRunsAtBackgroundPriority

AuxiliaryProcessProxy::~AuxiliaryProcessProxy()
{
throttler().didDisconnectFromProcess();

if (RefPtr connection = m_connection)
connection->invalidate();

Expand Down Expand Up @@ -348,6 +352,15 @@ void AuxiliaryProcessProxy::didFinishLaunching(ProcessLauncher* launcher, IPC::C
else
connection->sendMessage(WTFMove(pendingMessage.encoder), pendingMessage.sendOptions);
}

#if USE(RUNNINGBOARD)
m_throttler.didConnectToProcess(*this);
#if USE(EXTENSIONKIT)
ASSERT(launcher);
if (launcher)
launcher->releaseLaunchGrant();
#endif // USE(EXTENSIONKIT)
#endif // USE(RUNNINGBOARD)
}

void AuxiliaryProcessProxy::outgoingMessageQueueIsGrowingLarge()
Expand Down Expand Up @@ -378,6 +391,10 @@ void AuxiliaryProcessProxy::replyToPendingMessages()

void AuxiliaryProcessProxy::shutDownProcess()
{
auto scopeExit = WTF::makeScopeExit([&] {
throttler().didDisconnectFromProcess();
});

switch (state()) {
case State::Launching: {
RefPtr processLauncher = std::exchange(m_processLauncher, nullptr);
Expand Down
10 changes: 7 additions & 3 deletions Source/WebKit/UIProcess/AuxiliaryProcessProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ struct AuxiliaryProcessCreationParameters;

enum class ProcessThrottleState : uint8_t;

enum class ShouldTakeUIBackgroundAssertion : bool { No, Yes };
enum class AlwaysRunsAtBackgroundPriority : bool { No, Yes };

using ExtensionCapabilityGrantMap = HashMap<String, ExtensionCapabilityGrant>;

class AuxiliaryProcessProxy
Expand All @@ -67,7 +70,7 @@ class AuxiliaryProcessProxy
WTF_MAKE_NONCOPYABLE(AuxiliaryProcessProxy);

protected:
AuxiliaryProcessProxy(bool alwaysRunsAtBackgroundPriority = false, Seconds responsivenessTimeout = ResponsivenessTimer::defaultResponsivenessTimeout);
AuxiliaryProcessProxy(ShouldTakeUIBackgroundAssertion, AlwaysRunsAtBackgroundPriority = AlwaysRunsAtBackgroundPriority::No, Seconds responsivenessTimeout = ResponsivenessTimer::defaultResponsivenessTimeout);

public:
using ResponsivenessTimer::Client::weakPtrFactory;
Expand All @@ -81,8 +84,8 @@ class AuxiliaryProcessProxy
void connect();
virtual void terminate();

virtual ProcessThrottler& throttler() = 0;
virtual const ProcessThrottler& throttler() const = 0;
ProcessThrottler& throttler() { return m_throttler; }
const ProcessThrottler& throttler() const { return m_throttler; }

template<typename T> bool send(T&& message, uint64_t destinationID, OptionSet<IPC::SendOption> sendOptions = { });

Expand Down Expand Up @@ -275,6 +278,7 @@ class AuxiliaryProcessProxy
WebCore::ProcessIdentifier m_processIdentifier { WebCore::ProcessIdentifier::generate() };
std::optional<UseLazyStop> m_delayedResponsivenessCheck;
MonotonicTime m_processStart;
ProcessThrottler m_throttler;
#if USE(RUNNINGBOARD)
ProcessThrottler::TimedActivity m_timedActivityForIPC;
#if PLATFORM(MAC)
Expand Down
13 changes: 1 addition & 12 deletions Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,7 @@ static String gpuProcessCachesDirectory()
#endif

GPUProcessProxy::GPUProcessProxy()
: AuxiliaryProcessProxy()
, m_throttler(*this, WebProcessPool::anyProcessPoolNeedsUIBackgroundAssertion())
: AuxiliaryProcessProxy(WebProcessPool::anyProcessPoolNeedsUIBackgroundAssertion() ? ShouldTakeUIBackgroundAssertion::Yes : ShouldTakeUIBackgroundAssertion::No)
#if ENABLE(MEDIA_STREAM)
, m_useMockCaptureDevices(MockRealtimeMediaSourceCenter::mockRealtimeMediaSourceCenterEnabled())
#endif
Expand Down Expand Up @@ -589,16 +588,6 @@ void GPUProcessProxy::didFinishLaunching(ProcessLauncher* launcher, IPC::Connect
return;
}

#if USE(RUNNINGBOARD)
m_throttler.didConnectToProcess(*this);
#if USE(EXTENSIONKIT)
// FIXME: this should be moved to AuxiliaryProcessProxy::didFinishLaunching along with m_throttler.didConnectToProcess.
// This FIXME applies to all process proxy subclasses.
if (launcher)
launcher->releaseLaunchGrant();
#endif
#endif

#if PLATFORM(COCOA)
if (auto networkProcess = NetworkProcessProxy::defaultNetworkProcess())
networkProcess->sendXPCEndpointToProcess(*this);
Expand Down
4 changes: 0 additions & 4 deletions Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,6 @@ class GPUProcessProxy final : public AuxiliaryProcessProxy {

void createGPUProcessConnection(WebProcessProxy&, IPC::Connection::Handle&&, GPUProcessConnectionParameters&&);

ProcessThrottler& throttler() final { return m_throttler; }
const ProcessThrottler& throttler() const final { return m_throttler; }

void updateProcessAssertion();

#if ENABLE(MEDIA_STREAM)
Expand Down Expand Up @@ -182,7 +179,6 @@ class GPUProcessProxy final : public AuxiliaryProcessProxy {
GPUProcessCreationParameters processCreationParameters();
void platformInitializeGPUProcessParameters(GPUProcessCreationParameters&);

ProcessThrottler m_throttler;
ProcessThrottler::ActivityVariant m_activityFromWebProcesses;
#if ENABLE(MEDIA_STREAM)
bool m_useMockCaptureDevices { false };
Expand Down
11 changes: 1 addition & 10 deletions Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,7 @@ ModelProcessProxy* ModelProcessProxy::singletonIfCreated()
}

ModelProcessProxy::ModelProcessProxy()
: AuxiliaryProcessProxy()
, m_throttler(*this, WebProcessPool::anyProcessPoolNeedsUIBackgroundAssertion())
: AuxiliaryProcessProxy(WebProcessPool::anyProcessPoolNeedsUIBackgroundAssertion() ? ShouldTakeUIBackgroundAssertion::Yes : ShouldTakeUIBackgroundAssertion::No)
{
connect();

Expand Down Expand Up @@ -219,14 +218,6 @@ void ModelProcessProxy::didFinishLaunching(ProcessLauncher* launcher, IPC::Conne
return;
}

#if USE(RUNNINGBOARD)
m_throttler.didConnectToProcess(*this);
#if USE(EXTENSIONKIT)
if (launcher)
launcher->releaseLaunchGrant();
#endif
#endif

#if PLATFORM(COCOA)
if (auto networkProcess = NetworkProcessProxy::defaultNetworkProcess())
networkProcess->sendXPCEndpointToProcess(*this);
Expand Down
4 changes: 0 additions & 4 deletions Source/WebKit/UIProcess/Model/ModelProcessProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,6 @@ class ModelProcessProxy final : public AuxiliaryProcessProxy {

void createModelProcessConnection(WebProcessProxy&, IPC::Connection::Handle&& connectionIdentifier, ModelProcessConnectionParameters&&);

ProcessThrottler& throttler() final { return m_throttler; }
const ProcessThrottler& throttler() const final { return m_throttler; }

void updateProcessAssertion();

void terminateForTesting();
Expand Down Expand Up @@ -106,7 +103,6 @@ class ModelProcessProxy final : public AuxiliaryProcessProxy {

ModelProcessCreationParameters processCreationParameters();

ProcessThrottler m_throttler;
ProcessThrottler::ActivityVariant m_activityFromWebProcesses;

HashSet<PAL::SessionID> m_sessionIDs;
Expand Down
15 changes: 4 additions & 11 deletions Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,16 +229,17 @@ static bool anyProcessPoolAlwaysRunsAtBackgroundPriority()
}

NetworkProcessProxy::NetworkProcessProxy()
: AuxiliaryProcessProxy(anyProcessPoolAlwaysRunsAtBackgroundPriority(), networkProcessResponsivenessTimeout)
: AuxiliaryProcessProxy(WebProcessPool::anyProcessPoolNeedsUIBackgroundAssertion() ? ShouldTakeUIBackgroundAssertion::Yes : ShouldTakeUIBackgroundAssertion::No
, anyProcessPoolAlwaysRunsAtBackgroundPriority() ? AlwaysRunsAtBackgroundPriority::Yes : AlwaysRunsAtBackgroundPriority::No
, networkProcessResponsivenessTimeout)
#if ENABLE(LEGACY_CUSTOM_PROTOCOL_MANAGER)
, m_customProtocolManagerClient(makeUniqueRef<LegacyCustomProtocolManagerClient>())
, m_customProtocolManagerProxy(*this)
#else
, m_customProtocolManagerClient(makeUniqueRef<API::CustomProtocolManagerClient>())
#endif
, m_throttler(*this, WebProcessPool::anyProcessPoolNeedsUIBackgroundAssertion())
#if PLATFORM(MAC)
, m_backgroundActivityToPreventSuspension(m_throttler.backgroundActivity("Prevent suspension"_s))
, m_backgroundActivityToPreventSuspension(throttler().backgroundActivity("Prevent suspension"_s))
#endif
{
RELEASE_LOG(Process, "%p - NetworkProcessProxy::NetworkProcessProxy", this);
Expand Down Expand Up @@ -584,14 +585,6 @@ void NetworkProcessProxy::didFinishLaunching(ProcessLauncher* launcher, IPC::Con
networkProcessDidTerminate(ProcessTerminationReason::Crash);
return;
}

#if USE(RUNNINGBOARD)
m_throttler.didConnectToProcess(*this);
#if USE(EXTENSIONKIT)
if (launcher)
launcher->releaseLaunchGrant();
#endif
#endif
}

void NetworkProcessProxy::logDiagnosticMessage(WebPageProxyIdentifier pageID, const String& message, const String& description, WebCore::ShouldSample shouldSample)
Expand Down
4 changes: 0 additions & 4 deletions Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -230,9 +230,6 @@ class NetworkProcessProxy final : public AuxiliaryProcessProxy {

void requestTermination();

ProcessThrottler& throttler() final { return m_throttler; }
const ProcessThrottler& throttler() const final { return m_throttler; }

void updateProcessAssertion();

#if ENABLE(CONTENT_EXTENSIONS)
Expand Down Expand Up @@ -426,7 +423,6 @@ class NetworkProcessProxy final : public AuxiliaryProcessProxy {
LegacyCustomProtocolManagerProxy m_customProtocolManagerProxy;
#endif

ProcessThrottler m_throttler;
ProcessThrottler::ActivityVariant m_activityFromWebProcesses;

#if ENABLE(CONTENT_EXTENSIONS)
Expand Down
5 changes: 4 additions & 1 deletion Source/WebKit/UIProcess/ProcessThrottler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ String ProcessThrottler::assertionName(ProcessAssertionType type) const
return "Unknown"_s;
}();

return makeString(m_process->clientName(), " ", typeString, " Assertion");
return makeString(protectedProcess()->clientName(), " ", typeString, " Assertion");
}

ProcessAssertionType ProcessThrottler::assertionTypeForState(ProcessThrottleState state)
Expand Down Expand Up @@ -387,6 +387,9 @@ void ProcessThrottler::clearPendingRequestToSuspend()

void ProcessThrottler::sendPrepareToSuspendIPC(IsSuspensionImminent isSuspensionImminent)
{
if (!m_isConnectedToProcess)
return;

if (m_pendingRequestToSuspendID) {
// Do not send a new PrepareToSuspend IPC for imminent suspension if we've already sent a non-imminent PrepareToSuspend IPC.
RELEASE_ASSERT(isSuspensionImminent == IsSuspensionImminent::Yes);
Expand Down
34 changes: 13 additions & 21 deletions Source/WebKit/UIProcess/WebProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -290,12 +290,12 @@ class UIProxyForCapture final : public UserMediaCaptureManagerProxy::ConnectionP
#endif

WebProcessProxy::WebProcessProxy(WebProcessPool& processPool, WebsiteDataStore* websiteDataStore, IsPrewarmed isPrewarmed, CrossOriginMode crossOriginMode, LockdownMode lockdownMode)
: AuxiliaryProcessProxy(processPool.alwaysRunsAtBackgroundPriority())
: AuxiliaryProcessProxy(processPool.shouldTakeUIBackgroundAssertion() ? ShouldTakeUIBackgroundAssertion::Yes : ShouldTakeUIBackgroundAssertion::No
, processPool.alwaysRunsAtBackgroundPriority() ? AlwaysRunsAtBackgroundPriority::Yes : AlwaysRunsAtBackgroundPriority::No)
, m_backgroundResponsivenessTimer(*this)
, m_processPool(processPool, isPrewarmed == IsPrewarmed::Yes ? IsWeak::Yes : IsWeak::No)
, m_mayHaveUniversalFileReadSandboxExtension(false)
, m_numberOfTimesSuddenTerminationWasDisabled(0)
, m_throttler(*this, processPool.shouldTakeUIBackgroundAssertion())
, m_isResponsive(NoOrMaybe::Maybe)
, m_visiblePageCounter([this](RefCounterEvent) { updateBackgroundResponsivenessTimer(); })
, m_websiteDataStore(websiteDataStore)
Expand Down Expand Up @@ -689,7 +689,6 @@ void WebProcessProxy::shutDown()
m_activityForHoldingLockedFiles = nullptr;
m_audibleMediaActivity = std::nullopt;
m_mediaStreamingActivity = std::nullopt;
m_throttler.didDisconnectFromProcess();

for (Ref page : pages())
page->disconnectFramesFromPage();
Expand Down Expand Up @@ -821,8 +820,8 @@ void WebProcessProxy::addExistingWebPage(WebPageProxy& webPage, BeginsUsingDataS
m_pageMap.set(webPage.identifier(), webPage);
globalPageMap().set(webPage.identifier(), webPage);

m_throttler.setShouldTakeNearSuspendedAssertion(shouldTakeNearSuspendedAssertion());
m_throttler.setShouldDropNearSuspendedAssertionAfterDelay(shouldDropNearSuspendedAssertionAfterDelay());
throttler().setShouldTakeNearSuspendedAssertion(shouldTakeNearSuspendedAssertion());
throttler().setShouldDropNearSuspendedAssertionAfterDelay(shouldDropNearSuspendedAssertionAfterDelay());

updateRegistrationWithDataStore();
updateBackgroundResponsivenessTimer();
Expand Down Expand Up @@ -1330,22 +1329,15 @@ void WebProcessProxy::didFinishLaunching(ProcessLauncher* launcher, IPC::Connect
protectedConnection()->setIgnoreInvalidMessageForTesting();
#endif

#if USE(RUNNINGBOARD)
m_throttler.didConnectToProcess(*this);
#if USE(EXTENSIONKIT)
if (launcher)
launcher->releaseLaunchGrant();
#endif
#if PLATFORM(MAC)
#if USE(RUNNINGBOARD) && PLATFORM(MAC)
for (Ref page : pages()) {
if (page->preferences().backgroundWebContentRunningBoardThrottlingEnabled())
setRunningBoardThrottlingEnabled();
}
#endif // PLATFORM(MAC)
#endif // USE(RUNNINGBOARD)
#endif // USE(RUNNINGBOARD) && PLATFORM(MAC)

m_throttler.setShouldTakeNearSuspendedAssertion(shouldTakeNearSuspendedAssertion());
m_throttler.setShouldDropNearSuspendedAssertionAfterDelay(shouldDropNearSuspendedAssertionAfterDelay());
throttler().setShouldTakeNearSuspendedAssertion(shouldTakeNearSuspendedAssertion());
throttler().setShouldDropNearSuspendedAssertionAfterDelay(shouldDropNearSuspendedAssertionAfterDelay());

#if PLATFORM(COCOA)
unblockAccessibilityServerIfNeeded();
Expand Down Expand Up @@ -1909,7 +1901,7 @@ void WebProcessProxy::setIsHoldingLockedFiles(bool isHoldingLockedFiles)
}
if (!m_activityForHoldingLockedFiles) {
WEBPROCESSPROXY_RELEASE_LOG(ProcessSuspension, "setIsHoldingLockedFiles: UIProcess is taking a background assertion because the WebContent process is holding locked files");
m_activityForHoldingLockedFiles = m_throttler.backgroundActivity("Holding locked files"_s).moveToUniquePtr();
m_activityForHoldingLockedFiles = throttler().backgroundActivity("Holding locked files"_s).moveToUniquePtr();
}
}

Expand Down Expand Up @@ -2295,7 +2287,7 @@ void WebProcessProxy::startBackgroundActivityForFullscreenInput()
if (m_backgroundActivityForFullscreenFormControls)
return;

m_backgroundActivityForFullscreenFormControls = m_throttler.backgroundActivity("Fullscreen input"_s).moveToUniquePtr();
m_backgroundActivityForFullscreenFormControls = throttler().backgroundActivity("Fullscreen input"_s).moveToUniquePtr();
WEBPROCESSPROXY_RELEASE_LOG(ProcessSuspension, "startBackgroundActivityForFullscreenInput: UIProcess is taking a background assertion because it is presenting fullscreen UI for form controls.");
}

Expand Down Expand Up @@ -2356,7 +2348,7 @@ void WebProcessProxy::updateRemoteWorkerProcessAssertion(RemoteWorkerType worker
});
if (shouldTakeForegroundActivity) {
if (!ProcessThrottler::isValidForegroundActivity(workerInformation->activity))
workerInformation->activity = m_throttler.foregroundActivity("Worker for foreground view(s)"_s);
workerInformation->activity = throttler().foregroundActivity("Worker for foreground view(s)"_s);
return;
}

Expand All @@ -2365,14 +2357,14 @@ void WebProcessProxy::updateRemoteWorkerProcessAssertion(RemoteWorkerType worker
});
if (shouldTakeBackgroundActivity) {
if (!ProcessThrottler::isValidBackgroundActivity(workerInformation->activity))
workerInformation->activity = m_throttler.backgroundActivity("Worker for background view(s)"_s);
workerInformation->activity = throttler().backgroundActivity("Worker for background view(s)"_s);
return;
}

if (workerType == RemoteWorkerType::ServiceWorker && m_hasServiceWorkerBackgroundProcessing) {
WEBPROCESSPROXY_RELEASE_LOG(ProcessSuspension, "Service Worker for background processing");
if (!ProcessThrottler::isValidBackgroundActivity(workerInformation->activity))
workerInformation->activity = m_throttler.backgroundActivity("Service Worker for background processing"_s);
workerInformation->activity = throttler().backgroundActivity("Service Worker for background processing"_s);
return;
}

Expand Down
4 changes: 0 additions & 4 deletions Source/WebKit/UIProcess/WebProcessProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -308,9 +308,6 @@ class WebProcessProxy : public AuxiliaryProcessProxy {

void setIsHoldingLockedFiles(bool);

ProcessThrottler& throttler() final { return m_throttler; }
const ProcessThrottler& throttler() const final { return m_throttler; }

void isResponsive(CompletionHandler<void(bool isWebProcessResponsive)>&&);
void isResponsiveWithLazyStop();
void didReceiveBackgroundResponsivenessPing();
Expand Down Expand Up @@ -683,7 +680,6 @@ class WebProcessProxy : public AuxiliaryProcessProxy {
WeakHashSet<WebUserContentControllerProxy> m_webUserContentControllerProxies;

int m_numberOfTimesSuddenTerminationWasDisabled;
ProcessThrottler m_throttler;
std::unique_ptr<ProcessThrottler::BackgroundActivity> m_activityForHoldingLockedFiles;
ForegroundWebProcessToken m_foregroundToken;
BackgroundWebProcessToken m_backgroundToken;
Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
});
}

m_throttler.setAllowsActivities(!m_processPool->processesShouldSuspend());
throttler().setAllowsActivities(!m_processPool->processesShouldSuspend());
}

void WebProcessProxy::platformDestroy()
Expand Down

0 comments on commit 868e634

Please sign in to comment.