Changeset 196310 in webkit
- Timestamp:
- Feb 9, 2016 9:13:27 AM (8 years ago)
- Location:
- trunk/Source/WebKit/mac
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/mac/ChangeLog
r196267 r196310 1 2016-02-09 Eric Carlson <eric.carlson@apple.com> 2 3 checkValidity() sometimes asserts in WebUserMediaClient::pageDestroyed 4 https://bugs.webkit.org/show_bug.cgi?id=154029 5 <rdar://problem/24065022> 6 7 Reviewed by Alex Christensen. 8 9 * WebCoreSupport/WebUserMediaClient.mm: 10 (WebUserMediaClient::pageDestroyed): Copy map keys to a vector and clear the map before 11 enumerating the vector and canceling the requests. ASSERT that the map is not modified 12 during cleanup. Clean up the permission check map. 13 (WebUserMediaClient::requestUserMediaAccess): Add the request to the map before calling the 14 UI delegate in case it works synchronously (as it does in DRT). 15 (WebUserMediaClient::checkUserMediaPermission): Ditto. 16 (WebUserMediaClient::cancelUserMediaPermissionCheck): White-space cleanup. 17 (-[WebUserMediaPolicyListener allow]): Ditto. 18 1 19 2016-02-08 Anders Carlsson <andersca@apple.com> 2 20 -
trunk/Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm
r194987 r196310 1 1 /* 2 * Copyright (C) 2013 Apple Inc. All rights reserved.2 * Copyright (C) 2013-2016 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 97 97 } 98 98 99 100 99 WebUserMediaClient::WebUserMediaClient(WebView* webView) 101 100 : m_webView(webView) … … 109 108 void WebUserMediaClient::pageDestroyed() 110 109 { 111 UserMediaRequestsMap& requestsMap = userMediaRequestsMap(); 112 for (UserMediaRequestsMap::iterator it = requestsMap.begin(); it != requestsMap.end(); ++it) { 113 [it->value cancelUserMediaAccessRequest]; 114 requestsMap.remove(it); 115 } 110 auto& requestsMap = userMediaRequestsMap(); 111 Vector<RetainPtr<WebUserMediaPolicyListener>> pendingRequests; 112 copyValuesToVector(requestsMap, pendingRequests); 113 requestsMap.clear(); 114 115 for (auto& request : pendingRequests) 116 [request cancelUserMediaAccessRequest]; 117 118 ASSERT(userMediaRequestsMap().isEmpty()); 119 120 auto& checkMap = userMediaCheckMap(); 121 Vector<RetainPtr<WebUserMediaPolicyCheckerListener>> pendingChecks; 122 copyValuesToVector(checkMap, pendingChecks); 123 checkMap.clear(); 124 125 for (auto& check : pendingChecks) 126 [check cancelUserMediaPermissionCheck]; 127 128 ASSERT(userMediaCheckMap().isEmpty()); 116 129 117 130 delete this; … … 131 144 WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:request.securityOrigin()]; 132 145 146 AddRequestToRequestMap(&request, listener); 133 147 CallUIDelegate(m_webView, selector, webOrigin, listener); 134 AddRequestToRequestMap(&request, listener);135 148 136 149 [webOrigin release]; … … 164 177 WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:request.securityOrigin()]; 165 178 179 AddPermissionCheckToMap(&request, listener); 166 180 CallUIDelegate(m_webView, selector, webOrigin, listener); 167 AddPermissionCheckToMap(&request, listener);168 181 169 182 [webOrigin release]; … … 172 185 END_BLOCK_OBJC_EXCEPTIONS; 173 186 } 174 175 187 176 188 void WebUserMediaClient::cancelUserMediaPermissionCheck(WebCore::UserMediaPermissionCheck& request) … … 216 228 217 229 _request->userMediaAccessGranted(_request->allowedAudioDeviceUID(), _request->allowedVideoDeviceUID()); 218 219 230 RemoveRequestFromRequestMap(_request.get()); 220 231 #endif
Note: See TracChangeset
for help on using the changeset viewer.