⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 243443 in webkit


Ignore:
Timestamp:
Mar 25, 2019, 11:26:10 AM (7 years ago)
Author:
aestes@apple.com
Message:

[Apple Pay] Remove the AvailablePaymentNetworks synchronous message
https://bugs.webkit.org/show_bug.cgi?id=196180

Reviewed by Youenn Fablet.

Unlike many PassKit interactions, it's ok to call +[PKPaymentRequest availableNetworks]
without an entitlement. Therefore, we can call it from the web process directly rather than
synchronously messaging the entitled UI or networking process.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.h:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::WebPaymentCoordinator::availablePaymentNetworks):

  • WebProcess/ApplePay/WebPaymentCoordinator.h:
  • WebProcess/ApplePay/cocoa/WebPaymentCoordinatorCocoa.mm: Added.

(WebKit::WebPaymentCoordinator::platformAvailablePaymentNetworks const):

  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:

(-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):
(-[WKAccessibilityWebPageObjectBase setWebPage:]):

Location:
trunk/Source/WebKit
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r243439 r243443  
     12019-03-25  Andy Estes  <aestes@apple.com>
     2
     3        [Apple Pay] Remove the AvailablePaymentNetworks synchronous message
     4        https://bugs.webkit.org/show_bug.cgi?id=196180
     5
     6        Reviewed by Youenn Fablet.
     7
     8        Unlike many PassKit interactions, it's ok to call +[PKPaymentRequest availableNetworks]
     9        without an entitlement. Therefore, we can call it from the web process directly rather than
     10        synchronously messaging the entitled UI or networking process.
     11
     12        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
     13        * Shared/ApplePay/WebPaymentCoordinatorProxy.h:
     14        * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
     15        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
     16        * SourcesCocoa.txt:
     17        * WebKit.xcodeproj/project.pbxproj:
     18        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
     19        (WebKit::WebPaymentCoordinator::availablePaymentNetworks):
     20        * WebProcess/ApplePay/WebPaymentCoordinator.h:
     21        * WebProcess/ApplePay/cocoa/WebPaymentCoordinatorCocoa.mm: Added.
     22        (WebKit::WebPaymentCoordinator::platformAvailablePaymentNetworks const):
     23        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
     24        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):
     25        (-[WKAccessibilityWebPageObjectBase setWebPage:]):
     26
    1272019-03-25  Chris Dumez  <cdumez@apple.com>
    228
  • trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.cpp

    r242748 r243443  
    6969}
    7070
    71 void WebPaymentCoordinatorProxy::availablePaymentNetworks(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
    72 {
    73     completionHandler(platformAvailablePaymentNetworks());
    74 }
    75 
    7671void WebPaymentCoordinatorProxy::canMakePayments(CompletionHandler<void(bool)>&& reply)
    7772{
  • trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h

    r242748 r243443  
    112112
    113113    // Message handlers
    114     void availablePaymentNetworks(CompletionHandler<void(Vector<String>&&)>&&);
    115114    void canMakePayments(CompletionHandler<void(bool)>&&);
    116115    void canMakePaymentsWithActiveCard(const String& merchantIdentifier, const String& domainName, PAL::SessionID, CompletionHandler<void(bool)>&&);
     
    134133    void hidePaymentUI();
    135134
    136     Vector<String> platformAvailablePaymentNetworks();
    137135    bool platformCanMakePayments();
    138136    void platformCanMakePaymentsWithActiveCard(const String& merchantIdentifier, const String& domainName, PAL::SessionID, WTF::Function<void(bool)>&& completionHandler);
  • trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in

    r243345 r243443  
    2727messages -> WebPaymentCoordinatorProxy {
    2828
    29     AvailablePaymentNetworks() -> (Vector<String> availablePaymentNetworks) Synchronous
    3029    CanMakePayments() -> (bool result) Synchronous
    3130    CanMakePaymentsWithActiveCard(String merchantIdentifier, String domainName, PAL::SessionID sessionID) -> (bool canMakePayments) Async
  • trunk/Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm

    r243412 r243443  
    350350}
    351351
    352 Vector<String> WebPaymentCoordinatorProxy::platformAvailablePaymentNetworks()
    353 {
    354 #if PLATFORM(MAC)
    355     if (!PAL::isPassKitFrameworkAvailable())
    356         return { };
    357 #endif
    358 
    359     NSArray<PKPaymentNetwork> *availableNetworks = [PAL::getPKPaymentRequestClass() availableNetworks];
    360     Vector<String> result;
    361     result.reserveInitialCapacity(availableNetworks.count);
    362     for (PKPaymentNetwork network in availableNetworks)
    363         result.uncheckedAppend(network);
    364     return result;
    365 }
    366 
    367352} // namespace WebKit
    368353
  • trunk/Source/WebKit/SourcesCocoa.txt

    r243427 r243443  
    495495WebProcess/ApplePay/WebPaymentCoordinator.cpp
    496496
     497WebProcess/ApplePay/cocoa/WebPaymentCoordinatorCocoa.mm
     498
    497499WebProcess/cocoa/PlaybackSessionManager.mm
    498500WebProcess/cocoa/UserMediaCaptureManager.cpp
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r243427 r243443  
    39043904                A1A4FE6018DD54A400B5EA8A /* _WKDownloadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKDownloadDelegate.h; sourceTree = "<group>"; };
    39053905                A1B89B92221E023300EB4CEA /* SDKVariant.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = SDKVariant.xcconfig; sourceTree = "<group>"; };
     3906                A1B9CA382246E54A003D6DCA /* WebPaymentCoordinatorCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPaymentCoordinatorCocoa.mm; sourceTree = "<group>"; };
    39063907                A1C512C6190656E500448914 /* WebPreviewLoaderClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebPreviewLoaderClient.cpp; path = ios/WebPreviewLoaderClient.cpp; sourceTree = "<group>"; };
    39073908                A1C512C7190656E500448914 /* WebPreviewLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebPreviewLoaderClient.h; path = ios/WebPreviewLoaderClient.h; sourceTree = "<group>"; };
     
    52975298                        isa = PBXGroup;
    52985299                        children = (
     5300                                A1B9CA372246E525003D6DCA /* cocoa */,
    52995301                                1AB1F7711D1B2F7E007C9BD1 /* WebPaymentCoordinator.cpp */,
    53005302                                1AB1F7721D1B2F7E007C9BD1 /* WebPaymentCoordinator.h */,
     
    71897191                        );
    71907192                        path = ios;
     7193                        sourceTree = "<group>";
     7194                };
     7195                A1B9CA372246E525003D6DCA /* cocoa */ = {
     7196                        isa = PBXGroup;
     7197                        children = (
     7198                                A1B9CA382246E54A003D6DCA /* WebPaymentCoordinatorCocoa.mm */,
     7199                        );
     7200                        path = cocoa;
    71917201                        sourceTree = "<group>";
    71927202                };
  • trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.cpp

    r243324 r243443  
    6060}
    6161
    62 const WebPaymentCoordinator::AvailablePaymentNetworksSet& WebPaymentCoordinator::availablePaymentNetworks()
    63 {
    64     if (m_availablePaymentNetworks)
    65         return *m_availablePaymentNetworks;
    66 
    67     m_availablePaymentNetworks = WebPaymentCoordinator::AvailablePaymentNetworksSet();
    68 
    69     Vector<String> availablePaymentNetworks;
    70     using AvailablePaymentNetworksMessage = Messages::WebPaymentCoordinatorProxy::AvailablePaymentNetworks;
    71     if (sendSync(AvailablePaymentNetworksMessage(), AvailablePaymentNetworksMessage::Reply(availablePaymentNetworks))) {
    72         for (auto& network : availablePaymentNetworks)
    73             m_availablePaymentNetworks->add(network);
    74     }
    75 
    76     return *m_availablePaymentNetworks;
    77 }
    78 
    7962Optional<String> WebPaymentCoordinator::validatedPaymentNetwork(const String& paymentNetwork)
    8063{
    81     auto& paymentNetworks = availablePaymentNetworks();
    82     auto result = paymentNetworks.find(paymentNetwork);
    83     if (result == paymentNetworks.end())
     64    if (!m_availablePaymentNetworks)
     65        m_availablePaymentNetworks = platformAvailablePaymentNetworks();
     66
     67    auto result = m_availablePaymentNetworks->find(paymentNetwork);
     68    if (result == m_availablePaymentNetworks->end())
    8469        return WTF::nullopt;
    8570    return *result;
  • trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.h

    r243324 r243443  
    103103
    104104    using AvailablePaymentNetworksSet = HashSet<String, ASCIICaseInsensitiveHash>;
    105     const AvailablePaymentNetworksSet& availablePaymentNetworks();
     105    static AvailablePaymentNetworksSet platformAvailablePaymentNetworks();
    106106
    107107    WebPage& m_webPage;
  • trunk/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm

    r241321 r243443  
    4444#import <WebCore/Scrollbar.h>
    4545#import <wtf/ObjCRuntimeExtras.h>
    46 
    47 using namespace WebKit;
    4846
    4947@implementation WKAccessibilityWebPageObjectBase
     
    133131#endif
    134132
    135     if (AXObjectCache* cache = [self axObjectCache]) {
     133    if (auto cache = [self axObjectCache]) {
    136134        if (WebCore::AccessibilityObject* root = cache->rootObject())
    137135            return root->wrapper();
     
    141139}
    142140
    143 - (void)setWebPage:(WebPage*)page
     141- (void)setWebPage:(WebKit::WebPage*)page
    144142{
    145143    m_page = page;
Note: See TracChangeset for help on using the changeset viewer.