| Index: content/renderer/media/media_stream_impl.h
|
| diff --git a/content/renderer/media/media_stream_impl.h b/content/renderer/media/media_stream_impl.h
|
| deleted file mode 100644
|
| index d96ef27416720bf06f1e215d9cef63099a2a9e54..0000000000000000000000000000000000000000
|
| --- a/content/renderer/media/media_stream_impl.h
|
| +++ /dev/null
|
| @@ -1,253 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_
|
| -#define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_
|
| -
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/scoped_vector.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/threading/non_thread_safe.h"
|
| -#include "content/common/content_export.h"
|
| -#include "content/public/renderer/render_frame_observer.h"
|
| -#include "content/renderer/media/media_stream_dispatcher_eventhandler.h"
|
| -#include "content/renderer/media/media_stream_source.h"
|
| -#include "third_party/WebKit/public/platform/WebMediaStream.h"
|
| -#include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
|
| -#include "third_party/WebKit/public/platform/WebVector.h"
|
| -#include "third_party/WebKit/public/web/WebMediaDevicesRequest.h"
|
| -#include "third_party/WebKit/public/web/WebUserMediaClient.h"
|
| -#include "third_party/WebKit/public/web/WebUserMediaRequest.h"
|
| -#include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h"
|
| -
|
| -namespace content {
|
| -class PeerConnectionDependencyFactory;
|
| -class MediaStreamDispatcher;
|
| -class MediaStreamVideoSource;
|
| -class VideoCapturerDelegate;
|
| -
|
| -// MediaStreamImpl is a delegate for the Media Stream GetUserMedia API.
|
| -// It ties together WebKit and MediaStreamManager
|
| -// (via MediaStreamDispatcher and MediaStreamDispatcherHost)
|
| -// in the browser process. It must be created, called and destroyed on the
|
| -// render thread.
|
| -class CONTENT_EXPORT MediaStreamImpl
|
| - : public RenderFrameObserver,
|
| - NON_EXPORTED_BASE(public blink::WebUserMediaClient),
|
| - public MediaStreamDispatcherEventHandler,
|
| - NON_EXPORTED_BASE(public base::NonThreadSafe) {
|
| - public:
|
| - // |render_frame| and |dependency_factory| must outlive this instance.
|
| - MediaStreamImpl(
|
| - RenderFrame* render_frame,
|
| - PeerConnectionDependencyFactory* dependency_factory,
|
| - scoped_ptr<MediaStreamDispatcher> media_stream_dispatcher);
|
| - virtual ~MediaStreamImpl();
|
| -
|
| - MediaStreamDispatcher* media_stream_dispatcher() const {
|
| - return media_stream_dispatcher_.get();
|
| - }
|
| -
|
| - // blink::WebUserMediaClient implementation
|
| - virtual void requestUserMedia(
|
| - const blink::WebUserMediaRequest& user_media_request);
|
| - virtual void cancelUserMediaRequest(
|
| - const blink::WebUserMediaRequest& user_media_request);
|
| - virtual void requestMediaDevices(
|
| - const blink::WebMediaDevicesRequest& media_devices_request) OVERRIDE;
|
| - virtual void cancelMediaDevicesRequest(
|
| - const blink::WebMediaDevicesRequest& media_devices_request) OVERRIDE;
|
| -
|
| - // MediaStreamDispatcherEventHandler implementation.
|
| - virtual void OnStreamGenerated(
|
| - int request_id,
|
| - const std::string& label,
|
| - const StreamDeviceInfoArray& audio_array,
|
| - const StreamDeviceInfoArray& video_array) OVERRIDE;
|
| - virtual void OnStreamGenerationFailed(
|
| - int request_id,
|
| - MediaStreamRequestResult result) OVERRIDE;
|
| - virtual void OnDeviceStopped(const std::string& label,
|
| - const StreamDeviceInfo& device_info) OVERRIDE;
|
| - virtual void OnDevicesEnumerated(
|
| - int request_id,
|
| - const StreamDeviceInfoArray& device_array) OVERRIDE;
|
| - virtual void OnDeviceOpened(
|
| - int request_id,
|
| - const std::string& label,
|
| - const StreamDeviceInfo& device_info) OVERRIDE;
|
| - virtual void OnDeviceOpenFailed(int request_id) OVERRIDE;
|
| -
|
| - // RenderFrameObserver OVERRIDE
|
| - virtual void FrameWillClose() OVERRIDE;
|
| -
|
| - protected:
|
| - // Called when |source| has been stopped from JavaScript.
|
| - void OnLocalSourceStopped(const blink::WebMediaStreamSource& source);
|
| -
|
| - // These methods are virtual for test purposes. A test can override them to
|
| - // test requesting local media streams. The function notifies WebKit that the
|
| - // |request| have completed.
|
| - virtual void GetUserMediaRequestSucceeded(
|
| - const blink::WebMediaStream& stream,
|
| - blink::WebUserMediaRequest* request_info);
|
| - virtual void GetUserMediaRequestFailed(
|
| - blink::WebUserMediaRequest* request_info,
|
| - MediaStreamRequestResult result);
|
| - virtual void GetUserMediaRequestTrackStartedFailed(
|
| - blink::WebUserMediaRequest* request_info,
|
| - MediaStreamRequestResult result,
|
| - const blink::WebString& result_name);
|
| - virtual void EnumerateDevicesSucceded(
|
| - blink::WebMediaDevicesRequest* request,
|
| - blink::WebVector<blink::WebMediaDeviceInfo>& devices);
|
| - // Creates a MediaStreamVideoSource object.
|
| - // This is virtual for test purposes.
|
| - virtual MediaStreamVideoSource* CreateVideoSource(
|
| - const StreamDeviceInfo& device,
|
| - const MediaStreamSource::SourceStoppedCallback& stop_callback);
|
| -
|
| - private:
|
| - // Class for storing information about a WebKit request to create a
|
| - // MediaStream.
|
| - class UserMediaRequestInfo
|
| - : public base::SupportsWeakPtr<UserMediaRequestInfo> {
|
| - public:
|
| - typedef base::Callback<void(UserMediaRequestInfo* request_info,
|
| - MediaStreamRequestResult result,
|
| - const blink::WebString& result_name)>
|
| - ResourcesReady;
|
| -
|
| - UserMediaRequestInfo(int request_id,
|
| - const blink::WebUserMediaRequest& request,
|
| - bool enable_automatic_output_device_selection);
|
| - ~UserMediaRequestInfo();
|
| - int request_id;
|
| - // True if MediaStreamDispatcher has generated the stream, see
|
| - // OnStreamGenerated.
|
| - bool generated;
|
| - const bool enable_automatic_output_device_selection;
|
| - blink::WebMediaStream web_stream;
|
| - blink::WebUserMediaRequest request;
|
| -
|
| - void StartAudioTrack(const blink::WebMediaStreamTrack& track,
|
| - const blink::WebMediaConstraints& constraints);
|
| -
|
| - blink::WebMediaStreamTrack CreateAndStartVideoTrack(
|
| - const blink::WebMediaStreamSource& source,
|
| - const blink::WebMediaConstraints& constraints);
|
| -
|
| - // Triggers |callback| when all sources used in this request have either
|
| - // successfully started, or a source has failed to start.
|
| - void CallbackOnTracksStarted(const ResourcesReady& callback);
|
| -
|
| - bool IsSourceUsed(const blink::WebMediaStreamSource& source) const;
|
| - void RemoveSource(const blink::WebMediaStreamSource& source);
|
| -
|
| - bool HasPendingSources() const;
|
| -
|
| - private:
|
| - void OnTrackStarted(
|
| - MediaStreamSource* source,
|
| - MediaStreamRequestResult result,
|
| - const blink::WebString& result_name);
|
| - void CheckAllTracksStarted();
|
| -
|
| - ResourcesReady ready_callback_;
|
| - MediaStreamRequestResult request_result_;
|
| - blink::WebString request_result_name_;
|
| - // Sources used in this request.
|
| - std::vector<blink::WebMediaStreamSource> sources_;
|
| - std::vector<MediaStreamSource*> sources_waiting_for_callback_;
|
| - };
|
| - typedef ScopedVector<UserMediaRequestInfo> UserMediaRequests;
|
| -
|
| - typedef std::vector<blink::WebMediaStreamSource> LocalStreamSources;
|
| -
|
| - struct MediaDevicesRequestInfo;
|
| - typedef ScopedVector<MediaDevicesRequestInfo> MediaDevicesRequests;
|
| -
|
| - // Creates a WebKit representation of stream sources based on
|
| - // |devices| from the MediaStreamDispatcher.
|
| - void InitializeSourceObject(
|
| - const StreamDeviceInfo& device,
|
| - blink::WebMediaStreamSource::Type type,
|
| - const blink::WebMediaConstraints& constraints,
|
| - blink::WebMediaStreamSource* webkit_source);
|
| -
|
| - void CreateVideoTracks(
|
| - const StreamDeviceInfoArray& devices,
|
| - const blink::WebMediaConstraints& constraints,
|
| - blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks,
|
| - UserMediaRequestInfo* request);
|
| -
|
| - void CreateAudioTracks(
|
| - const StreamDeviceInfoArray& devices,
|
| - const blink::WebMediaConstraints& constraints,
|
| - blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks,
|
| - UserMediaRequestInfo* request);
|
| -
|
| - // Callback function triggered when all native versions of the
|
| - // underlying media sources and tracks have been created and started.
|
| - void OnCreateNativeTracksCompleted(
|
| - UserMediaRequestInfo* request,
|
| - MediaStreamRequestResult result,
|
| - const blink::WebString& result_name);
|
| -
|
| - void OnStreamGeneratedForCancelledRequest(
|
| - const StreamDeviceInfoArray& audio_array,
|
| - const StreamDeviceInfoArray& video_array);
|
| -
|
| - UserMediaRequestInfo* FindUserMediaRequestInfo(int request_id);
|
| - UserMediaRequestInfo* FindUserMediaRequestInfo(
|
| - const blink::WebUserMediaRequest& request);
|
| - void DeleteUserMediaRequestInfo(UserMediaRequestInfo* request);
|
| - void DeleteAllUserMediaRequests();
|
| -
|
| - MediaDevicesRequestInfo* FindMediaDevicesRequestInfo(int request_id);
|
| - MediaDevicesRequestInfo* FindMediaDevicesRequestInfo(
|
| - const blink::WebMediaDevicesRequest& request);
|
| - void CancelAndDeleteMediaDevicesRequest(MediaDevicesRequestInfo* request);
|
| -
|
| - // Returns the source that use a device with |device.session_id|
|
| - // and |device.device.id|. NULL if such source doesn't exist.
|
| - const blink::WebMediaStreamSource* FindLocalSource(
|
| - const StreamDeviceInfo& device) const;
|
| -
|
| - void StopLocalSource(const blink::WebMediaStreamSource& source,
|
| - bool notify_dispatcher);
|
| -
|
| - // Weak ref to a PeerConnectionDependencyFactory, owned by the RenderThread.
|
| - // It's valid for the lifetime of RenderThread.
|
| - // TODO(xians): Remove this dependency once audio do not need it for local
|
| - // audio.
|
| - PeerConnectionDependencyFactory* const dependency_factory_;
|
| -
|
| - // MediaStreamImpl owns MediaStreamDispatcher instead of RenderFrameImpl
|
| - // (or RenderFrameObserver) to ensure tear-down occurs in the right order.
|
| - const scoped_ptr<MediaStreamDispatcher> media_stream_dispatcher_;
|
| -
|
| - LocalStreamSources local_sources_;
|
| -
|
| - UserMediaRequests user_media_requests_;
|
| -
|
| - // Requests to enumerate media devices.
|
| - MediaDevicesRequests media_devices_requests_;
|
| -
|
| - // Note: This member must be the last to ensure all outstanding weak pointers
|
| - // are invalidated first.
|
| - base::WeakPtrFactory<MediaStreamImpl> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MediaStreamImpl);
|
| -};
|
| -
|
| -} // namespace content
|
| -
|
| -#endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_
|
|
|