Changeset 246185 in webkit


Ignore:
Timestamp:
Jun 6, 2019 8:29:01 PM (5 years ago)
Author:
youenn@apple.com
Message:

Use an enumeration in UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo callback
https://bugs.webkit.org/show_bug.cgi?id=198548

Reviewed by Eric Carlson.

Move from an Optional<bool> to an enum having three values to ease readability.

  • UIProcess/UserMediaPermissionCheckProxy.cpp:

(WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
(WebKit::UserMediaPermissionCheckProxy::complete):

  • UIProcess/UserMediaPermissionCheckProxy.h:

(WebKit::UserMediaPermissionCheckProxy::invalidate):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r246184 r246185  
     12019-06-06  Youenn Fablet  <youenn@apple.com>
     2
     3        Use an enumeration in UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo callback
     4        https://bugs.webkit.org/show_bug.cgi?id=198548
     5
     6        Reviewed by Eric Carlson.
     7
     8        Move from an Optional<bool> to an enum having three values to ease readability.
     9
     10        * UIProcess/UserMediaPermissionCheckProxy.cpp:
     11        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
     12        (WebKit::UserMediaPermissionCheckProxy::complete):
     13        * UIProcess/UserMediaPermissionCheckProxy.h:
     14        (WebKit::UserMediaPermissionCheckProxy::invalidate):
     15        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
     16        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
     17        (WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest):
     18        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
     19        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
     20        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
     21
    1222019-06-06  Youenn Fablet  <youenn@apple.com>
    223
  • trunk/Source/WebKit/UIProcess/UserMediaPermissionCheckProxy.cpp

    r241270 r246185  
    5050{
    5151    ASSERT(m_completionHandler);
    52     complete(allowed);
     52    complete(allowed ? PermissionInfo::Granted : PermissionInfo::Unknown);
    5353}
    5454
    55 void UserMediaPermissionCheckProxy::complete(Optional<bool> allowed)
     55void UserMediaPermissionCheckProxy::complete(PermissionInfo info)
    5656{
    5757    if (!m_completionHandler)
     
    5959
    6060    auto completionHandler = WTFMove(m_completionHandler);
    61     completionHandler(allowed);
     61    completionHandler(info);
    6262}
    6363
  • trunk/Source/WebKit/UIProcess/UserMediaPermissionCheckProxy.h

    r241270 r246185  
    3939class UserMediaPermissionCheckProxy : public API::ObjectImpl<API::Object::Type::UserMediaPermissionCheck> {
    4040public:
    41 
    42     using CompletionHandler = WTF::CompletionHandler<void(Optional<bool> allowed)>;
     41    enum class PermissionInfo { Error, Unknown, Granted };
     42    using CompletionHandler = WTF::CompletionHandler<void(PermissionInfo)>;
    4343
    4444    static Ref<UserMediaPermissionCheckProxy> create(uint64_t frameID, CompletionHandler&& handler, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin)
     
    4949    void deny() { setUserMediaAccessInfo(false); }
    5050    void setUserMediaAccessInfo(bool);
    51     void invalidate() { complete({ }); }
     51    void invalidate() { complete(PermissionInfo::Error); }
    5252
    5353    uint64_t frameID() const { return m_frameID; }
     
    5959    ~UserMediaPermissionCheckProxy();
    6060
    61     void complete(Optional<bool> allowed);
     61    void complete(PermissionInfo);
    6262   
    6363    uint64_t m_frameID;
  • trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

    r246125 r246185  
    122122        return;
    123123
    124     auto handler = [this](Optional<bool> originHasPersistentAccess) mutable {
    125         if (!originHasPersistentAccess || !m_page.hasRunningProcess())
    126             return;
    127 
    128         if (m_grantedRequests.isEmpty() && !*originHasPersistentAccess)
     124    auto handler = [this](PermissionInfo permissionInfo) mutable {
     125        switch (permissionInfo) {
     126        case PermissionInfo::Error:
     127            return;
     128        case PermissionInfo::Unknown:
     129            if (m_grantedRequests.isEmpty())
     130                return;
     131            break;
     132        case PermissionInfo::Granted:
     133            break;
     134        }
     135        if (!m_page.hasRunningProcess())
    129136            return;
    130137
     
    380387    auto& userMediaDocumentSecurityOrigin = m_currentUserMediaRequest->userMediaDocumentSecurityOrigin();
    381388    auto& topLevelDocumentSecurityOrigin = m_currentUserMediaRequest->topLevelDocumentSecurityOrigin();
    382     getUserMediaPermissionInfo(m_currentUserMediaRequest->frameID(), userMediaDocumentSecurityOrigin, topLevelDocumentSecurityOrigin, [this, request = m_currentUserMediaRequest](Optional<bool> hasPersistentAccess) mutable {
     389    getUserMediaPermissionInfo(m_currentUserMediaRequest->frameID(), userMediaDocumentSecurityOrigin, topLevelDocumentSecurityOrigin, [this, request = m_currentUserMediaRequest](auto permissionInfo) mutable {
    383390        if (!request->isPending())
    384391            return;
    385392
    386         if (!hasPersistentAccess) {
    387             denyRequest(*m_currentUserMediaRequest, UserMediaPermissionRequestProxy::UserMediaAccessDenialReason::OtherFailure);
    388             return;
     393        switch (permissionInfo) {
     394        case PermissionInfo::Error:
     395            this->denyRequest(*m_currentUserMediaRequest, UserMediaPermissionRequestProxy::UserMediaAccessDenialReason::OtherFailure);
     396            return;
     397        case PermissionInfo::Unknown:
     398            break;
     399        case PermissionInfo::Granted:
     400            m_currentUserMediaRequest->setHasPersistentAccess();
     401            break;
    389402        }
    390 
    391         ALWAYS_LOG(LOGIDENTIFIER, m_currentUserMediaRequest->userMediaID(), ", persistent access: ", *hasPersistentAccess);
    392         processUserMediaPermissionRequest(*hasPersistentAccess);
     403        this->processUserMediaPermissionRequest();
    393404    });
    394405}
    395406
    396 void UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest(bool hasPersistentAccess)
    397 {
    398     ALWAYS_LOG(LOGIDENTIFIER, m_currentUserMediaRequest->userMediaID());
    399 
    400     if (hasPersistentAccess)
    401         m_currentUserMediaRequest->setHasPersistentAccess();
     407void UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest()
     408{
     409    ALWAYS_LOG(LOGIDENTIFIER, m_currentUserMediaRequest->userMediaID(), ", persistent access: ", m_currentUserMediaRequest->hasPersistentAccess());
    402410
    403411    auto& userMediaDocumentSecurityOrigin = m_currentUserMediaRequest->userMediaDocumentSecurityOrigin();
     
    505513}
    506514
    507 void UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo(uint64_t frameID, Ref<SecurityOrigin>&& userMediaDocumentOrigin, Ref<SecurityOrigin>&& topLevelDocumentOrigin, CompletionHandler<void(Optional<bool>)>&& handler)
     515void UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo(uint64_t frameID, Ref<SecurityOrigin>&& userMediaDocumentOrigin, Ref<SecurityOrigin>&& topLevelDocumentOrigin, CompletionHandler<void(PermissionInfo)>&& handler)
    508516{
    509517    auto* webFrame = m_page.process().webFrame(frameID);
     
    519527    m_pendingDeviceRequests.add(requestID);
    520528
    521     auto request = UserMediaPermissionCheckProxy::create(frameID, [this, weakThis = makeWeakPtr(*this), requestID, handler = WTFMove(handler)](Optional<bool> allowed) mutable {
    522         if (!weakThis || !m_pendingDeviceRequests.remove(requestID) || !allowed) {
    523             handler({ });
    524             return;
    525         }
    526         handler(*allowed);
     529    auto request = UserMediaPermissionCheckProxy::create(frameID, [this, weakThis = makeWeakPtr(*this), requestID, handler = WTFMove(handler)](auto permissionInfo) mutable {
     530        if (!weakThis || !m_pendingDeviceRequests.remove(requestID))
     531            permissionInfo = PermissionInfo::Error;
     532        handler(permissionInfo);
    527533    }, WTFMove(userMediaDocumentOrigin), WTFMove(topLevelDocumentOrigin));
    528534
     
    595601    ALWAYS_LOG(LOGIDENTIFIER, userMediaID);
    596602
    597     auto completionHandler = [this, userMediaID, frameID, userMediaDocumentOrigin = userMediaDocumentOrigin.copyRef(), topLevelDocumentOrigin = topLevelDocumentOrigin.copyRef()](Optional<bool> originHasPersistentAccess) mutable {
    598         if (!originHasPersistentAccess)
    599             return;
     603    auto completionHandler = [this, userMediaID, frameID, userMediaDocumentOrigin = userMediaDocumentOrigin.copyRef(), topLevelDocumentOrigin = topLevelDocumentOrigin.copyRef()](PermissionInfo permissionInfo) mutable {
     604
     605        bool originHasPersistentAccess;
     606        switch (permissionInfo) {
     607        case PermissionInfo::Error:
     608            return;
     609        case PermissionInfo::Unknown:
     610            originHasPersistentAccess = false;
     611            break;
     612        case PermissionInfo::Granted:
     613            originHasPersistentAccess = true;
     614            break;
     615        }
    600616
    601617        if (!m_page.hasRunningProcess())
     
    607623        auto& requestOrigin = userMediaDocumentOrigin.get();
    608624        auto& topOrigin = topLevelDocumentOrigin.get();
    609         m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin, topOrigin, [this, weakThis = makeWeakPtr(*this), requestID, frameID, userMediaID, userMediaDocumentOrigin = WTFMove(userMediaDocumentOrigin), topLevelDocumentOrigin = WTFMove(topLevelDocumentOrigin), originHasPersistentAccess = *originHasPersistentAccess] (String&& deviceIDHashSalt) {
     625        m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin, topOrigin, [this, weakThis = makeWeakPtr(*this), requestID, frameID, userMediaID, userMediaDocumentOrigin = WTFMove(userMediaDocumentOrigin), topLevelDocumentOrigin = WTFMove(topLevelDocumentOrigin), originHasPersistentAccess] (String&& deviceIDHashSalt) {
    610626            if (!weakThis || !m_pendingDeviceRequests.remove(requestID))
    611627                return;
  • trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h

    r246093 r246185  
    101101    bool wasRequestDenied(uint64_t mainFrameID, const WebCore::SecurityOrigin& userMediaDocumentOrigin, const WebCore::SecurityOrigin& topLevelDocumentOrigin, bool needsAudio, bool needsVideo, bool needsScreenCapture);
    102102
    103     void getUserMediaPermissionInfo(uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, CompletionHandler<void(Optional<bool>)>&&);
     103    using PermissionInfo = UserMediaPermissionCheckProxy::PermissionInfo;
     104    void getUserMediaPermissionInfo(uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, CompletionHandler<void(PermissionInfo)>&&);
    104105
    105106    RequestAction getRequestAction(const UserMediaPermissionRequestProxy&);
     
    109110    Vector<WebCore::CaptureDevice> computeFilteredDeviceList(bool revealIdsAndLabels, const String& deviceIDHashSalt);
    110111
    111     void processUserMediaPermissionRequest(bool hasPersistentAccess);
     112    void processUserMediaPermissionRequest();
    112113    void processUserMediaPermissionInvalidRequest(const String& invalidConstraint);
    113114    void processUserMediaPermissionValidRequest(Vector<WebCore::CaptureDevice>&& audioDevices, Vector<WebCore::CaptureDevice>&& videoDevices, String&& deviceIdentifierHashSalt);
Note: See TracChangeset for help on using the changeset viewer.