WebKit Bugzilla
Attachment 361116 Details for
Bug 194246
: UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-194246-20190204155642.patch (text/plain), 3.99 KB, created by
youenn fablet
on 2019-02-04 15:56:42 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2019-02-04 15:56:42 PST
Size:
3.99 KB
patch
obsolete
>Subversion Revision: 240633 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 0dffba8b2e206f04a318af95f8ed4ae264aa972b..46195d82551b020313ea61dbf72d203979fed8e6 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,18 @@ >+2019-02-04 Youenn Fablet <youenn@apple.com> >+ >+ UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid >+ https://bugs.webkit.org/show_bug.cgi?id=194246 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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): >+ > 2019-01-30 Babak Shafiei <bshafiei@apple.com> > > Cherry-pick r240633. rdar://problem/47682687 >diff --git a/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp b/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp >index 7f17b2d3d57b8f8e5c56a3666ff2b7bb9ed6e856..1461d756ec995f714fcca4df8b86a874d0ad605f 100644 >--- a/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp >+++ b/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp >@@ -93,7 +93,9 @@ void UserMediaPermissionRequestManagerProxy::captureDevicesChanged() > return; > > auto requestID = generateRequestID(); >- auto handler = [this, requestID](bool originHasPersistentAccess) mutable { >+ auto handler = [this, weakThis = makeWeakPtr(*this), requestID](bool originHasPersistentAccess) mutable { >+ if (!weakThis) >+ return; > > auto pendingRequest = m_pendingDeviceRequests.take(requestID); > if (!pendingRequest || !m_page.isValid()) >@@ -383,7 +385,9 @@ void UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame( > }; > > auto requestID = generateRequestID(); >- auto havePermissionInfoHandler = [this, requestID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), localUserRequest = userRequest](bool originHasPersistentAccess) mutable { >+ auto havePermissionInfoHandler = [this, weakThis = makeWeakPtr(*this), requestID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), localUserRequest = userRequest](bool originHasPersistentAccess) mutable { >+ if (!weakThis) >+ return; > > auto pendingRequest = m_pendingDeviceRequests.take(requestID); > if (!pendingRequest) >@@ -455,12 +459,14 @@ void UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame(uint6 > static const int defaultMaximumMicrophoneCount = 1; > > auto requestID = generateRequestID(); >- auto completionHandler = [this, requestID, userMediaID, requestOrigin = userMediaDocumentOrigin.copyRef(), topOrigin = topLevelDocumentOrigin.copyRef()](bool originHasPersistentAccess) { >+ auto completionHandler = [this, weakThis = makeWeakPtr(*this), requestID, userMediaID, requestOrigin = userMediaDocumentOrigin.copyRef(), topOrigin = topLevelDocumentOrigin.copyRef()](bool originHasPersistentAccess) { >+ if (!weakThis) >+ return; > > if (!m_page.isValid()) > return; > >- m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin.get(), topOrigin.get(), [this, weakThis = makeWeakPtr(*this), requestID, userMediaID, &originHasPersistentAccess] (String&& deviceIDHashSalt) { >+ m_page.websiteDataStore().deviceIdHashSaltStorage().deviceIdHashSaltForOrigin(requestOrigin.get(), topOrigin.get(), [this, weakThis = WTFMove(weakThis), requestID, userMediaID, &originHasPersistentAccess] (String&& deviceIDHashSalt) { > if (!weakThis) > return; > auto pendingRequest = m_pendingDeviceRequests.take(requestID);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194246
:
361111
|
361116
|
361141