Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9fa5c77109491231f31e5096788292a4722b28cd
https://github.com/WebKit/WebKit/commit/9fa5c77109491231f31e5096788292a4722b28cd
Author: Ben Nham <[email protected]>
Date: 2024-11-22 (Fri, 22 Nov 2024)
Changed paths:
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/messages_unittest.py
M Source/WebKit/Scripts/webkit/model.py
M Source/WebKit/Scripts/webkit/parser.py
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
M Source/WebKit/Scripts/webkit/tests/MessageNames.cpp
M Source/WebKit/Scripts/webkit/tests/MessageNames.h
M Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessages.h
A Source/WebKit/Scripts/webkit/tests/TestWithDeferSendingOption.messages.in
A
Source/WebKit/Scripts/webkit/tests/TestWithDeferSendingOptionMessageReceiver.cpp
A Source/WebKit/Scripts/webkit/tests/TestWithDeferSendingOptionMessages.h
M
Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunctionMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithEnabledByMessages.h
M
Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunctionMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithEnabledIfMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithImageDataMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithSemaphoreMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithStreamBatchedMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithStreamBufferMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithStreamMessages.h
M
Source/WebKit/Scripts/webkit/tests/TestWithStreamServerConnectionHandleMessages.h
M
Source/WebKit/Scripts/webkit/tests/TestWithSuperclassAndWantsAsyncDispatchMessages.h
M
Source/WebKit/Scripts/webkit/tests/TestWithSuperclassAndWantsDispatchMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithWantsAsyncDispatchMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithWantsDispatchMessages.h
M
Source/WebKit/Scripts/webkit/tests/TestWithWantsDispatchNoSyncMessagesMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessages.h
M Source/WebKit/Scripts/webkit/tests/TestWithoutUsingIPCConnectionMessages.h
M Source/WebKit/Shared/AuxiliaryProcess.h
M Source/WebKit/Shared/AuxiliaryProcess.messages.in
M Source/WebKit/Shared/Cocoa/AuxiliaryProcessCocoa.mm
M Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp
M Source/WebKit/UIProcess/AuxiliaryProcessProxy.h
M Source/WebKit/UIProcess/Cocoa/AuxiliaryProcessProxyCocoa.mm
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/UIProcess/WebProcessPool.h
M Source/WebKit/UIProcess/WebProcessProxy.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
M Source/WebKit/WebProcess/WebProcess.messages.in
Log Message:
-----------
Add way to mark IPC messages as being deferred if receiving process is
suspended
https://bugs.webkit.org/show_bug.cgi?id=283466
rdar://137988046
Reviewed by Ryan Reno.
This adds a way to mark certain IPC messages as being deferred if the receiving
process is
suspended. We are already doing this one-off in several places (e.g.
275588@main and 277427@main)
and there are more IPCs where this might be useful.
To mark a message as being deferred while the process is suspended, use either
the option
`DeferSendingIfSuspended` or `DeferSendingIfSuspendedWithCoalescingKeys`. When
one of these options
are used, `AuxiliaryProcessProxy::send` will send the message immediately if
the receiver is
running, or it will queue the message for sending once the process resumes. The
queued message
is coalesced based on the message name, destination ID, and some of the
arguments in the message
itself (if the `DeferSendingIfSuspendedWithCoalescingKeys` option is used).
For instance, in this patch:
- We revert the changes in 275588@main and mark
`SetHiddenPageDOMTimerThrottlingIncreaseLimit` with the
`DeferSendingIfSuspended` option. This means that we'll keep the latest version
that message and send it once the web process resumes.
- We revert the changes in 277427@main and mark `PreferenceDidUpdate` with the
`DeferSendingIfSuspendedWithBatchingKeys=(domain, key)` option. This means that
we'll keep the latest version of the PreferenceDidUpdate for a given domain and
key and send it once the web process resumes.
- We mark `SetShouldPlayToPlaybackTarget` with the
`DeferSendingIfSuspendedWithBatchingKeys=(contextId)` option. This was showing
up as the most common message clogging up suspended process message queues in
one of our long-running stress tests. I talked to Eric Carlson about this and
he said that it'd be safe to coalesce these messages by contextId and send them
once the process resumes.
* Source/WebKit/Scripts/webkit/messages.py:
(message_to_struct_declaration):
* Source/WebKit/Scripts/webkit/messages_unittest.py:
* Source/WebKit/Scripts/webkit/model.py:
(Message.__init__):
* Source/WebKit/Scripts/webkit/parser.py:
(parse):
(parse_enabled_by_string):
(parse_coalescing_keys):
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
(IPC::jsValueForArguments):
(IPC::messageArgumentDescriptions):
* Source/WebKit/Scripts/webkit/tests/MessageNames.cpp:
* Source/WebKit/Scripts/webkit/tests/MessageNames.h:
* Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithDeferSendingOption.messages.in:
Copied from Source/WebKit/Shared/AuxiliaryProcess.messages.in.
*
Source/WebKit/Scripts/webkit/tests/TestWithDeferSendingOptionMessageReceiver.cpp:
Added.
(WebKit::TestWithDeferSendingOption::didReceiveMessage):
(IPC::jsValueForDecodedMessage<MessageName::TestWithDeferSendingOption_NoOptions>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithDeferSendingOption_NoIndices>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithDeferSendingOption_OneIndex>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithDeferSendingOption_MultipleIndices>):
* Source/WebKit/Scripts/webkit/tests/TestWithDeferSendingOptionMessages.h:
Copied from Source/WebKit/Scripts/webkit/tests/TestWithEnabledByMessages.h.
(Messages::TestWithDeferSendingOption::messageReceiverName):
(Messages::TestWithDeferSendingOption::NoOptions::name):
(Messages::TestWithDeferSendingOption::NoOptions::NoOptions):
(Messages::TestWithDeferSendingOption::NoOptions::arguments):
(Messages::TestWithDeferSendingOption::NoIndices::name):
(Messages::TestWithDeferSendingOption::NoIndices::NoIndices):
(Messages::TestWithDeferSendingOption::NoIndices::encodeCoalescingKey const):
(Messages::TestWithDeferSendingOption::NoIndices::arguments):
(Messages::TestWithDeferSendingOption::OneIndex::name):
(Messages::TestWithDeferSendingOption::OneIndex::OneIndex):
(Messages::TestWithDeferSendingOption::OneIndex::encodeCoalescingKey const):
(Messages::TestWithDeferSendingOption::OneIndex::arguments):
(Messages::TestWithDeferSendingOption::MultipleIndices::name):
(Messages::TestWithDeferSendingOption::MultipleIndices::MultipleIndices):
(Messages::TestWithDeferSendingOption::MultipleIndices::encodeCoalescingKey
const):
(Messages::TestWithDeferSendingOption::MultipleIndices::arguments):
* Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunctionMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithEnabledByMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunctionMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithEnabledIfMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithImageDataMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithSemaphoreMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithStreamBatchedMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithStreamBufferMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithStreamMessages.h:
*
Source/WebKit/Scripts/webkit/tests/TestWithStreamServerConnectionHandleMessages.h:
*
Source/WebKit/Scripts/webkit/tests/TestWithSuperclassAndWantsAsyncDispatchMessages.h:
*
Source/WebKit/Scripts/webkit/tests/TestWithSuperclassAndWantsDispatchMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithWantsAsyncDispatchMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithWantsDispatchMessages.h:
*
Source/WebKit/Scripts/webkit/tests/TestWithWantsDispatchNoSyncMessagesMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithoutUsingIPCConnectionMessages.h:
* Source/WebKit/Shared/AuxiliaryProcess.h:
* Source/WebKit/Shared/AuxiliaryProcess.messages.in:
* Source/WebKit/Shared/Cocoa/AuxiliaryProcessCocoa.mm:
(WebKit::AuxiliaryProcess::preferencesDidUpdate): Deleted.
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::sendMessageAfterResuming):
(WebKit::AuxiliaryProcessProxy::didChangeThrottleState):
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:
(WebKit::AuxiliaryProcessProxy::send):
* Source/WebKit/UIProcess/Cocoa/AuxiliaryProcessProxyCocoa.mm:
(WebKit::AuxiliaryProcessProxy::notifyPreferencesChanged):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::updateHiddenPageThrottlingAutoIncreaseLimit):
(WebKit::WebProcessPool::hiddenPageThrottlingAutoIncreaseLimit const): Deleted.
* Source/WebKit/UIProcess/WebProcessPool.h:
(WebKit::WebProcessPool::sendToAllProcesses):
(WebKit::WebProcessPool::sendToAllProcessesForSession):
(WebKit::WebProcessPool::sendToAllRemoteWorkerProcesses):
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::sendProcessDidResume):
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKit/WebProcess/WebProcess.messages.in:
Canonical link: https://commits.webkit.org/286968@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes