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

Changeset 241002 in webkit


Ignore:
Timestamp:
Feb 5, 2019, 4:49:48 PM (8 years ago)
Author:
youenn@apple.com
Message:

UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
https://bugs.webkit.org/show_bug.cgi?id=194246

Reviewed by Eric Carlson.

With PSON enabled, the manager proxy can be destroyed.
It is thus important for its callbacks to check for 'this' to be valid.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r241001 r241002  
     12019-02-05  Youenn Fablet  <youenn@apple.com>
     2
     3        UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
     4        https://bugs.webkit.org/show_bug.cgi?id=194246
     5
     6        Reviewed by Eric Carlson.
     7
     8        With PSON enabled, the manager proxy can be destroyed.
     9        It is thus important for its callbacks to check for 'this' to be valid.
     10
     11        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
     12        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
     13        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
     14        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
     15
    1162019-02-05  Daniel Bates  <dabates@apple.com>
    217
  • trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

    r240100 r241002  
    9494
    9595    auto requestID = generateRequestID();
    96     auto handler = [this, requestID](bool originHasPersistentAccess) mutable {
     96    auto handler = [this, weakThis = makeWeakPtr(*this), requestID](bool originHasPersistentAccess) mutable {
     97        if (!weakThis)
     98            return;
    9799
    98100        auto pendingRequest = m_pendingDeviceRequests.take(requestID);
     
    392394
    393395    auto requestID = generateRequestID();
    394     auto havePermissionInfoHandler = [this, requestID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), localUserRequest = userRequest](bool originHasPersistentAccess) mutable {
     396    auto havePermissionInfoHandler = [this, weakThis = makeWeakPtr(*this), requestID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), localUserRequest = userRequest](bool originHasPersistentAccess) mutable {
     397        if (!weakThis)
     398            return;
    395399
    396400        auto pendingRequest = m_pendingDeviceRequests.take(requestID);
     
    468472
    469473    auto requestID = generateRequestID();
    470     auto completionHandler = [this, requestID, userMediaID, requestOrigin = userMediaDocumentOrigin.copyRef(), topOrigin = topLevelDocumentOrigin.copyRef()](bool originHasPersistentAccess) {
     474    auto completionHandler = [this, weakThis = makeWeakPtr(*this), requestID, userMediaID, requestOrigin = userMediaDocumentOrigin.copyRef(), topOrigin = topLevelDocumentOrigin.copyRef()](bool originHasPersistentAccess) mutable {
     475        if (!weakThis)
     476            return;
    471477
    472478        if (!m_page.isValid())
    473479            return;
    474480
    475         m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin.get(), topOrigin.get(), [this, weakThis = makeWeakPtr(*this), requestID, userMediaID, &originHasPersistentAccess] (String&& deviceIDHashSalt) {
     481        m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin.get(), topOrigin.get(), [this, weakThis = WTFMove(weakThis), requestID, userMediaID, &originHasPersistentAccess] (String&& deviceIDHashSalt) {
    476482            if (!weakThis)
    477483                return;
Note: See TracChangeset for help on using the changeset viewer.