Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0fea03a077b9e700898f706dd3c9d57981e371ff
      
https://github.com/WebKit/WebKit/commit/0fea03a077b9e700898f706dd3c9d57981e371ff
  Author: Kimmo Kinnunen <kkinnu...@apple.com>
  Date:   2022-12-06 (Tue, 06 Dec 2022)

  Changed paths:
    M Source/WebKit/Platform/IPC/Connection.cpp
    M Source/WebKit/Platform/IPC/Connection.h
    M Source/WebKit/Platform/IPC/HandleMessage.h
    M Source/WebKit/Platform/IPC/MessageSender.h
    M Source/WebKit/UIProcess/AuxiliaryProcessProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/ios/WKContentView.mm
    M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
    M Source/WebKit/UIProcess/mac/WKPrintingView.h
    M Source/WebKit/UIProcess/mac/WKPrintingView.mm
    M Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp
    M Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp

  Log Message:
  -----------
  IPC::Connection per instance async reply handler map is not accessible to 
stream connections
https://bugs.webkit.org/show_bug.cgi?id=248611
rdar://problem/102865370

Reviewed by Alex Christensen.

Expose the functions to maintain async reply handlers in Connection private
section. The StreamClientConnection is a friend and will use the internal
implementation to implement the feature for stream connections. The async
replies will be delivered by the dedicated Connection of StreamClientConnection.

At the same time, do two clarifying changes:
- Before, the async reply id was uint64_t. Make it a AsyncReplyID type object
  identifier type.
- Before, the handler map was stored in hash map that was stored
  per-connection in a global hash map. Instead, make the map a normal instance
  variable.

* Source/WebKit/Platform/IPC/Connection.cpp:
(IPC::Connection::~Connection):
(IPC::Connection::invalidate):
(IPC::Connection::sendMessageWithAsyncReply):
(IPC::Connection::dispatchMessage):
(IPC::Connection::addAsyncReplyHandler):
(IPC::Connection::cancelAsyncReplyHandlers):
(IPC::CompletionHandler<void):
(IPC::WTF_REQUIRES_LOCK): Deleted.
(IPC::addAsyncReplyHandler): Deleted.
(IPC::nextAsyncReplyHandlerID): Deleted.
(IPC::clearAsyncReplyHandlers): Deleted.
* Source/WebKit/Platform/IPC/Connection.h:
(IPC::Connection::sendWithAsyncReply):
(IPC::Connection::waitForAsyncCallbackAndDispatchImmediately):
(IPC::Connection::makeAsyncReplyHandler):
* Source/WebKit/Platform/IPC/HandleMessage.h:
(IPC::handleMessageAsync):
(IPC::handleMessageAsyncWantsConnection):
* Source/WebKit/Platform/IPC/MessageSender.h:
(IPC::MessageSender::sendWithAsyncReply):
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:
(WebKit::AuxiliaryProcessProxy::sendWithAsyncReply):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::computePagesForPrinting):
(WebKit::WebPageProxy::drawRectToImage):
(WebKit::WebPageProxy::drawPagesToPDF):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/WKContentView.mm:
(-[WKContentView _resetPrintingState]):
(-[WKContentView _wk_pageCountForPrintFormatter:]):
(-[WKContentView _waitForDrawToPDFCallbackForPrintFormatterIfNeeded:]):
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::drawToPDFiOS):
* Source/WebKit/UIProcess/mac/WKPrintingView.h:
* Source/WebKit/UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _expectedPreviewCallbackForRect:]):
(pageDidDrawToImage):
(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(pageDidComputePageRects):
(-[WKPrintingView _drawPreview:]):
(-[WKPrintingView endDocument]):
* Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:
(WebKit::WebNotificationManager::sendNotificationMessageWithAsyncReply):
* Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::sendMessageWithJSArguments):
(WebKit::IPCTestingAPI::JSMessageListener::jsDescriptionFromDecoder):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to