Diff
Modified: trunk/Source/WebCore/ChangeLog (241144 => 241145)
--- trunk/Source/WebCore/ChangeLog 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/ChangeLog 2019-02-07 22:52:15 UTC (rev 241145)
@@ -1,5 +1,34 @@
2019-02-07 Youenn Fablet <[email protected]>
+ Simplify applyConstraints callbacks
+ https://bugs.webkit.org/show_bug.cgi?id=194297
+
+ Reviewed by Eric Carlson.
+
+ Make use of one callback for both success and failure cases.
+ No changed of behavior.
+
+ * Modules/mediastream/MediaStreamTrack.cpp:
+ (WebCore::MediaStreamTrack::applyConstraints):
+ * platform/mediastream/MediaStreamTrackPrivate.cpp:
+ (WebCore::MediaStreamTrackPrivate::applyConstraints):
+ * platform/mediastream/MediaStreamTrackPrivate.h:
+ * platform/mediastream/RealtimeMediaSource.cpp:
+ (WebCore::RealtimeMediaSource::applyConstraints):
+ * platform/mediastream/RealtimeMediaSource.h:
+ * platform/mediastream/mac/AVVideoCaptureSource.mm:
+ (WebCore::AVVideoCaptureSource::create):
+ * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
+ (WebCore::CoreAudioCaptureSource::create):
+ * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
+ (WebCore::MockGStreamerAudioCaptureSource::applyConstraints):
+ * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:
+ * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
+ (WebCore::MockGStreamerVideoCaptureSource::applyConstraints):
+ * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:
+
+2019-02-07 Youenn Fablet <[email protected]>
+
Unable to sign in leetcode.
https://bugs.webkit.org/show_bug.cgi?id=194366
rdar://problem/47259025.
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (241144 => 241145)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -330,19 +330,17 @@
{
m_promise = WTFMove(promise);
- auto weakThis = makeWeakPtr(*this);
- auto failureHandler = [weakThis] (const String& failedConstraint, const String& message) {
- if (!weakThis || !weakThis->m_promise)
+ auto completionHandler = [this, weakThis = makeWeakPtr(*this), constraints](auto&& error) mutable {
+ if (!weakThis || !m_promise)
return;
- weakThis->m_promise->rejectType<IDLInterface<OverconstrainedError>>(OverconstrainedError::create(failedConstraint, message).get());
- };
- auto successHandler = [weakThis, constraints] () {
- if (!weakThis || !weakThis->m_promise)
+ if (error) {
+ m_promise->rejectType<IDLInterface<OverconstrainedError>>(OverconstrainedError::create(WTFMove(error->badConstraint), WTFMove(error->message)));
return;
- weakThis->m_promise->resolve();
- weakThis->m_constraints = constraints.valueOr(MediaTrackConstraints { });
+ }
+ m_promise->resolve();
+ m_constraints = constraints.valueOr(MediaTrackConstraints { });
};
- m_private->applyConstraints(createMediaConstraints(constraints), WTFMove(successHandler), WTFMove(failureHandler));
+ m_private->applyConstraints(createMediaConstraints(constraints), WTFMove(completionHandler));
}
void MediaStreamTrack::addObserver(Observer& observer)
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -170,9 +170,9 @@
return m_source->capabilities();
}
-void MediaStreamTrackPrivate::applyConstraints(const MediaConstraints& constraints, RealtimeMediaSource::SuccessHandler&& successHandler, RealtimeMediaSource::FailureHandler&& failureHandler)
+void MediaStreamTrackPrivate::applyConstraints(const MediaConstraints& constraints, RealtimeMediaSource::ApplyConstraintsHandler&& completionHandler)
{
- m_source->applyConstraints(constraints, WTFMove(successHandler), WTFMove(failureHandler));
+ m_source->applyConstraints(constraints, WTFMove(completionHandler));
}
AudioSourceProvider* MediaStreamTrackPrivate::audioSourceProvider()
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h 2019-02-07 22:52:15 UTC (rev 241145)
@@ -97,7 +97,7 @@
const RealtimeMediaSourceSettings& settings() const;
const RealtimeMediaSourceCapabilities& capabilities() const;
- void applyConstraints(const MediaConstraints&, RealtimeMediaSource::SuccessHandler&&, RealtimeMediaSource::FailureHandler&&);
+ void applyConstraints(const MediaConstraints&, RealtimeMediaSource::ApplyConstraintsHandler&&);
AudioSourceProvider* audioSourceProvider();
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -41,6 +41,7 @@
#include "NotImplemented.h"
#include "RealtimeMediaSourceCapabilities.h"
#include "RealtimeMediaSourceCenter.h"
+#include <wtf/CompletionHandler.h>
#include <wtf/MainThread.h>
#include <wtf/UUID.h>
#include <wtf/text/StringHash.h>
@@ -842,7 +843,7 @@
commitConfiguration();
}
-Optional<std::pair<String, String>> RealtimeMediaSource::applyConstraints(const MediaConstraints& constraints)
+Optional<RealtimeMediaSource::ApplyConstraintsError> RealtimeMediaSource::applyConstraints(const MediaConstraints& constraints)
{
ASSERT(constraints.isValid);
@@ -849,19 +850,15 @@
FlattenedConstraint candidates;
String failedConstraint;
if (!selectSettings(constraints, candidates, failedConstraint, SelectType::ForApplyConstraints))
- return { { failedConstraint, "Constraint not supported"_s } };
+ return ApplyConstraintsError { failedConstraint, "Constraint not supported"_s };
applyConstraints(candidates);
- return WTF::nullopt;
+ return { };
}
-void RealtimeMediaSource::applyConstraints(const MediaConstraints& constraints, SuccessHandler&& successHandler, FailureHandler&& failureHandler)
+void RealtimeMediaSource::applyConstraints(const MediaConstraints& constraints, ApplyConstraintsHandler&& completionHandler)
{
- auto result = applyConstraints(constraints);
- if (!result && successHandler)
- successHandler();
- else if (result && failureHandler)
- failureHandler(result.value().first, result.value().second);
+ completionHandler(applyConstraints(constraints));
}
void RealtimeMediaSource::setSize(const IntSize& size)
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h 2019-02-07 22:52:15 UTC (rev 241145)
@@ -150,10 +150,13 @@
virtual const RealtimeMediaSourceCapabilities& capabilities() = 0;
virtual const RealtimeMediaSourceSettings& settings() = 0;
- using SuccessHandler = WTF::Function<void()>;
- using FailureHandler = WTF::Function<void(const String& badConstraint, const String& errorString)>;
- virtual void applyConstraints(const MediaConstraints&, SuccessHandler&&, FailureHandler&&);
- Optional<std::pair<String, String>> applyConstraints(const MediaConstraints&);
+ struct ApplyConstraintsError {
+ String badConstraint;
+ String message;
+ };
+ using ApplyConstraintsHandler = CompletionHandler<void(Optional<ApplyConstraintsError>&&)>;
+ virtual void applyConstraints(const MediaConstraints&, ApplyConstraintsHandler&&);
+ Optional<ApplyConstraintsError> applyConstraints(const MediaConstraints&);
bool supportsConstraints(const MediaConstraints&, String&);
bool supportsConstraint(const MediaConstraint&);
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -78,9 +78,8 @@
auto source = adoptRef(*new GStreamerAudioCaptureSource(device.value(), WTFMove(hashSalt)));
if (constraints) {
- auto result = source->applyConstraints(*constraints);
- if (result)
- return WTFMove(result.value().first);
+ if (auto result = source->applyConstraints(*constraints))
+ return WTFMove(result->badConstraint);
}
return CaptureSourceOrError(WTFMove(source));
}
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -109,9 +109,8 @@
auto source = adoptRef(*new GStreamerVideoCaptureSource(device.value(), WTFMove(hashSalt)));
if (constraints) {
- auto result = source->applyConstraints(*constraints);
- if (result)
- return WTFMove(result.value().first);
+ if (auto result = source->applyConstraints(*constraints))
+ return WTFMove(result->badConstraint);
}
return CaptureSourceOrError(WTFMove(source));
}
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -141,15 +141,15 @@
return CaptureSourceOrError(WTFMove(source));
}
-Optional<std::pair<String, String>> MockGStreamerAudioCaptureSource::applyConstraints(const MediaConstraints& constraints)
+Optional<RealtimeMediaSource::ApplyConstraintsError> MockGStreamerAudioCaptureSource::applyConstraints(const MediaConstraints& constraints)
{
m_wrappedSource->applyConstraints(constraints);
return GStreamerAudioCaptureSource::applyConstraints(constraints);
}
-void MockGStreamerAudioCaptureSource::applyConstraints(const MediaConstraints& constraints, SuccessHandler&& successHandler, FailureHandler&& failureHandler)
+void MockGStreamerAudioCaptureSource::applyConstraints(const MediaConstraints& constraints, ApplyConstraintsHandler&& completionHandler)
{
- m_wrappedSource->applyConstraints(constraints, WTFMove(successHandler), WTFMove(failureHandler));
+ m_wrappedSource->applyConstraints(constraints, WTFMove(completionHandler));
}
MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource(String&& deviceID, String&& name, String&& hashSalt)
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h 2019-02-07 22:52:15 UTC (rev 241145)
@@ -31,8 +31,8 @@
public:
MockGStreamerAudioCaptureSource(String&& deviceID, String&& name, String&& hashSalt);
~MockGStreamerAudioCaptureSource();
- Optional<std::pair<String, String>> applyConstraints(const MediaConstraints&);
- void applyConstraints(const MediaConstraints&, SuccessHandler&&, FailureHandler&&) final;
+ Optional<ApplyConstraintsError> applyConstraints(const MediaConstraints&);
+ void applyConstraints(const MediaConstraints&, ApplyConstraintsHandler&&) final;
private:
void stopProducingData() final;
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -107,15 +107,15 @@
m_wrappedSource->removeObserver(*this);
}
-Optional<std::pair<String, String>> MockGStreamerVideoCaptureSource::applyConstraints(const MediaConstraints& constraints)
+Optional<RealtimeMediaSource::ApplyConstraintsError> MockGStreamerVideoCaptureSource::applyConstraints(const MediaConstraints& constraints)
{
m_wrappedSource->applyConstraints(constraints);
return GStreamerVideoCaptureSource::applyConstraints(constraints);
}
-void MockGStreamerVideoCaptureSource::applyConstraints(const MediaConstraints& constraints, SuccessHandler&& successHandler, FailureHandler&& failureHandler)
+void MockGStreamerVideoCaptureSource::applyConstraints(const MediaConstraints& constraints, ApplyConstraintsHandler&& completionHandler)
{
- m_wrappedSource->applyConstraints(constraints, WTFMove(successHandler), WTFMove(failureHandler));
+ m_wrappedSource->applyConstraints(constraints, WTFMove(completionHandler));
}
const RealtimeMediaSourceSettings& MockGStreamerVideoCaptureSource::settings()
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h 2019-02-07 22:52:15 UTC (rev 241145)
@@ -36,8 +36,8 @@
public:
MockGStreamerVideoCaptureSource(String&& deviceID, String&& name, String&& hashSalt);
~MockGStreamerVideoCaptureSource();
- Optional<std::pair<String, String>> applyConstraints(const MediaConstraints&);
- void applyConstraints(const MediaConstraints&, SuccessHandler&&, FailureHandler&&) final;
+ Optional<ApplyConstraintsError> applyConstraints(const MediaConstraints&);
+ void applyConstraints(const MediaConstraints&, ApplyConstraintsHandler&&) final;
private:
void stopProducingData() final;
Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm 2019-02-07 22:52:15 UTC (rev 241145)
@@ -164,7 +164,7 @@
if (constraints) {
auto result = source->applyConstraints(*constraints);
if (result)
- return WTFMove(result.value().first);
+ return WTFMove(result.value().badConstraint);
}
return CaptureSourceOrError(WTFMove(source));
Modified: trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp (241144 => 241145)
--- trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -749,9 +749,8 @@
#endif
if (constraints) {
- auto result = source->applyConstraints(*constraints);
- if (result)
- return WTFMove(result.value().first);
+ if (auto result = source->applyConstraints(*constraints))
+ return WTFMove(result->badConstraint);
}
return CaptureSourceOrError(WTFMove(source));
}
Modified: trunk/Source/WebKit/ChangeLog (241144 => 241145)
--- trunk/Source/WebKit/ChangeLog 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebKit/ChangeLog 2019-02-07 22:52:15 UTC (rev 241145)
@@ -1,3 +1,18 @@
+2019-02-07 Youenn Fablet <[email protected]>
+
+ Simplify applyConstraints callbacks
+ https://bugs.webkit.org/show_bug.cgi?id=194297
+
+ Reviewed by Eric Carlson.
+
+ * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+ (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
+ * WebProcess/cocoa/UserMediaCaptureManager.cpp:
+ (WebKit::UserMediaCaptureManager::Source::applyConstraintsSucceeded):
+ (WebKit::UserMediaCaptureManager::Source::applyConstraintsFailed):
+ (WebKit::UserMediaCaptureManager::applyConstraintsFailed):
+ * WebProcess/cocoa/UserMediaCaptureManager.h:
+
2019-02-07 Brent Fulgham <[email protected]>
Permit additional IOKit Properties needed by Media PlugIns on older Mac Hardware
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (241144 => 241145)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -211,7 +211,7 @@
if (!result)
m_process.send(Messages::UserMediaCaptureManager::ApplyConstraintsSucceeded(id, source.settings()), 0);
else
- m_process.send(Messages::UserMediaCaptureManager::ApplyConstraintsFailed(id, result.value().first, result.value().second), 0);
+ m_process.send(Messages::UserMediaCaptureManager::ApplyConstraintsFailed(id, result->badConstraint, result->message), 0);
}
void UserMediaCaptureManagerProxy::clear()
Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp (241144 => 241145)
--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2019-02-07 22:52:15 UTC (rev 241145)
@@ -165,15 +165,16 @@
void applyConstraintsSucceeded(const WebCore::RealtimeMediaSourceSettings& settings)
{
- auto callbacks = m_pendingApplyConstraintsCallbacks.takeFirst();
setSettings(WebCore::RealtimeMediaSourceSettings(settings));
- callbacks.successHandler();
+
+ auto callback = m_pendingApplyConstraintsCallbacks.takeFirst();
+ callback({ });
}
- void applyConstraintsFailed(const String& failedConstraint, const String& errorMessage)
+ void applyConstraintsFailed(String&& failedConstraint, String&& errorMessage)
{
- auto callbacks = m_pendingApplyConstraintsCallbacks.takeFirst();
- callbacks.failureHandler(failedConstraint, errorMessage);
+ auto callback = m_pendingApplyConstraintsCallbacks.takeFirst();
+ callback(ApplyConstraintsError { WTFMove(failedConstraint), WTFMove(errorMessage) });
}
private:
@@ -187,9 +188,10 @@
void commitConfiguration() final { }
void hasEnded() final { m_manager.sourceEnded(m_id); }
- void applyConstraints(const WebCore::MediaConstraints& constraints, SuccessHandler&& successHandler, FailureHandler&& failureHandler) final {
+ void applyConstraints(const WebCore::MediaConstraints& constraints, ApplyConstraintsHandler&& completionHandler) final
+ {
m_manager.applyConstraints(m_id, constraints);
- m_pendingApplyConstraintsCallbacks.append({ WTFMove(successHandler), WTFMove(failureHandler)});
+ m_pendingApplyConstraintsCallbacks.append(WTFMove(completionHandler));
}
uint64_t m_id;
@@ -203,11 +205,7 @@
std::unique_ptr<ImageTransferSessionVT> m_imageTransferSession;
CaptureDevice::DeviceType m_deviceType { CaptureDevice::DeviceType::Unknown };
- struct ApplyConstraintsCallback {
- SuccessHandler successHandler;
- FailureHandler failureHandler;
- };
- Deque<ApplyConstraintsCallback> m_pendingApplyConstraintsCallbacks;
+ Deque<ApplyConstraintsHandler> m_pendingApplyConstraintsCallbacks;
};
UserMediaCaptureManager::UserMediaCaptureManager(WebProcess& process)
@@ -358,11 +356,11 @@
source.applyConstraintsSucceeded(settings);
}
-void UserMediaCaptureManager::applyConstraintsFailed(uint64_t id, const String& failedConstraint, const String& message)
+void UserMediaCaptureManager::applyConstraintsFailed(uint64_t id, String&& failedConstraint, String&& message)
{
ASSERT(m_sources.contains(id));
auto& source = *m_sources.get(id);
- source.applyConstraintsFailed(failedConstraint, message);
+ source.applyConstraintsFailed(WTFMove(failedConstraint), WTFMove(message));
}
}
Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h (241144 => 241145)
--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h 2019-02-07 22:15:09 UTC (rev 241144)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h 2019-02-07 22:52:15 UTC (rev 241145)
@@ -99,7 +99,7 @@
void setMuted(uint64_t, bool);
void applyConstraints(uint64_t, const WebCore::MediaConstraints&);
void applyConstraintsSucceeded(uint64_t, const WebCore::RealtimeMediaSourceSettings&);
- void applyConstraintsFailed(uint64_t, const String&, const String&);
+ void applyConstraintsFailed(uint64_t, String&&, String&&);
class Source;
friend class Source;