Index: Source/modules/mediastream/MediaStreamTrack.cpp |
diff --git a/Source/modules/mediastream/MediaStreamTrack.cpp b/Source/modules/mediastream/MediaStreamTrack.cpp |
index dff6fd007adf1363861c33ac92ce1ec18afa2e1b..3843cb86e7615a66831266d37d31001d8003401d 100644 |
--- a/Source/modules/mediastream/MediaStreamTrack.cpp |
+++ b/Source/modules/mediastream/MediaStreamTrack.cpp |
@@ -27,12 +27,14 @@ |
#include "modules/mediastream/MediaStreamTrack.h" |
#include "bindings/core/v8/ExceptionMessages.h" |
+#include "core/dom/Document.h" |
#include "core/dom/ExceptionCode.h" |
#include "core/dom/ExecutionContext.h" |
#include "core/events/Event.h" |
#include "modules/mediastream/MediaStream.h" |
#include "modules/mediastream/MediaStreamTrackSourcesCallback.h" |
#include "modules/mediastream/MediaStreamTrackSourcesRequestImpl.h" |
+#include "modules/mediastream/UserMediaController.h" |
#include "platform/mediastream/MediaStreamCenter.h" |
#include "platform/mediastream/MediaStreamComponent.h" |
#include "public/platform/WebSourceInfo.h" |
@@ -128,9 +130,14 @@ String MediaStreamTrack::readyState() const |
void MediaStreamTrack::getSources(ExecutionContext* context, PassOwnPtrWillBeRawPtr<MediaStreamTrackSourcesCallback> callback, ExceptionState& exceptionState) |
{ |
+ LocalFrame* frame = toDocument(context)->frame(); |
+ UserMediaController* userMedia = UserMediaController::from(frame); |
+ if (!userMedia) { |
+ exceptionState.throwDOMException(NotSupportedError, "No sources controller available; is this a detached window?"); |
+ return; |
+ } |
MediaStreamTrackSourcesRequest* request = MediaStreamTrackSourcesRequestImpl::create(*context, callback); |
- if (!MediaStreamCenter::instance().getMediaStreamTrackSources(request)) |
- exceptionState.throwDOMException(NotSupportedError, ExceptionMessages::failedToExecute("getSources", "MediaStreamTrack", "Functionality not implemented yet")); |
+ userMedia->requestSources(request); |
} |
void MediaStreamTrack::stopTrack(ExceptionState& exceptionState) |