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

Unified Diff: Source/modules/mediastream/MediaDevicesRequest.cpp

Issue 145583015: MediaStream API: Implement Navigator.getMediaDevices Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 11 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/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

Powered by Google App Engine
This is Rietveld 408576698