[webkit-changes] [WebKit/WebKit] 70dba3: Switch webpushd over to using generated IPC encode...

Brady Eidson noreply at github.com
Sun Sep 10 20:21:30 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 70dba30bd03c14d661efe268d25e418018fdc9d9
      https://github.com/WebKit/WebKit/commit/70dba30bd03c14d661efe268d25e418018fdc9d9
  Author: Brady Eidson <beidson at apple.com>
  Date:   2023-09-10 (Sun, 10 Sep 2023)

  Changed paths:
    M Source/WebKit/CMakeLists.txt
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources-output.xcfilelist
    M Source/WebKit/DerivedSources.make
    M Source/WebKit/NetworkProcess/Notifications/Cocoa/WebPushDaemonConnectionCocoa.mm
    M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp
    M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h
    M Source/WebKit/NetworkProcess/Notifications/WebPushDaemonConnection.h
    M Source/WebKit/Platform/IPC/DaemonCoders.cpp
    M Source/WebKit/Platform/IPC/MessageSender.cpp
    M Source/WebKit/Platform/IPC/MessageSender.h
    M Source/WebKit/Platform/IPC/MessageSenderInlines.h
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/TestWithoutUsingIPCConnectionMessageReceiver.cpp
    M Source/WebKit/Shared/API/Cocoa/WKMain.mm
    M Source/WebKit/Shared/Daemon/DaemonUtilities.h
    M Source/WebKit/Shared/Daemon/DaemonUtilities.mm
    M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
    M Source/WebKit/Shared/WebPushDaemonConnectionConfiguration.h
    M Source/WebKit/Shared/WebPushDaemonConnectionConfiguration.serialization.in
    M Source/WebKit/Shared/WebPushDaemonConstants.h
    M Source/WebKit/Sources.txt
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/webpushd/PushClientConnection.h
    A Source/WebKit/webpushd/PushClientConnection.messages.in
    M Source/WebKit/webpushd/PushClientConnection.mm
    M Source/WebKit/webpushd/WebPushDaemon.h
    M Source/WebKit/webpushd/WebPushDaemon.mm
    M Source/WebKit/webpushd/WebPushDaemonMain.h
    M Source/WebKit/webpushd/WebPushDaemonMain.mm
    M Source/WebKit/webpushd/webpushtool/WebPushToolConnection.h
    M Source/WebKit/webpushd/webpushtool/WebPushToolConnection.mm
    M Tools/TestWebKitAPI/Configurations/TestIPC.xcconfig
    M Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm

  Log Message:
  -----------
  Switch webpushd over to using generated IPC encoder/decoder
https://bugs.webkit.org/show_bug.cgi?id=261361
rdar://114886414

Reviewed by Chris Dumez.

All of these hand rolled and hand maintained messages and related macros and templates are... fragile.
Let's generate them, greatly improving the ability to hack on webpushd related stuff quickly.

This patch:
- Generates messages/serializers for PushClientConnection stuff
- Removes all of the raw xpc messaging to webpushd
- Exposes these messages and ArgumentCoders to TestWebKitAPI and webpushtool
- Adapts TestWebKitAPI and webpushtool to these changes

* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/NetworkProcess/Notifications/Cocoa/WebPushDaemonConnectionCocoa.mm:
(WebKit::WebPushD::Connection::newConnectionWasInitialized const):
(WebKit::WebPushD::messageDictionaryFromEncoder):
(WebKit::WebPushD::Connection::performSendWithoutUsingIPCConnection const):
(WebKit::WebPushD::Connection::performSendWithAsyncReplyWithoutUsingIPCConnection const):
(WebKit::WebPushD::addVersionAndEncodedMessageToDictionary): Deleted.
(WebKit::WebPushD::handleWebPushDaemonMessage): Deleted.
(WebKit::WebPushD::Connection::connectionReceivedEvent): Deleted.
(WebKit::WebPushD::Connection::dictionaryFromMessage const): Deleted.
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp:
(WebKit::NetworkNotificationManager::setPushAndNotificationsEnabledForOrigin):
(WebKit::NetworkNotificationManager::deletePushAndNotificationRegistration):
(WebKit::NetworkNotificationManager::getPendingPushMessages):
(WebKit::NetworkNotificationManager::subscribeToPushService):
(WebKit::NetworkNotificationManager::unsubscribeFromPushService):
(WebKit::NetworkNotificationManager::getPushSubscription):
(WebKit::NetworkNotificationManager::getPushPermissionState):
(WebKit::NetworkNotificationManager::incrementSilentPushCount):
(WebKit::NetworkNotificationManager::removeAllPushSubscriptions):
(WebKit::NetworkNotificationManager::removePushSubscriptionsForOrigin):
(WebKit::NetworkNotificationManager::sendMessage const): Deleted.
(WebKit::ReplyCaller<>::callReply): Deleted.
(WebKit::ReplyCaller<String>::callReply): Deleted.
(): Deleted.
(WebKit::ReplyCaller<bool>::callReply): Deleted.
(WebKit::ReplyCaller<unsigned>::callReply): Deleted.
(WebKit::ReplyCaller<Vector<String>::callReply): Deleted.
(WebKit::ReplyCaller<Vector<WebPushMessage>::callReply): Deleted.
(WebKit::NetworkNotificationManager::sendMessageWithReply const): Deleted.
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h:
* Source/WebKit/NetworkProcess/Notifications/WebPushDaemonConnection.h:
* Source/WebKit/Platform/IPC/DaemonCoders.cpp:
* Source/WebKit/Platform/IPC/MessageSender.cpp:
(IPC::MessageSender::performSendWithoutUsingIPCConnection const):
(IPC::MessageSender::performSendWithAsyncReplyWithoutUsingIPCConnection const):
(IPC::MessageSender::performSendWithoutUsingIPCConnection): Deleted.
(IPC::MessageSender::performSendWithAsyncReplyWithoutUsingIPCConnection): Deleted.
* Source/WebKit/Platform/IPC/MessageSender.h:
* Source/WebKit/Platform/IPC/MessageSenderInlines.h:
(IPC::MessageSender::sendWithoutUsingIPCConnection const):
(IPC::MessageSender::sendWithAsyncReplyWithoutUsingIPCConnection const):
(IPC::MessageSender::sendWithoutUsingIPCConnection): Deleted.
(IPC::MessageSender::sendWithAsyncReplyWithoutUsingIPCConnection): Deleted.
* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
(generate_message_handler):
* Source/WebKit/Scripts/webkit/tests/TestWithoutUsingIPCConnectionMessageReceiver.cpp:
(WebKit::TestWithoutUsingIPCConnection::didReceiveMessageWithReplyHandler):
* Source/WebKit/Shared/Daemon/DaemonUtilities.h:
* Source/WebKit/Shared/Daemon/DaemonUtilities.mm:
(WebKit::encoderToXPCData):
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/Shared/WebPushDaemonConnectionConfiguration.h:
(WebKit::WebPushD::WebPushDaemonConnectionConfiguration::encode const): Deleted.
(WebKit::WebPushD::WebPushDaemonConnectionConfiguration::decode): Deleted.
* Source/WebKit/Shared/WebPushDaemonConnectionConfiguration.serialization.in:
* Source/WebKit/Shared/WebPushDaemonConstants.h:
(WebKit::WebPushD::messageTypeSendsReply): Deleted.
(WebKit::WebPushD::daemonMessageTypeSendsReply): Deleted.
* Source/WebKit/Sources.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/webpushd/PushClientConnection.h:
* Source/WebKit/webpushd/PushClientConnection.messages.in: Added.
* Source/WebKit/webpushd/PushClientConnection.mm:
(WebPushD::PushClientConnection::updateConnectionConfiguration):
(WebPushD::PushClientConnection::getPushTopicsForTesting):
(WebPushD::PushClientConnection::sendDebugMessage):
(WebPushD::PushClientConnection::setPushAndNotificationsEnabledForOrigin):
(WebPushD::PushClientConnection::deletePushAndNotificationRegistration):
(WebPushD::PushClientConnection::injectPushMessageForTesting):
(WebPushD::PushClientConnection::injectEncryptedPushMessageForTesting):
(WebPushD::PushClientConnection::getPendingPushMessages):
(WebPushD::PushClientConnection::subscribeToPushService):
(WebPushD::PushClientConnection::unsubscribeFromPushService):
(WebPushD::PushClientConnection::getPushSubscription):
(WebPushD::PushClientConnection::incrementSilentPushCount):
(WebPushD::PushClientConnection::removeAllPushSubscriptions):
(WebPushD::PushClientConnection::removePushSubscriptionsForOrigin):
(WebPushD::PushClientConnection::setPublicTokenForTesting):
(WebPushD::PushClientConnection::getPushPermissionState):
(WebPushD::PushClientConnection::sendDaemonMessage const): Deleted.
* Source/WebKit/webpushd/WebPushDaemon.h:
* Source/WebKit/webpushd/WebPushDaemon.mm:
(WebPushD::tryCloseRequestConnection):
(WebPushD::WebPushDaemon::connectionEventHandler):
(WebPushD::WebPushDaemon::setPushAndNotificationsEnabledForOrigin):
(WebPushD::WebPushDaemon::deletePushAndNotificationRegistration):
(WebPushD::WebPushDaemon::injectPushMessageForTesting):
(WebPushD::WebPushDaemon::injectEncryptedPushMessageForTesting):
(WebPushD::WebPushDaemon::getPendingPushMessages):
(WebPushD::WebPushDaemon::getPushTopicsForTesting):
(WebPushD::WebPushDaemon::subscribeToPushService):
(WebPushD::WebPushDaemon::unsubscribeFromPushService):
(WebPushD::WebPushDaemon::getPushSubscription):
(WebPushD::WebPushDaemon::incrementSilentPushCount):
(WebPushD::WebPushDaemon::removeAllPushSubscriptions):
(WebPushD::WebPushDaemon::removePushSubscriptionsForOrigin):
(WebPushD::WebPushDaemon::setPublicTokenForTesting):
(WebPushD::WebPushDaemon::canRegisterForNotifications):
(WebPushD::MessageInfo::echoTwice::encodeReply): Deleted.
(WebPushD::MessageInfo::deletePushAndNotificationRegistration::encodeReply): Deleted.
(WebPushD::MessageInfo::injectPushMessageForTesting::encodeReply): Deleted.
(WebPushD::MessageInfo::injectEncryptedPushMessageForTesting::encodeReply): Deleted.
(WebPushD::MessageInfo::getPendingPushMessages::encodeReply): Deleted.
(WebPushD::MessageInfo::subscribeToPushService::encodeReply): Deleted.
(WebPushD::MessageInfo::unsubscribeFromPushService::encodeReply): Deleted.
(WebPushD::MessageInfo::getPushSubscription::encodeReply): Deleted.
(WebPushD::MessageInfo::getPushPermissionState::encodeReply): Deleted.
(WebPushD::MessageInfo::incrementSilentPushCount::encodeReply): Deleted.
(WebPushD::MessageInfo::removeAllPushSubscriptions::encodeReply): Deleted.
(WebPushD::MessageInfo::removePushSubscriptionsForOrigin::encodeReply): Deleted.
(WebPushD::handleWebPushDMessageWithReply): Deleted.
(WebPushD::handleWebPushDMessage): Deleted.
(WebPushD::CompletionHandler<void): Deleted.
(WebPushD::WebPushDaemon::decodeAndHandleRawXPCMessage): Deleted.
(WebPushD::WebPushDaemon::decodeAndHandleMessage): Deleted.
(WebPushD::WebPushDaemon::echoTwice): Deleted.
(WebPushD::WebPushDaemon::setDebugModeIsEnabled): Deleted.
(WebPushD::WebPushDaemon::updateConnectionConfiguration): Deleted.
(WebPushD::toXPCArray): Deleted.
(WebPushD::WebPushDaemon::getPushPermissionState): Deleted.
* Source/WebKit/webpushd/webpushtool/WebPushToolConnection.h:
* Source/WebKit/webpushd/webpushtool/WebPushToolConnection.mm:
(WebPushTool::Connection::sendPushMessage):
(WebPushTool::Connection::startDebugStreamAction):
(WebPushTool::Connection::sendAuditToken):
(WebPushTool::messageDictionaryFromEncoder):
(WebPushTool::Connection::performSendWithoutUsingIPCConnection const):
(WebPushTool::Connection::performSendWithAsyncReplyWithoutUsingIPCConnection const):
* Tools/TestWebKitAPI/Configurations/TestIPC.xcconfig:
* Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
(TestWebKitAPI::WebPushXPCConnectionMessageSender::WebPushXPCConnectionMessageSender):
(TestWebKitAPI::WebPushXPCConnectionMessageSender::incrementProtocolVersionForTesting):
(TestWebKitAPI::WebPushXPCConnectionMessageSender::messageDictionaryFromEncoder const):
(TestWebKitAPI::WebPushXPCConnectionMessageSender::performSendWithoutUsingIPCConnection const):
(TestWebKitAPI::WebPushXPCConnectionMessageSender::performSendWithAsyncReplyWithoutUsingIPCConnection const):
(TestWebKitAPI::sendConfigurationWithAuditToken):
(TestWebKitAPI::TEST):
(TestWebKitAPI::addMessageHeaders): Deleted.
(TestWebKitAPI::sendMessageToDaemon): Deleted.
(TestWebKitAPI::sendMessageToDaemonWithReplySync): Deleted.
(TestWebKitAPI::sendRawMessageToDaemonWithReplySync): Deleted.
(TestWebKitAPI::toStringVector): Deleted.
(TestWebKitAPI::encodeString): Deleted.

Canonical link: https://commits.webkit.org/267851@main




More information about the webkit-changes mailing list