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

Changeset 242848 in webkit


Ignore:
Timestamp:
Mar 13, 2019, 1:24:09 AM (7 years ago)
Author:
bshafiei@apple.com
Message:

Cherry-pick r241002. rdar://problem/48839377

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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241002 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Location:
branches/safari-607-branch/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-607-branch/Source/WebKit/ChangeLog

    r242845 r242848  
     12019-03-13  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Cherry-pick r241002. rdar://problem/48839377
     4
     5    UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
     6    https://bugs.webkit.org/show_bug.cgi?id=194246
     7   
     8    Reviewed by Eric Carlson.
     9   
     10    With PSON enabled, the manager proxy can be destroyed.
     11    It is thus important for its callbacks to check for 'this' to be valid.
     12   
     13    * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
     14    (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
     15    (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
     16    (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
     17   
     18   
     19    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241002 268f45cc-cd09-0410-ab3c-d52691b4dbfc
     20
     21    2019-02-05  Youenn Fablet  <youenn@apple.com>
     22
     23            UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
     24            https://bugs.webkit.org/show_bug.cgi?id=194246
     25
     26            Reviewed by Eric Carlson.
     27
     28            With PSON enabled, the manager proxy can be destroyed.
     29            It is thus important for its callbacks to check for 'this' to be valid.
     30
     31            * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
     32            (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
     33            (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
     34            (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
     35
    1362019-03-12  Kocsen Chung  <kocsen_chung@apple.com>
    237
  • branches/safari-607-branch/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

    r241050 r242848  
    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);
     
    384386
    385387    auto requestID = generateRequestID();
    386     auto havePermissionInfoHandler = [this, requestID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), localUserRequest = userRequest](bool originHasPersistentAccess) mutable {
     388    auto havePermissionInfoHandler = [this, weakThis = makeWeakPtr(*this), requestID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), localUserRequest = userRequest](bool originHasPersistentAccess) mutable {
     389        if (!weakThis)
     390            return;
    387391
    388392        auto pendingRequest = m_pendingDeviceRequests.take(requestID);
     
    456460
    457461    auto requestID = generateRequestID();
    458     auto completionHandler = [this, requestID, userMediaID, requestOrigin = userMediaDocumentOrigin.copyRef(), topOrigin = topLevelDocumentOrigin.copyRef()](bool originHasPersistentAccess) {
     462    auto completionHandler = [this, weakThis = makeWeakPtr(*this), requestID, userMediaID, requestOrigin = userMediaDocumentOrigin.copyRef(), topOrigin = topLevelDocumentOrigin.copyRef()](bool originHasPersistentAccess) mutable {
     463        if (!weakThis)
     464            return;
    459465
    460466        if (!m_page.isValid())
    461467            return;
    462468
    463         m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin.get(), topOrigin.get(), [this, weakThis = makeWeakPtr(*this), requestID, userMediaID, &originHasPersistentAccess] (String&& deviceIDHashSalt) {
     469        m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin.get(), topOrigin.get(), [this, weakThis = WTFMove(weakThis), requestID, userMediaID, &originHasPersistentAccess] (String&& deviceIDHashSalt) {
    464470            if (!weakThis)
    465471                return;
Note: See TracChangeset for help on using the changeset viewer.