Chromium Code Reviews| 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 |