Index: Source/modules/mediastream/MediaDevicesRequest.cpp |
diff --git a/Source/modules/mediastream/MediaStreamTrackSourcesRequestImpl.cpp b/Source/modules/mediastream/MediaDevicesRequest.cpp |
similarity index 48% |
copy from Source/modules/mediastream/MediaStreamTrackSourcesRequestImpl.cpp |
copy to Source/modules/mediastream/MediaDevicesRequest.cpp |
index 3137df1fc9b0cdae0aa50df3f4e7d92fd37890e9..f46f51fb6cad353a251db8843660c41ef3e820d2 100644 |
--- a/Source/modules/mediastream/MediaStreamTrackSourcesRequestImpl.cpp |
+++ b/Source/modules/mediastream/MediaDevicesRequest.cpp |
@@ -1,5 +1,5 @@ |
/* |
- * Copyright (C) 2013 Google Inc. All rights reserved. |
+ * Copyright (C) 2014 Google Inc. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
@@ -25,47 +25,63 @@ |
#include "config.h" |
-#include "modules/mediastream/MediaStreamTrackSourcesRequestImpl.h" |
+#include "modules/mediastream/MediaDevicesRequest.h" |
-#include "modules/mediastream/MediaStreamTrackSourcesCallback.h" |
-#include "platform/weborigin/SecurityOrigin.h" |
-#include "public/platform/WebSourceInfo.h" |
-#include "wtf/PassOwnPtr.h" |
+#include "bindings/v8/ExceptionState.h" |
+#include "core/dom/Document.h" |
+#include "modules/mediastream/UserMediaController.h" |
namespace WebCore { |
-PassRefPtr<MediaStreamTrackSourcesRequestImpl> MediaStreamTrackSourcesRequestImpl::create(const String& origin, PassOwnPtr<MediaStreamTrackSourcesCallback> callback) |
+PassRefPtr<MediaDevicesRequest> MediaDevicesRequest::create(ExecutionContext* context, UserMediaController* controller, PassOwnPtr<MediaDeviceInfoCallback> callback, ExceptionState& exceptionState) |
{ |
- return adoptRef(new MediaStreamTrackSourcesRequestImpl(origin, callback)); |
+ return adoptRef(new MediaDevicesRequest(context, controller, callback)); |
} |
-MediaStreamTrackSourcesRequestImpl::MediaStreamTrackSourcesRequestImpl(const String& origin, PassOwnPtr<MediaStreamTrackSourcesCallback> callback) |
- : m_callback(callback) |
- , m_scheduledEventTimer(this, &MediaStreamTrackSourcesRequestImpl::scheduledEventTimerFired) |
+MediaDevicesRequest::MediaDevicesRequest(ExecutionContext* context, UserMediaController* controller, PassOwnPtr<MediaDeviceInfoCallback> callback) |
+ : ContextLifecycleObserver(context) |
+ , m_controller(controller) |
+ , m_callback(callback) |
{ |
- m_origin = origin; |
} |
-MediaStreamTrackSourcesRequestImpl::~MediaStreamTrackSourcesRequestImpl() |
+MediaDevicesRequest::~MediaDevicesRequest() |
{ |
} |
-void MediaStreamTrackSourcesRequestImpl::requestSucceeded(const blink::WebVector<blink::WebSourceInfo>& webSourceInfos) |
+Document* MediaDevicesRequest::ownerDocument() |
{ |
- ASSERT(m_callback && !m_scheduledEventTimer.isActive()); |
+ if (ExecutionContext* context = executionContext()) { |
+ return toDocument(context); |
+ } |
- for (size_t i = 0; i < webSourceInfos.size(); ++i) |
- m_sourceInfos.append(SourceInfo::create(webSourceInfos[i])); |
+ return 0; |
+} |
+ |
+void MediaDevicesRequest::start() |
+{ |
+ if (m_controller) |
+ m_controller->requestMediaDevices(this); |
+} |
- m_protect = this; |
- m_scheduledEventTimer.startOneShot(0); |
+void MediaDevicesRequest::succeed(const MediaDeviceInfoVector& mediaDevices) |
+{ |
+ if (!executionContext()) |
+ return; |
+ |
+ m_callback->handleEvent(mediaDevices); |
abarth-chromium
2014/01/28 06:49:49
Generally its better to use ActiveDOMObject for th
Tommy Widenflycht
2014/01/28 22:35:02
Done.
|
} |
-void MediaStreamTrackSourcesRequestImpl::scheduledEventTimerFired(Timer<MediaStreamTrackSourcesRequestImpl>*) |
+void MediaDevicesRequest::contextDestroyed() |
{ |
- m_callback->handleEvent(m_sourceInfos); |
- m_callback.clear(); |
- m_protect.release(); |
+ RefPtr<MediaDevicesRequest> protect(this); |
+ |
+ if (m_controller) { |
+ m_controller->cancelMediaDevicesRequest(this); |
+ m_controller = 0; |
+ } |
+ |
+ ContextLifecycleObserver::contextDestroyed(); |
} |
} // namespace WebCore |