Changeset 263658 in webkit
- Timestamp:
- Jun 29, 2020 5:06:44 AM (4 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r263657 r263658 1 2020-06-29 Xabier Rodriguez Calvar <calvaris@igalia.com> 2 3 [GStreamer] imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.https.html is a flaky crash 4 https://bugs.webkit.org/show_bug.cgi?id=213385 5 6 Reviewed by Philippe Normand. 7 8 * platform/glib/TestExpectations: Removed test from expectations. 9 1 10 2020-06-29 Xabier Rodriguez Calvar <calvaris@igalia.com> 2 11 -
trunk/LayoutTests/platform/glib/TestExpectations
r263643 r263658 387 387 webkit.org/b/178707 imported/w3c/web-platform-tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html [ Skip ] 388 388 webkit.org/b/213364 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements.https.html [ Crash Pass ] 389 webkit.org/b/213385 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.https.html [ Crash Pass ]390 389 391 390 imported/w3c/web-platform-tests/encrypted-media/clearkey-check-encryption-scheme.https.html [ Pass ] -
trunk/Source/WebCore/ChangeLog
r263656 r263658 1 2020-06-29 Xabier Rodriguez Calvar <calvaris@igalia.com> 2 3 [GStreamer] imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.https.html is a flaky crash 4 https://bugs.webkit.org/show_bug.cgi?id=213385 5 6 Reviewed by Philippe Normand. 7 8 Add a way to release the decryption resources when the player 9 private is destroyed. That way we can release the secure memory 10 allocated by libgcrypt and allow for more tests to get, which 11 caused the crash. 12 13 Tests: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.https.html. 14 15 * platform/encryptedmedia/CDMProxy.h: 16 (WebCore::CDMProxy::releaseDecryptionResources): 17 (WebCore::CDMInstanceSessionProxy::releaseDecryptionResources): 18 (WebCore::CDMInstanceProxy::releaseDecryptionResources): 19 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 20 (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): 21 * platform/graphics/gstreamer/eme/CDMProxyClearKey.cpp: 22 (WebCore::CDMProxyClearKey::~CDMProxyClearKey): 23 (WebCore::CDMProxyClearKey::releaseDecryptionResources): 24 (WebCore::CDMProxyClearKey::closeGCryptHandle): 25 * platform/graphics/gstreamer/eme/CDMProxyClearKey.h: 26 1 27 2020-06-29 Alicia Boya García <aboya@igalia.com> 2 28 -
trunk/Source/WebCore/platform/encryptedmedia/CDMProxy.h
r263087 r263658 137 137 void setInstance(CDMInstanceProxy*); 138 138 139 virtual void releaseDecryptionResources() 140 { 141 ASSERT(isMainThread()); 142 m_keyStore.removeAllKeys(); 143 } 144 139 145 protected: 140 146 Vector<uint8_t> keyValue(const Vector<uint8_t>& keyID) const; … … 180 186 181 187 class CDMInstanceSessionProxy : public CDMInstanceSession, public CanMakeWeakPtr<CDMInstanceSessionProxy, WeakPtrFactoryInitialization::Eager> { 188 public: 189 virtual void releaseDecryptionResources() { } 182 190 }; 183 191 … … 207 215 void startedWaitingForKey(); 208 216 void stoppedWaitingForKey(); 217 218 virtual void releaseDecryptionResources() 219 { 220 ASSERT(isMainThread()); 221 m_keyStore.removeAllKeys(); 222 for (auto& session : m_sessions) 223 session.releaseDecryptionResources(); 224 m_sessions.clear(); 225 if (m_cdmProxy) { 226 m_cdmProxy->releaseDecryptionResources(); 227 m_cdmProxy = nullptr; 228 } 229 } 209 230 210 231 protected: -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r263504 r263658 291 291 if (m_pipeline) 292 292 gst_element_set_state(m_pipeline.get(), GST_STATE_NULL); 293 294 #if ENABLE(ENCRYPTED_MEDIA) 295 { 296 LockHolder lock(m_cdmAttachmentMutex); 297 if (m_cdmInstance) 298 m_cdmInstance->releaseDecryptionResources(); 299 } 300 #endif 293 301 294 302 m_player = nullptr; -
trunk/Source/WebCore/platform/graphics/gstreamer/eme/CDMProxyClearKey.cpp
r263087 r263658 85 85 CDMProxyClearKey::~CDMProxyClearKey() 86 86 { 87 if (m_gCryptHandle) 88 gcry_cipher_close(*m_gCryptHandle); 87 closeGCryptHandle(); 89 88 } 90 89 … … 214 213 } 215 214 215 void CDMProxyClearKey::releaseDecryptionResources() 216 { 217 closeGCryptHandle(); 218 CDMProxy::releaseDecryptionResources(); 219 } 220 221 void CDMProxyClearKey::closeGCryptHandle() 222 { 223 if (m_gCryptHandle) { 224 gcry_cipher_close(*m_gCryptHandle); 225 m_gCryptHandle.reset(); 226 } 227 } 228 216 229 gcry_cipher_hd_t& CDMProxyClearKey::gCryptHandle() 217 230 { -
trunk/Source/WebCore/platform/graphics/gstreamer/eme/CDMProxyClearKey.h
r263087 r263658 112 112 bool cencDecryptSubsampled(cencDecryptContext&); 113 113 114 void releaseDecryptionResources() final; 115 void closeGCryptHandle(); 116 114 117 // FIXME: It would be nice to use something in WebCore for crypto... 115 118 Optional<gcry_cipher_hd_t> m_gCryptHandle { WTF::nullopt };
Note: See TracChangeset
for help on using the changeset viewer.