Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1563)

Unified Diff: Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp

Issue 1188203002: Implementation of setSinkId() for HTMLMediaElement. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add guidou as owner Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
diff --git a/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp b/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
index 5e7fd020a86f6056034fe76be2c43acdd12b5c62..fbfe6510495216865ece7887e25474bfa2d56fbd 100644
--- a/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
+++ b/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
@@ -8,6 +8,7 @@
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
#include "core/dom/ExecutionContext.h"
+#include "modules/audio_output_devices/SetSinkIdCallbacks.h"
#include "platform/Logging.h"
namespace blink {
@@ -24,10 +25,26 @@ String HTMLMediaElementAudioOutputDevice::sinkId(HTMLMediaElement& element)
return aodElement.m_sinkId;
}
-ScriptPromise HTMLMediaElementAudioOutputDevice::setSinkId(ScriptState* scriptState, HTMLMediaElement& element, const String& newSinkId)
+void HTMLMediaElementAudioOutputDevice::setSinkId(const String& sinkId)
+{
+ m_sinkId = sinkId;
+}
+
+ScriptPromise HTMLMediaElementAudioOutputDevice::setSinkId(ScriptState* scriptState, HTMLMediaElement& element, const String& sinkId)
{
WTF_LOG(Media, __FUNCTION__);
- return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(NotSupportedError, "Operation not supported"));
+ WebMediaPlayer* webMediaPlayer = element.webMediaPlayer();
+ if (!webMediaPlayer)
+ return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(AbortError, "No media player available"));
Peter Beverloo 2015/06/18 14:33:15 As in the other CL - should this be an ASSERT()?
Guido Urdaneta 2015/06/18 23:09:05 In this case the check is valid. For empty media e
+
+ RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState);
+ HTMLMediaElementAudioOutputDevice& aodElement = HTMLMediaElementAudioOutputDevice::from(element);
+ if (sinkId == aodElement.m_sinkId)
+ resolver->resolve();
+ else
+ webMediaPlayer->setSinkId(sinkId, new SetSinkIdCallbacks(resolver, element, sinkId));
+
+ return resolver->promise();
}
const char* HTMLMediaElementAudioOutputDevice::supplementName()

Powered by Google App Engine
This is Rietveld 408576698