Diff
Modified: trunk/Source/WebCore/ChangeLog (278480 => 278481)
--- trunk/Source/WebCore/ChangeLog 2021-06-04 19:03:13 UTC (rev 278480)
+++ trunk/Source/WebCore/ChangeLog 2021-06-04 19:11:56 UTC (rev 278481)
@@ -1,5 +1,24 @@
2021-06-04 Chris Dumez <[email protected]>
+ Port MediaKeySystemAccess & MediaCapabilities to the HTML event loop
+ https://bugs.webkit.org/show_bug.cgi?id=226646
+
+ Reviewed by Eric Carlson.
+
+ Port MediaKeySystemAccess & MediaCapabilities to the HTML event loop instead of using
+ a global Timer. Most of the media code has been ported to the HTML event loop already.
+
+ * Modules/encryptedmedia/MediaKeySystemAccess.cpp:
+ (WebCore::MediaKeySystemAccess::createMediaKeys):
+ * Modules/encryptedmedia/MediaKeySystemAccess.h:
+ * Modules/mediacapabilities/MediaCapabilities.cpp:
+ (WebCore::MediaCapabilities::decodingInfo):
+ (WebCore::MediaCapabilities::encodingInfo):
+ * Modules/mediacapabilities/MediaCapabilities.h:
+ * Modules/mediacapabilities/MediaCapabilities.idl:
+
+2021-06-04 Chris Dumez <[email protected]>
+
DOMFileSystem::listDirectory() fails to protect |this| when going to the background thread
https://bugs.webkit.org/show_bug.cgi?id=226652
Modified: trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp (278480 => 278481)
--- trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp 2021-06-04 19:03:13 UTC (rev 278480)
+++ trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp 2021-06-04 19:11:56 UTC (rev 278481)
@@ -63,7 +63,7 @@
// When this method is invoked, the user agent must run the following steps:
// 1. Let promise be a new promise.
// 2. Run the following steps in parallel:
- m_taskQueue.enqueueTask([this, weakDocument = makeWeakPtr(document), promise = WTFMove(promise)] () mutable {
+ document.eventLoop().queueTask(TaskSource::MediaElement, [this, weakDocument = makeWeakPtr(document), promise = WTFMove(promise)] () mutable {
// 2.1. Let configuration be the value of this object's configuration value.
// 2.2. Let use distinctive identifier be true if the value of configuration's distinctiveIdentifier member is "required" and false otherwise.
bool useDistinctiveIdentifier = m_configuration->distinctiveIdentifier == MediaKeysRequirement::Required;
Modified: trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.h (278480 => 278481)
--- trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.h 2021-06-04 19:03:13 UTC (rev 278480)
+++ trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.h 2021-06-04 19:11:56 UTC (rev 278481)
@@ -30,7 +30,6 @@
#if ENABLE(ENCRYPTED_MEDIA)
-#include "GenericTaskQueue.h"
#include "MediaKeySystemConfiguration.h"
#include <wtf/RefCounted.h>
#include <wtf/text/WTFString.h>
@@ -57,7 +56,6 @@
String m_keySystem;
std::unique_ptr<MediaKeySystemConfiguration> m_configuration;
Ref<CDM> m_implementation;
- MainThreadTaskQueue m_taskQueue;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp (278480 => 278481)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp 2021-06-04 19:03:13 UTC (rev 278480)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp 2021-06-04 19:11:56 UTC (rev 278481)
@@ -194,7 +194,7 @@
// 4. Let p be a new promise.
// 5. In parallel, run the create a MediaCapabilitiesInfo algorithm with configuration and resolve p with its result.
// 6. Return p.
- m_taskQueue.enqueueTask([configuration = WTFMove(configuration), promise = WTFMove(promise), logger = WTFMove(logger), identifier = WTFMove(identifier)] () mutable {
+ document.eventLoop().queueTask(TaskSource::MediaElement, [configuration = WTFMove(configuration), promise = WTFMove(promise), logger = WTFMove(logger), identifier = WTFMove(identifier)] () mutable {
// 2.2.3 If configuration is of type MediaDecodingConfiguration, run the following substeps:
MediaEngineConfigurationFactory::DecodingConfigurationCallback callback = [promise = WTFMove(promise), logger = WTFMove(logger), identifier = WTFMove(identifier)] (auto info) mutable {
@@ -219,7 +219,7 @@
});
}
-void MediaCapabilities::encodingInfo(MediaEncodingConfiguration&& configuration, Ref<DeferredPromise>&& promise)
+void MediaCapabilities::encodingInfo(Document& document, MediaEncodingConfiguration&& configuration, Ref<DeferredPromise>&& promise)
{
// 2.4 Media Capabilities Interface
// https://wicg.github.io/media-capabilities/#media-capabilities-interface
@@ -235,7 +235,7 @@
// 4. Let p be a new promise.
// 5. In parallel, run the create a MediaCapabilitiesInfo algorithm with configuration and resolve p with its result.
// 6. Return p.
- m_taskQueue.enqueueTask([configuration = WTFMove(configuration), promise = WTFMove(promise)] () mutable {
+ document.eventLoop().queueTask(TaskSource::MediaElement, [configuration = WTFMove(configuration), promise = WTFMove(promise)] () mutable {
// 2.2.4. If configuration is of type MediaEncodingConfiguration, run the following substeps:
MediaEngineConfigurationFactory::EncodingConfigurationCallback callback = [promise = WTFMove(promise)] (auto info) mutable {
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.h (278480 => 278481)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.h 2021-06-04 19:03:13 UTC (rev 278480)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.h 2021-06-04 19:11:56 UTC (rev 278481)
@@ -25,7 +25,6 @@
#pragma once
-#include "GenericTaskQueue.h"
#include <wtf/RefCounted.h>
namespace WebCore {
@@ -38,10 +37,7 @@
class MediaCapabilities : public RefCounted<MediaCapabilities> {
public:
void decodingInfo(Document&, MediaDecodingConfiguration&&, Ref<DeferredPromise>&&);
- void encodingInfo(MediaEncodingConfiguration&&, Ref<DeferredPromise>&&);
-
-private:
- MainThreadTaskQueue m_taskQueue;
+ void encodingInfo(Document&, MediaEncodingConfiguration&&, Ref<DeferredPromise>&&);
};
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl (278480 => 278481)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl 2021-06-04 19:03:13 UTC (rev 278480)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl 2021-06-04 19:11:56 UTC (rev 278481)
@@ -30,5 +30,5 @@
Exposed=Window
] interface MediaCapabilities {
[CustomEnabled, CallWith=Document] Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration);
- [CustomEnabled] Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration);
+ [CustomEnabled, CallWith=Document] Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration);
};