Changeset 156473 in webkit
- Timestamp:
- Sep 26, 2013 10:43:07 AM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 added
- 3 deleted
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r156406 r156473 2026 2026 2027 2027 platform/mediastream/MediaStreamCenter.cpp 2028 platform/mediastream/MediaStreamComponent.cpp2029 2028 platform/mediastream/MediaStreamDescriptor.cpp 2030 2029 platform/mediastream/MediaStreamSource.cpp -
trunk/Source/WebCore/ChangeLog
r156472 r156473 1 2013-09-26 Tim Horton <timothy_horton@apple.com> 2 3 Tiled drawing should not imply threaded scrolling 4 https://bugs.webkit.org/show_bug.cgi?id=121874 5 <rdar://problem/15071494> 6 7 Reviewed by Sam Weinig. 8 9 No new tests; a near-future patch is going to put the majority of layout 10 tests into the tiled-drawing-without-threaded-scrolling mode. 11 12 * page/ChromeClient.h: 13 (WebCore::ChromeClient::shouldUseTiledBackingForFrame): 14 Add a ChromeClient callback to determine whether a given frame wants a TiledBacking for its contents. 15 16 * page/FrameView.h: 17 * WebCore.exp.in: 18 Make isMainFrameView public and export it for use in WebKit2. 19 20 * rendering/RenderLayerBacking.cpp: 21 (WebCore::RenderLayerBacking::RenderLayerBacking): 22 Make use of shouldUseTiledBackingForFrame instead of predicating the 23 main frame using a tile cache on whether we have a scrolling coordinator. 24 25 * rendering/RenderLayerCompositor.cpp: 26 (WebCore::RenderLayerCompositor::mainFrameBackingIsTiled): Added. 27 28 (WebCore::RenderLayerCompositor::shouldCompositeOverflowControls): 29 (WebCore::RenderLayerCompositor::requiresOverhangAreasLayer): 30 (WebCore::RenderLayerCompositor::requiresContentShadowLayer): 31 All of these checks for existence of a scrollingCoordinator should actually 32 key off whether we're using tiled drawing at the root; they have nothing 33 to do with threaded scrolling. 34 35 * rendering/RenderLayerCompositor.h: 36 37 2013-09-26 Brady Eidson <beidson@apple.com> 38 39 Mark IDBDatabase "FINAL" now that http://webkit.org/b/121747 is fixed. 40 41 Rubberstamped by Andreas Kling 42 43 * Modules/indexeddb/IDBDatabase.h: Mark this class FINAL. 1 2013-09-26 Eric Carlson <eric.carlson@apple.com> 2 3 [MediaStream] Cleanup platform interface 4 https://bugs.webkit.org/show_bug.cgi?id=121935 5 6 Reviewed by Jer Noble. 7 8 No new tests, tests will be updated in the next patch. 9 10 * CMakeLists.txt: Remove MediaStreamComponent.cpp. 11 * GNUmakefile.list.am: Remove MediaStreamComponent.h|cpp and MediaStreamSourcesQueryClient.h. 12 Add MediaStreamConstraintsValidationClient.h and MediaStreamCreationClient.h. 13 14 * Modules/mediastream/MediaStream.cpp: 15 (WebCore::processTrack): Duplicate MediaStreamSource when necessary to work around bug 121954. 16 (WebCore::createFromSourceVectors): MediaStreamCenter::instance -> MediaStream::sharedStreamCenter. 17 (WebCore::MediaStream::MediaStream): *Components -> *Streams. 18 (WebCore::MediaStream::setEnded): New. 19 (WebCore::MediaStream::stop): MediaStreamCenter::instance -> MediaStream::sharedStreamCenter. 20 (WebCore::MediaStream::addTrack): Append the track parameter rather than duplicating it, as per spec. 21 (WebCore::MediaStream::removeTrack): *Components -> *Streams. 22 (WebCore::MediaStream::trackDidEnd): Renamed from trackEnded. 23 (WebCore::MediaStream::streamDidEnd): Renamed from streamEnded. 24 (WebCore::MediaStream::addRemoteSource): Renamed from addRemoteTrack. *Components -> *Streams. 25 (WebCore::MediaStream::removeRemoteSource): Renamed from removeRemoteTrack. *Components -> *Streams. 26 * Modules/mediastream/MediaStream.h: 27 28 * Modules/mediastream/MediaStreamTrack.cpp: 29 (WebCore::MediaStreamTrack::create): *Component -> *Stream. 30 (WebCore::MediaStreamTrack::MediaStreamTrack): Don't assume source is valid. 31 (WebCore::MediaStreamTrack::~MediaStreamTrack): Ditto. 32 (WebCore::MediaStreamTrack::kind): Ditto. AtomicString -> const AtomicString&. 33 (WebCore::MediaStreamTrack::setSource): Moved from .h file. 34 (WebCore::MediaStreamTrack::id): Don't assume source is valid. Create ID when the source doesn't have one. 35 (WebCore::MediaStreamTrack::label): Don't assume source is valid. 36 (WebCore::MediaStreamTrack::enabled): 37 (WebCore::MediaStreamTrack::setEnabled): *Component -> *Stream. MediaStreamCenter::instance -> MediaStreamCenter::shared. 38 (WebCore::MediaStreamTrack::readyState): "muted" is not a readyState, but "new" is. 39 (WebCore::MediaStreamTrack::getSources): MediaStreamCenter::instance -> MediaStreamCenter::shared. 40 (WebCore::MediaStreamTrack::ended): *Component -> *Stream. 41 (WebCore::MediaStreamTrack::sourceChangedState): Dispatch "started" and "unmuted" events. 42 (WebCore::MediaStreamTrack::trackDidEnd): Renamed from didEndTrack. m_component -> m_source. 43 * Modules/mediastream/MediaStreamTrack.h: 44 45 * Modules/mediastream/RTCDTMFSender.cpp: 46 (WebCore::RTCDTMFSender::create): track->component() -> track->source(); 47 48 * Modules/mediastream/RTCPeerConnection.cpp: 49 (WebCore::RTCPeerConnection::didRemoveRemoteStream): Ditto. 50 51 * Modules/mediastream/RTCStatsRequestImpl.cpp: 52 (WebCore::RTCStatsRequestImpl::RTCStatsRequestImpl): Ditto. 53 (WebCore::RTCStatsRequestImpl::component): Removed, it was unused. 54 * Modules/mediastream/RTCStatsRequestImpl.h: 55 56 * Modules/mediastream/UserMediaClient.h: 57 * Modules/mediastream/UserMediaController.h: 58 (WebCore::UserMediaController::requestPermission): Renamed from requestUserMedia, get rid of source 59 vector parameters. 60 (WebCore::UserMediaController::cancelRequest): Renamed from cancelUserMediaRequest. 61 62 * Modules/mediastream/UserMediaRequest.cpp: 63 (WebCore::parseOptions): MediaConstraintsImpl -> MediaConstraints. 64 (WebCore::UserMediaRequest::create): Ditto. 65 (WebCore::UserMediaRequest::UserMediaRequest): Ditto. 66 (WebCore::UserMediaRequest::securityOrigin): New. 67 (WebCore::UserMediaRequest::start): Request constraint validation. 68 (WebCore::UserMediaRequest::constraintsValidated): New. Callback from media engine when constraints 69 can be supported. 70 (WebCore::UserMediaRequest::requestPermission): New. Ask user media client for permission to access media. 71 (WebCore::UserMediaRequest::userMediaAccessGranted): New. Access has been granted. 72 (WebCore::UserMediaRequest::createMediaStream): New. Allowed to access media, ask media engine 73 to create stream sources. 74 (WebCore::UserMediaRequest::userMediaAccessDenied): New. User media client has denied access request. 75 (WebCore::UserMediaRequest::constraintsInvalid): New. Media engine can not support constraints. 76 (WebCore::UserMediaRequest::didCreateStream): New. Media engine has created stream sources. 77 (WebCore::UserMediaRequest::callSuccessHandler): New. Create stream from sources and call success handler. 78 (WebCore::UserMediaRequest::failedToCreateStreamWithConstraintsError): Renamed from constraintFailure. 79 (WebCore::UserMediaRequest::failedToCreateStreamWithPermissionError): Renamed from permissionFailure. 80 (WebCore::UserMediaRequest::callErrorHandler): 81 (WebCore::UserMediaRequest::contextDestroyed): cancelUserMediaRequest -> cancelRequest. 82 * Modules/mediastream/UserMediaRequest.h: 83 84 * Modules/webaudio/AudioContext.cpp: 85 (WebCore::AudioContext::createMediaStreamSource): localAudio->component()->source() -> localAudio->source(). 86 87 * Modules/webaudio/MediaStreamAudioDestinationNode.cpp: 88 (WebCore::MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode): MediaStreamSource::TypeAudio -> 89 MediaStreamSource::Audio, MediaStreamSource::ReadyStateLive -> MediaStreamSource::Live. 90 MediaStreamCenter::instance -> MediaStreamCenter::shared. 91 92 * WebCore.exp.in: Export new symbols. 93 94 * WebCore.xcodeproj/project.pbxproj: Add new files and remove deleted files. 95 96 * dom/EventNames.h: Define "started" event. 97 98 * platform/mediastream/MediaStreamCenter.cpp: 99 (WebCore::mediaStreamCenterOverride): Make it possible to override the shared stream center. Will 100 be used for testing in a later patch. 101 (WebCore::MediaStreamCenter::shared): Renamed from instance. Return current stream center. 102 (WebCore::MediaStreamCenter::setSharedStreamCenter): Override current stream center. 103 (WebCore::MediaStreamCenter::endLocalMediaStream): Never call the descriptor client, always call 104 the descriptor and let it deal with the client. 105 * platform/mediastream/MediaStreamCenter.h: 106 107 * platform/mediastream/MediaStreamComponent.cpp: Removed. 108 * platform/mediastream/MediaStreamComponent.h: Removed. 109 110 * platform/mediastream/MediaStreamConstraintsValidationClient.h: Added. 111 * platform/mediastream/MediaStreamCreationClient.h: Added. 112 113 * platform/mediastream/MediaStreamDescriptor.cpp: 114 (WebCore::MediaStreamDescriptor::addSource): *Component -> *Source. 115 (WebCore::MediaStreamDescriptor::removeSource): Ditto. 116 (WebCore::MediaStreamDescriptor::addRemoteSource): Ditto. 117 (WebCore::MediaStreamDescriptor::removeRemoteSource): Ditto. 118 (WebCore::MediaStreamDescriptor::MediaStreamDescriptor): Ditto. 119 (WebCore::MediaStreamDescriptor::setEnded): Ditto. Set source readyStates to Ended. 120 * platform/mediastream/MediaStreamDescriptor.h: 121 122 * platform/mediastream/MediaStreamSource.cpp: 123 (WebCore::MediaStreamSource::MediaStreamSource): Initialize new member variables. 124 (WebCore::MediaStreamSource::setReadyState): Early return when the state hasn't changed. 125 (WebCore::MediaStreamSource::setStream): New. 126 (WebCore::MediaStreamSource::setMuted): New. 127 * platform/mediastream/MediaStreamSource.h: 128 129 * platform/mediastream/MediaStreamSourcesQueryClient.h: Removed. 130 131 * platform/mediastream/RTCPeerConnectionHandler.h: 132 * platform/mediastream/RTCStatsRequest.h: 133 134 * platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp: Update for new MediaStreamCenter API. 135 * platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h: 136 137 * platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp: Ditto. 138 * platform/mediastream/gstreamer/MediaStreamCenterGStreamer.h: 139 140 * platform/mediastream/mac/MediaStreamCenterMac.cpp: Ditto. 141 * platform/mediastream/mac/MediaStreamCenterMac.h: 44 142 45 143 2013-09-26 Gurpreet Kaur <k.gurpreet@samsung.com> -
trunk/Source/WebCore/GNUmakefile.list.am
r156458 r156473 5455 5455 Source/WebCore/platform/mediastream/MediaStreamCenter.cpp \ 5456 5456 Source/WebCore/platform/mediastream/MediaStreamCenter.h \ 5457 Source/WebCore/platform/mediastream/MediaStreamCo mponent.cpp\5458 Source/WebCore/platform/mediastream/MediaStreamC omponent.h \5457 Source/WebCore/platform/mediastream/MediaStreamConstraintsValidationClient.h \ 5458 Source/WebCore/platform/mediastream/MediaStreamCreationClient.h \ 5459 5459 Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp \ 5460 5460 Source/WebCore/platform/mediastream/MediaStreamDescriptor.h \ 5461 5461 Source/WebCore/platform/mediastream/MediaStreamSource.cpp \ 5462 5462 Source/WebCore/platform/mediastream/MediaStreamSource.h \ 5463 Source/WebCore/platform/mediastream/MediaStreamSourcesQueryClient.h \5464 5463 Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h \ 5465 5464 Source/WebCore/platform/mediastream/RTCConfiguration.h \ -
trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp
r156413 r156473 2 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 3 * Copyright (C) 2011, 2012 Ericsson AB. All rights reserved. 4 * Copyright (C) 2013 Apple Inc. All rights reserved. 4 5 * 5 6 * Redistribution and use in source and binary forms, with or without … … 35 36 #include "MediaStreamSource.h" 36 37 #include "MediaStreamTrackEvent.h" 38 #include <wtf/NeverDestroyed.h> 37 39 38 40 namespace WebCore { … … 52 54 return; 53 55 54 MediaStreamSource* source = track->component()->source(); 55 if (!containsSource(sourceVector, source)) 56 sourceVector.append(source); 56 MediaStreamSource* source = track->source(); 57 if (!containsSource(sourceVector, source)) { 58 if (source->stream()) { 59 // FIXME: this should not be necessary because tracks and streams must be able to share sources, but our code 60 // currenlty assumes each source is attached to just one track. 61 // https://bugs.webkit.org/show_bug.cgi?id=121954 62 sourceVector.append(MediaStreamSource::create(source->id(), source->type(), source->name(), source->readyState(), source->requiresAudioConsumer()).get()); 63 } else 64 sourceVector.append(source); 65 } 57 66 } 58 67 … … 60 69 { 61 70 RefPtr<MediaStreamDescriptor> descriptor = MediaStreamDescriptor::create(audioSources, videoSources); 62 MediaStreamCenter:: instance().didCreateMediaStream(descriptor.get());71 MediaStreamCenter::shared().didCreateMediaStream(descriptor.get()); 63 72 64 73 return MediaStream::create(context, descriptor.release()); … … 113 122 m_descriptor->setClient(this); 114 123 115 size_t numberOfAudioTracks = m_descriptor->numberOfAudio Components();124 size_t numberOfAudioTracks = m_descriptor->numberOfAudioStreams(); 116 125 m_audioTracks.reserveCapacity(numberOfAudioTracks); 117 126 for (size_t i = 0; i < numberOfAudioTracks; i++) 118 m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor->audio Component(i)));119 120 size_t numberOfVideoTracks = m_descriptor->numberOfVideo Components();127 m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor->audioStreams(i))); 128 129 size_t numberOfVideoTracks = m_descriptor->numberOfVideoStreams(); 121 130 m_videoTracks.reserveCapacity(numberOfVideoTracks); 122 131 for (size_t i = 0; i < numberOfVideoTracks; i++) 123 m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor->video Component(i)));132 m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor->videoStreams(i))); 124 133 } 125 134 … … 134 143 } 135 144 145 void MediaStream::setEnded() 146 { 147 if (ended()) 148 return; 149 m_descriptor->setEnded(); 150 } 151 136 152 void MediaStream::stop() 137 153 { … … 139 155 return; 140 156 141 MediaStreamCenter:: instance().didStopLocalMediaStream(descriptor());142 s treamEnded();157 MediaStreamCenter::shared().didStopLocalMediaStream(descriptor()); 158 setEnded(); 143 159 } 144 160 … … 156 172 157 173 RefPtr<MediaStreamTrack> track = prpTrack; 158 159 174 if (getTrackById(track->id())) 160 175 return; 161 176 162 RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(m_descriptor.get(), track->component()->source()); 163 RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecutionContext(), component.get()); 164 165 switch (component->source()->type()) { 166 case MediaStreamSource::TypeAudio: 167 m_audioTracks.append(newTrack); 168 break; 169 case MediaStreamSource::TypeVideo: 170 m_videoTracks.append(newTrack); 171 break; 172 } 173 174 m_descriptor->addComponent(component.release()); 175 MediaStreamCenter::instance().didAddMediaStreamTrack(m_descriptor.get(), newTrack->component()); 177 switch (track->source()->type()) { 178 case MediaStreamSource::Audio: 179 m_audioTracks.append(track); 180 break; 181 case MediaStreamSource::Video: 182 m_videoTracks.append(track); 183 break; 184 } 185 186 MediaStreamCenter::shared().didAddMediaStreamTrack(track->source()); 176 187 } 177 188 … … 191 202 192 203 size_t pos = notFound; 193 switch (track-> component()->source()->type()) {194 case MediaStreamSource:: TypeAudio:204 switch (track->source()->type()) { 205 case MediaStreamSource::Audio: 195 206 pos = m_audioTracks.find(track); 196 207 if (pos != notFound) 197 208 m_audioTracks.remove(pos); 198 209 break; 199 case MediaStreamSource:: TypeVideo:210 case MediaStreamSource::Video: 200 211 pos = m_videoTracks.find(track); 201 212 if (pos != notFound) … … 207 218 return; 208 219 209 m_descriptor->remove Component(track->component());220 m_descriptor->removeSource(track->source()); 210 221 211 222 if (!m_audioTracks.size() && !m_videoTracks.size()) 212 m_descriptor->setEnded();213 214 MediaStreamCenter:: instance().didRemoveMediaStreamTrack(m_descriptor.get(), track->component());223 setEnded(); 224 225 MediaStreamCenter::shared().didRemoveMediaStreamTrack(track->source()); 215 226 } 216 227 … … 230 241 } 231 242 232 void MediaStream::track Ended()243 void MediaStream::trackDidEnd() 233 244 { 234 245 for (size_t i = 0; i < m_audioTracks.size(); ++i) … … 240 251 return; 241 252 242 streamEnded(); 243 } 244 245 void MediaStream::streamEnded() 246 { 247 if (ended()) 248 return; 249 250 m_descriptor->setEnded(); 253 setEnded(); 254 } 255 256 void MediaStream::streamDidEnd() 257 { 258 if (ended()) 259 return; 260 251 261 scheduleDispatchEvent(Event::create(eventNames().endedEvent, false, false)); 252 262 } … … 258 268 } 259 269 260 void MediaStream::addRemote Track(MediaStreamComponent* component)261 { 262 ASSERT( component && !component->stream());263 if (ended()) 264 return; 265 266 component->setStream(descriptor());267 268 RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), component);269 switch ( component->source()->type()) {270 case MediaStreamSource:: TypeAudio:270 void MediaStream::addRemoteSource(MediaStreamSource* source) 271 { 272 ASSERT(source); 273 if (ended()) 274 return; 275 276 source->setStream(descriptor()); 277 278 RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), source); 279 switch (source->type()) { 280 case MediaStreamSource::Audio: 271 281 m_audioTracks.append(track); 272 282 break; 273 case MediaStreamSource:: TypeVideo:283 case MediaStreamSource::Video: 274 284 m_videoTracks.append(track); 275 285 break; 276 286 } 277 m_descriptor->add Component(component);287 m_descriptor->addSource(source); 278 288 279 289 scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().addtrackEvent, false, false, track)); 280 290 } 281 291 282 void MediaStream::removeRemote Track(MediaStreamComponent* component)292 void MediaStream::removeRemoteSource(MediaStreamSource* source) 283 293 { 284 294 if (ended()) … … 286 296 287 297 MediaStreamTrackVector* tracks = 0; 288 switch ( component->source()->type()) {289 case MediaStreamSource:: TypeAudio:298 switch (source->type()) { 299 case MediaStreamSource::Audio: 290 300 tracks = &m_audioTracks; 291 301 break; 292 case MediaStreamSource:: TypeVideo:302 case MediaStreamSource::Video: 293 303 tracks = &m_videoTracks; 294 304 break; … … 297 307 size_t index = notFound; 298 308 for (size_t i = 0; i < tracks->size(); ++i) { 299 if ((*tracks)[i]-> component() == component) {309 if ((*tracks)[i]->source() == source) { 300 310 index = i; 301 311 break; … … 305 315 return; 306 316 307 m_descriptor->remove Component(component);317 m_descriptor->removeSource(source); 308 318 309 319 RefPtr<MediaStreamTrack> track = (*tracks)[index]; -
trunk/Source/WebCore/Modules/mediastream/MediaStream.h
r156413 r156473 2 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 3 * Copyright (C) 2011 Ericsson AB. All rights reserved. 4 * Copyright (C) 2013 Apple Inc. All rights reserved. 4 5 * 5 6 * Redistribution and use in source and binary forms, with or without … … 42 43 namespace WebCore { 43 44 45 class MediaStreamCenter; 46 44 47 // FIXME: This class should be marked FINAL once <http://webkit.org/b/121747> is fixed. 45 48 class MediaStream : public RefCounted<MediaStream>, public URLRegistrable, public ScriptWrappable, public MediaStreamDescriptorClient, public EventTargetWithInlineData, public ContextDestructionObserver { … … 61 64 62 65 bool ended() const; 66 void setEnded(); 63 67 void stop(); 64 68 … … 66 70 DEFINE_ATTRIBUTE_EVENT_LISTENER(addtrack); 67 71 DEFINE_ATTRIBUTE_EVENT_LISTENER(removetrack); 68 69 // MediaStreamDescriptorClient70 virtual void trackEnded() OVERRIDE;71 virtual void streamEnded() OVERRIDE;72 72 73 73 MediaStreamDescriptor* descriptor() const { return m_descriptor.get(); } … … 90 90 91 91 private: 92 // MediaStreamDescriptorClient 93 virtual void trackDidEnd() OVERRIDE; 94 virtual void streamDidEnd() OVERRIDE; 95 92 96 // EventTarget 93 97 virtual void refEventTarget() OVERRIDE FINAL { ref(); } … … 95 99 96 100 // MediaStreamDescriptorClient 97 virtual void addRemote Track(MediaStreamComponent*) OVERRIDE;98 virtual void removeRemote Track(MediaStreamComponent*) OVERRIDE;101 virtual void addRemoteSource(MediaStreamSource*) OVERRIDE; 102 virtual void removeRemoteSource(MediaStreamSource*) OVERRIDE; 99 103 100 104 void scheduleDispatchEvent(PassRefPtr<Event>); … … 103 107 bool m_stopped; 104 108 109 RefPtr<MediaStreamDescriptor> m_descriptor; 105 110 MediaStreamTrackVector m_audioTracks; 106 111 MediaStreamTrackVector m_videoTracks; 107 RefPtr<MediaStreamDescriptor> m_descriptor;108 112 109 113 Timer<MediaStream> m_scheduledEventTimer; 110 Vector<RefPtr<Event> 114 Vector<RefPtr<Event>> m_scheduledEvents; 111 115 }; 112 116 -
trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
r156413 r156473 2 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 3 * Copyright (C) 2011 Ericsson AB. All rights reserved. 4 * Copyright (C) 2013 Apple Inc. All rights reserved. 4 5 * 5 6 * Redistribution and use in source and binary forms, with or without … … 29 30 #if ENABLE(MEDIA_STREAM) 30 31 32 #include "Dictionary.h" 31 33 #include "Event.h" 32 34 #include "ExceptionCode.h" 35 #include "MediaStream.h" 33 36 #include "MediaStreamCenter.h" 34 #include "MediaStream Component.h"37 #include "MediaStreamDescriptor.h" 35 38 #include "MediaStreamTrackSourcesCallback.h" 36 39 #include "MediaStreamTrackSourcesRequest.h" 40 #include "UUID.h" 37 41 #include <wtf/NeverDestroyed.h> 38 42 39 43 namespace WebCore { 40 44 41 PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, MediaStreamComponent* component) 42 { 43 RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, component)); 44 track->suspendIfNeeded(); 45 PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, const Dictionary& videoConstraints) 46 { 47 RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, 0, &videoConstraints)); 45 48 return track.release(); 46 49 } 47 50 48 MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, MediaStreamComponent* component) 51 PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, MediaStreamSource* source) 52 { 53 RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, source, 0)); 54 return track.release(); 55 } 56 57 MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, MediaStreamSource* source, const Dictionary*) 49 58 : ActiveDOMObject(context) 50 , m_component(component) 59 , m_source(source) 60 , m_readyState(MediaStreamSource::New) 51 61 , m_stopped(false) 52 { 53 m_component->source()->addObserver(this); 62 , m_enabled(true) 63 , m_muted(false) 64 { 65 suspendIfNeeded(); 66 if (m_source) { 67 m_source->addObserver(this); 68 m_muted = m_source->muted(); 69 } 54 70 } 55 71 56 72 MediaStreamTrack::~MediaStreamTrack() 57 73 { 58 m_component->source()->removeObserver(this); 59 } 60 61 AtomicString MediaStreamTrack::kind() const 62 { 74 if (m_source) 75 m_source->removeObserver(this); 76 } 77 78 const AtomicString& MediaStreamTrack::kind() const 79 { 80 if (!m_source) 81 return emptyAtom; 82 63 83 static NeverDestroyed<AtomicString> audioKind("audio", AtomicString::ConstructFromLiteral); 64 84 static NeverDestroyed<AtomicString> videoKind("video", AtomicString::ConstructFromLiteral); 65 85 66 switch (m_ component->source()->type()) {67 case MediaStreamSource:: TypeAudio:86 switch (m_source->type()) { 87 case MediaStreamSource::Audio: 68 88 return audioKind; 69 case MediaStreamSource:: TypeVideo:89 case MediaStreamSource::Video: 70 90 return videoKind; 71 91 } … … 75 95 } 76 96 77 String MediaStreamTrack::id() const 78 { 79 return m_component->id(); 80 } 81 82 String MediaStreamTrack::label() const 83 { 84 return m_component->source()->name(); 97 void MediaStreamTrack::setSource(MediaStreamSource* source) 98 { 99 ASSERT(source == m_source || !m_source); 100 m_source = source; 101 } 102 103 const String& MediaStreamTrack::id() const 104 { 105 if (!m_id.isEmpty()) 106 return m_id; 107 108 if (!m_source) 109 return emptyString(); 110 111 const String& id = m_source->id(); 112 if (!id.isEmpty()) 113 return id; 114 115 // The spec says: 116 // Unless a MediaStreamTrack object is created as a part a of special purpose algorithm that 117 // specifies how the track id must be initialized, the user agent must generate a globally 118 // unique identifier string and initialize the object's id attribute to that string. 119 // so generate a UUID if the source doesn't have an ID. 120 m_id = createCanonicalUUIDString(); 121 return m_id; 122 } 123 124 const String& MediaStreamTrack::label() const 125 { 126 if (m_source) 127 return m_source->name(); 128 return emptyString(); 85 129 } 86 130 87 131 bool MediaStreamTrack::enabled() const 88 132 { 89 return m_ component->enabled();133 return m_enabled; 90 134 } 91 135 92 136 void MediaStreamTrack::setEnabled(bool enabled) 93 137 { 94 if (m_stopped || enabled == m_component->enabled()) 95 return; 96 97 m_component->setEnabled(enabled); 98 99 if (m_component->stream()->ended()) 100 return; 101 102 MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_component->stream(), m_component.get()); 103 } 104 105 AtomicString MediaStreamTrack::readyState() const 138 if (m_stopped) 139 return; 140 141 m_enabled = enabled; 142 143 if (!m_source || enabled == m_source->enabled()) 144 return; 145 146 m_source->setEnabled(enabled); 147 148 if (m_source->stream()->ended()) 149 return; 150 151 MediaStreamCenter::shared().didSetMediaStreamTrackEnabled(m_source.get()); 152 } 153 154 const AtomicString& MediaStreamTrack::readyState() const 106 155 { 107 156 static NeverDestroyed<AtomicString> ended("ended", AtomicString::ConstructFromLiteral); 108 157 static NeverDestroyed<AtomicString> live("live", AtomicString::ConstructFromLiteral); 109 static NeverDestroyed<AtomicString> muted("muted", AtomicString::ConstructFromLiteral); 158 static NeverDestroyed<AtomicString> newState("new", AtomicString::ConstructFromLiteral); 159 160 if (!m_source) 161 return newState; 110 162 111 163 if (m_stopped) 112 164 return ended; 113 165 114 switch (m_ component->source()->readyState()) {115 case MediaStreamSource:: ReadyStateLive:166 switch (m_source->readyState()) { 167 case MediaStreamSource::Live: 116 168 return live; 117 case MediaStreamSource:: ReadyStateMuted:118 return muted;119 case MediaStreamSource:: ReadyStateEnded:169 case MediaStreamSource::New: 170 return newState; 171 case MediaStreamSource::Ended: 120 172 return ended; 121 173 } … … 128 180 { 129 181 RefPtr<MediaStreamTrackSourcesRequest> request = MediaStreamTrackSourcesRequest::create(context, callback); 130 if (!MediaStreamCenter:: instance().getMediaStreamTrackSources(request.release()))182 if (!MediaStreamCenter::shared().getMediaStreamTrackSources(request.release())) 131 183 ec = NOT_SUPPORTED_ERR; 132 184 } … … 134 186 bool MediaStreamTrack::ended() const 135 187 { 136 return m_stopped || (m_ component->source()->readyState() == MediaStreamSource::ReadyStateEnded);188 return m_stopped || (m_source && m_source->readyState() == MediaStreamSource::Ended); 137 189 } 138 190 … … 142 194 return; 143 195 144 switch (m_component->source()->readyState()) { 145 case MediaStreamSource::ReadyStateLive: 196 MediaStreamSource::ReadyState oldReadyState = m_readyState; 197 m_readyState = m_source->readyState(); 198 199 if (m_readyState >= MediaStreamSource::Live && oldReadyState == MediaStreamSource::New) 200 dispatchEvent(Event::create(eventNames().startedEvent, false, false)); 201 if (m_readyState == MediaStreamSource::Ended && oldReadyState != MediaStreamSource::Ended) 202 dispatchEvent(Event::create(eventNames().endedEvent, false, false)); 203 204 if (m_muted == m_source->muted()) 205 return; 206 207 m_muted = m_source->muted(); 208 if (m_muted) 209 dispatchEvent(Event::create(eventNames().muteEvent, false, false)); 210 else 146 211 dispatchEvent(Event::create(eventNames().unmuteEvent, false, false)); 147 break; 148 case MediaStreamSource::ReadyStateMuted: 149 dispatchEvent(Event::create(eventNames().muteEvent, false, false)); 150 break; 151 case MediaStreamSource::ReadyStateEnded: 152 dispatchEvent(Event::create(eventNames().endedEvent, false, false)); 153 didEndTrack(); 154 break; 155 } 156 } 157 158 void MediaStreamTrack::didEndTrack() 159 { 160 MediaStreamDescriptorClient* client = m_component->stream()->client(); 212 } 213 214 void MediaStreamTrack::trackDidEnd() 215 { 216 // FIXME: this is wrong, the track shouldn't have to call the descriptor's client! 217 MediaStreamDescriptorClient* client = m_source ? m_source->stream()->client() : 0; 161 218 if (!client) 162 219 return; 163 220 164 client->trackEnded(); 165 } 166 167 MediaStreamComponent* MediaStreamTrack::component() 168 { 169 return m_component.get(); 221 client->trackDidEnd(); 170 222 } 171 223 -
trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h
r156413 r156473 2 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 3 * Copyright (C) 2011 Ericsson AB. All rights reserved. 4 * Copyright (C) 2013 Apple Inc. All rights reserved. 4 5 * 5 6 * Redistribution and use in source and binary forms, with or without … … 31 32 #include "ActiveDOMObject.h" 32 33 #include "EventTarget.h" 33 #include "MediaStreamDescriptor.h"34 34 #include "MediaStreamSource.h" 35 35 #include "ScriptWrappable.h" … … 41 41 namespace WebCore { 42 42 43 class MediaStreamComponent; 43 class Dictionary; 44 class MediaConstraints; 44 45 class MediaStreamTrackSourcesCallback; 45 46 … … 47 48 class MediaStreamTrack : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamSource::Observer { 48 49 public: 49 static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, MediaStreamComponent*); 50 51 static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, const Dictionary&); 52 static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, MediaStreamSource*); 53 50 54 virtual ~MediaStreamTrack(); 51 55 52 AtomicStringkind() const;53 Stringid() const;54 Stringlabel() const;56 const AtomicString& kind() const; 57 const String& id() const; 58 const String& label() const; 55 59 56 60 bool enabled() const; 57 61 void setEnabled(bool); 58 59 void didEndTrack();60 62 61 AtomicStringreadyState() const;63 const AtomicString& readyState() const; 62 64 63 65 static void getSources(ScriptExecutionContext*, PassRefPtr<MediaStreamTrackSourcesCallback>, ExceptionCode&); 66 67 MediaStreamSource* source() const { return m_source.get(); } 68 void setSource(MediaStreamSource*); 64 69 65 70 DEFINE_ATTRIBUTE_EVENT_LISTENER(mute); … … 67 72 DEFINE_ATTRIBUTE_EVENT_LISTENER(ended); 68 73 69 MediaStreamComponent* component();70 74 bool ended() const; 71 75 … … 81 85 82 86 private: 83 MediaStreamTrack(ScriptExecutionContext*, MediaStreamComponent*); 87 MediaStreamTrack(ScriptExecutionContext*, MediaStreamSource*, const Dictionary*); 88 89 void trackDidEnd(); 84 90 85 91 // EventTarget … … 90 96 virtual void sourceChangedState() OVERRIDE; 91 97 92 RefPtr<MediaStreamComponent> m_component; 98 RefPtr<MediaStreamSource> m_source; 99 RefPtr<MediaConstraints> m_constraints; 100 MediaStreamSource::ReadyState m_readyState; 101 mutable String m_id; 102 93 103 bool m_stopped; 104 bool m_enabled; 105 bool m_muted; 94 106 }; 95 107 -
trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp
r156413 r156473 48 48 { 49 49 RefPtr<MediaStreamTrack> track = prpTrack; 50 OwnPtr<RTCDTMFSenderHandler> handler = peerConnectionHandler->createDTMFSender(track-> component());50 OwnPtr<RTCDTMFSenderHandler> handler = peerConnectionHandler->createDTMFSender(track->source()); 51 51 if (!handler) { 52 52 ec = NOT_SUPPORTED_ERR; -
trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp
r156413 r156473 560 560 ASSERT(streamDescriptor->client()); 561 561 562 // FIXME: this class shouldn't know that the descriptor client is a MediaStream! 562 563 RefPtr<MediaStream> stream = static_cast<MediaStream*>(streamDescriptor->client()); 563 stream->s treamEnded();564 stream->setEnded(); 564 565 565 566 if (m_signalingState == SignalingStateClosed) -
trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp
r146537 r156473 29 29 #include "RTCStatsRequestImpl.h" 30 30 31 #include "MediaStreamDescriptor.h" 32 #include "MediaStreamTrack.h" 31 33 #include "RTCStatsCallback.h" 32 34 #include "RTCStatsRequest.h" … … 45 47 : ActiveDOMObject(context) 46 48 , m_successCallback(callback) 47 , m_stream(selector ? selector->component()->stream() : 0) 48 , m_component(selector ? selector->component() : 0) 49 , m_stream(selector ? selector->source()->stream() : 0) 49 50 { 50 51 } … … 67 68 { 68 69 return m_stream.get(); 69 }70 71 MediaStreamComponent* RTCStatsRequestImpl::component()72 {73 return m_component.get();74 70 } 75 71 -
trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.h
r131584 r156473 47 47 virtual bool hasSelector() OVERRIDE; 48 48 virtual MediaStreamDescriptor* stream() OVERRIDE; 49 virtual MediaStreamComponent* component() OVERRIDE;50 49 51 50 virtual void requestSucceeded(PassRefPtr<RTCStatsResponseBase>) OVERRIDE; … … 61 60 RefPtr<RTCStatsCallback> m_successCallback; 62 61 RefPtr<MediaStreamDescriptor> m_stream; 63 RefPtr<MediaStreamComponent> m_component;64 62 }; 65 63 -
trunk/Source/WebCore/Modules/mediastream/UserMediaClient.h
r108437 r156473 34 34 #if ENABLE(MEDIA_STREAM) 35 35 36 #include "UserMediaRequest.h" 37 #include <wtf/text/WTFString.h> 36 #include <wtf/PassRefPtr.h> 38 37 39 38 namespace WebCore { 40 39 41 40 class Page; 41 class UserMediaRequest; 42 42 43 43 class UserMediaClient { … … 45 45 virtual void pageDestroyed() = 0; 46 46 47 virtual void request UserMedia(PassRefPtr<UserMediaRequest>, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) = 0;48 virtual void cancel UserMediaRequest(UserMediaRequest*) = 0;47 virtual void requestPermission(PassRefPtr<UserMediaRequest>) = 0; 48 virtual void cancelRequest(UserMediaRequest*) = 0; 49 49 50 50 protected: -
trunk/Source/WebCore/Modules/mediastream/UserMediaController.h
r140509 r156473 30 30 #include "Page.h" 31 31 #include "UserMediaClient.h" 32 #include "UserMediaRequest.h" 32 33 #include <wtf/PassOwnPtr.h> 33 34 … … 39 40 40 41 UserMediaClient* client() const { return m_client; } 41 void request UserMedia(PassRefPtr<UserMediaRequest>, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources);42 void cancel UserMediaRequest(UserMediaRequest*);42 void requestPermission(PassRefPtr<UserMediaRequest>); 43 void cancelRequest(UserMediaRequest*); 43 44 44 45 static PassOwnPtr<UserMediaController> create(UserMediaClient*); … … 53 54 }; 54 55 55 inline void UserMediaController::request UserMedia(PassRefPtr<UserMediaRequest> request, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources)56 inline void UserMediaController::requestPermission(PassRefPtr<UserMediaRequest> request) 56 57 { 57 m_client->request UserMedia(request, audioSources, videoSources);58 m_client->requestPermission(request); 58 59 } 59 60 60 inline void UserMediaController::cancel UserMediaRequest(UserMediaRequest* request)61 inline void UserMediaController::cancelRequest(UserMediaRequest* request) 61 62 { 62 m_client->cancel UserMediaRequest(request);63 m_client->cancelRequest(request); 63 64 } 64 65 -
trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
r156108 r156473 2 2 * Copyright (C) 2011 Ericsson AB. All rights reserved. 3 3 * Copyright (C) 2012 Google Inc. All rights reserved. 4 * Copyright (C) 2013 Apple Inc. All rights reserved. 4 5 * 5 6 * Redistribution and use in source and binary forms, with or without … … 43 44 #include "MediaStreamCenter.h" 44 45 #include "MediaStreamDescriptor.h" 45 #include "S paceSplitString.h"46 #include "SecurityOrigin.h" 46 47 #include "UserMediaController.h" 47 48 #include <wtf/Functional.h> … … 50 51 namespace WebCore { 51 52 52 static PassRefPtr<MediaConstraints Impl> parseOptions(const Dictionary& options, const String& mediaType, ExceptionCode& ec)53 { 54 RefPtr<MediaConstraints Impl> constraints;53 static PassRefPtr<MediaConstraints> parseOptions(const Dictionary& options, const String& mediaType, ExceptionCode& ec) 54 { 55 RefPtr<MediaConstraints> constraints; 55 56 56 57 Dictionary constraintsDictionary; … … 72 73 ASSERT(successCallback); 73 74 74 RefPtr<MediaConstraints Impl> audioConstraints = parseOptions(options, AtomicString("audio", AtomicString::ConstructFromLiteral), ec);75 RefPtr<MediaConstraints> audioConstraints = parseOptions(options, AtomicString("audio", AtomicString::ConstructFromLiteral), ec); 75 76 if (ec) 76 77 return 0; 77 78 78 RefPtr<MediaConstraints Impl> videoConstraints = parseOptions(options, AtomicString("video", AtomicString::ConstructFromLiteral), ec);79 RefPtr<MediaConstraints> videoConstraints = parseOptions(options, AtomicString("video", AtomicString::ConstructFromLiteral), ec); 79 80 if (ec) 80 81 return 0; … … 86 87 } 87 88 88 UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, PassRefPtr<MediaConstraints Impl> audioConstraints, PassRefPtr<MediaConstraintsImpl> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)89 UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback) 89 90 : ContextDestructionObserver(context) 90 91 , m_audioConstraints(audioConstraints) … … 100 101 } 101 102 102 PassRefPtr<MediaConstraints> UserMediaRequest::audioConstraints() const 103 { 104 return m_audioConstraints; 105 } 106 107 PassRefPtr<MediaConstraints> UserMediaRequest::videoConstraints() const 108 { 109 return m_videoConstraints; 110 } 111 112 Document* UserMediaRequest::ownerDocument() 103 SecurityOrigin* UserMediaRequest::securityOrigin() const 113 104 { 114 105 if (m_scriptExecutionContext) 115 return toDocument(m_scriptExecutionContext);116 106 return m_scriptExecutionContext->securityOrigin(); 107 117 108 return 0; 118 109 } 119 110 120 111 void UserMediaRequest::start() 121 112 { 122 MediaStreamCenter::instance().queryMediaStreamSources(this); 123 } 124 125 void UserMediaRequest::didCompleteQuery(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 113 // 1 - make sure the system is capable of supporting the audio and video constraints. We don't want to ask for 114 // user permission if the constraints can not be suported. 115 MediaStreamCenter::shared().validateRequestConstraints(this, m_audioConstraints, m_videoConstraints); 116 } 117 118 119 void UserMediaRequest::constraintsValidated() 126 120 { 127 121 if (m_controller) 128 m_controller->requestUserMedia(this, audioSources, videoSources); 129 } 130 131 void UserMediaRequest::succeed(PassRefPtr<MediaStreamDescriptor> streamDescriptor) 132 { 133 if (!m_scriptExecutionContext) 134 return; 122 callOnMainThread(bind(&UserMediaRequest::requestPermission, this)); 123 } 124 125 void UserMediaRequest::requestPermission() 126 { 127 // 2 - The constraints are valid, ask the user for access to media. 128 if (m_controller) 129 m_controller->requestPermission(this); 130 } 131 132 void UserMediaRequest::userMediaAccessGranted() 133 { 134 callOnMainThread(bind(&UserMediaRequest::createMediaStream, this)); 135 } 136 137 void UserMediaRequest::createMediaStream() 138 { 139 // 3 - the user granted access, ask platform to create the media stream descriptors. 140 MediaStreamCenter::shared().createMediaStream(this, m_audioConstraints, m_videoConstraints); 141 } 142 143 void UserMediaRequest::userMediaAccessDenied() 144 { 145 failedToCreateStreamWithPermissionError(); 146 } 147 148 void UserMediaRequest::constraintsInvalid(const String& constraintName) 149 { 150 failedToCreateStreamWithConstraintsError(constraintName); 151 } 152 153 void UserMediaRequest::didCreateStream(PassRefPtr<MediaStreamDescriptor> streamDescriptor) 154 { 155 if (!m_scriptExecutionContext || !m_successCallback) 156 return; 157 158 callOnMainThread(bind(&UserMediaRequest::callSuccessHandler, this, streamDescriptor)); 159 } 160 161 void UserMediaRequest::callSuccessHandler(PassRefPtr<MediaStreamDescriptor> streamDescriptor) 162 { 163 // 4 - Create the MediaStream and pass it to the success callback. 164 ASSERT(m_successCallback); 135 165 136 166 RefPtr<MediaStream> stream = MediaStream::create(m_scriptExecutionContext, streamDescriptor); … … 138 168 MediaStreamTrackVector tracks = stream->getAudioTracks(); 139 169 for (MediaStreamTrackVector::iterator iter = tracks.begin(); iter != tracks.end(); ++iter) 140 (*iter)-> component()->source()->setConstraints(m_audioConstraints);170 (*iter)->source()->setConstraints(m_audioConstraints); 141 171 142 172 tracks = stream->getVideoTracks(); 143 173 for (MediaStreamTrackVector::iterator iter = tracks.begin(); iter != tracks.end(); ++iter) 144 (*iter)->component()->source()->setConstraints(m_videoConstraints); 145 174 (*iter)->source()->setConstraints(m_videoConstraints); 175 176 MediaStreamCenter::shared().didCreateMediaStream(streamDescriptor.get()); 146 177 m_successCallback->handleEvent(stream.get()); 147 178 } 148 179 149 void UserMediaRequest::permissionFailure() 150 { 180 void UserMediaRequest::failedToCreateStreamWithConstraintsError(const String& constraintName) 181 { 182 ASSERT(!constraintName.isEmpty()); 151 183 if (!m_scriptExecutionContext) 152 184 return; … … 154 186 if (!m_errorCallback) 155 187 return; 156 188 189 RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::constraintNotSatisfiedErrorName(), constraintName); 190 callOnMainThread(bind(&UserMediaRequest::callErrorHandler, this, error.release())); 191 } 192 193 void UserMediaRequest::failedToCreateStreamWithPermissionError() 194 { 195 if (!m_scriptExecutionContext) 196 return; 197 198 if (!m_errorCallback) 199 return; 200 157 201 RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::permissionDeniedErrorName(), emptyString()); 158 202 callOnMainThread(bind(&UserMediaRequest::callErrorHandler, this, error.release())); 159 203 } 160 204 161 void UserMediaRequest::constraintFailure(const String& constraintName) 162 { 163 ASSERT(!constraintName.isEmpty()); 164 if (!m_scriptExecutionContext) 165 return; 166 167 if (!m_errorCallback) 168 return; 169 170 RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::constraintNotSatisfiedErrorName(), constraintName); 171 callOnMainThread(bind(&UserMediaRequest::callErrorHandler, this, error.release())); 172 } 173 174 void UserMediaRequest::callSuccessHandler(PassRefPtr<MediaStream> stream) 175 { 176 ASSERT(m_successCallback); 177 178 m_successCallback->handleEvent(stream.get()); 179 } 180 181 void UserMediaRequest::callErrorHandler(PassRefPtr<NavigatorUserMediaError> error) 182 { 205 void UserMediaRequest::callErrorHandler(PassRefPtr<NavigatorUserMediaError> prpError) 206 { 207 RefPtr<NavigatorUserMediaError> error = prpError; 208 183 209 ASSERT(error); 184 210 … … 191 217 192 218 if (m_controller) { 193 m_controller->cancel UserMediaRequest(this);219 m_controller->cancelRequest(this); 194 220 m_controller = 0; 195 221 } -
trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h
r156108 r156473 1 1 /* 2 2 * Copyright (C) 2011 Ericsson AB. All rights reserved. 3 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 35 36 36 37 #include "ActiveDOMObject.h" 37 #include " ExceptionBase.h"38 #include "MediaStreamCreationClient.h" 38 39 #include "MediaStreamSource.h" 39 #include "MediaStreamSourcesQueryClient.h"40 40 #include "NavigatorUserMediaErrorCallback.h" 41 41 #include "NavigatorUserMediaSuccessCallback.h" 42 42 #include <wtf/PassRefPtr.h> 43 #include <wtf/RefCounted.h> 43 44 #include <wtf/text/WTFString.h> 44 45 … … 48 49 class Document; 49 50 class MediaConstraints; 50 class MediaConstraintsImpl;51 51 class MediaStreamDescriptor; 52 52 class UserMediaController; 53 class SecurityOrigin; 53 54 54 class UserMediaRequest : public MediaStreamSourcesQueryClient, public ContextDestructionObserver { 55 typedef int ExceptionCode; 56 57 class UserMediaRequest : public MediaStreamCreationClient, public ContextDestructionObserver { 55 58 public: 56 59 static PassRefPtr<UserMediaRequest> create(ScriptExecutionContext*, UserMediaController*, const Dictionary& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>, ExceptionCode&); 57 60 ~UserMediaRequest(); 58 61 59 Document* ownerDocument();62 SecurityOrigin* securityOrigin() const; 60 63 61 64 void start(); 62 void succeed(PassRefPtr<MediaStreamDescriptor>); 63 void permissionFailure(); 64 void constraintFailure(const String& constraintName); 65 void userMediaAccessGranted(); 66 void userMediaAccessDenied(); 65 67 66 // MediaStreamSourcesQueryClient 67 virtual PassRefPtr<MediaConstraints> audioConstraints() const OVERRIDE; 68 virtual PassRefPtr<MediaConstraints> videoConstraints() const OVERRIDE; 69 virtual void didCompleteQuery(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) OVERRIDE; 68 private: 69 UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>); 70 71 // MediaStreamCreationClient 72 virtual void constraintsValidated() OVERRIDE FINAL; 73 virtual void constraintsInvalid(const String& constraintName) OVERRIDE FINAL; 74 virtual void didCreateStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE FINAL; 75 virtual void failedToCreateStreamWithConstraintsError(const String& constraintName) OVERRIDE FINAL; 76 virtual void failedToCreateStreamWithPermissionError() OVERRIDE FINAL; 70 77 71 78 // ContextDestructionObserver 72 virtual void contextDestroyed(); 79 virtual void contextDestroyed() OVERRIDE FINAL; 80 81 void callSuccessHandler(PassRefPtr<MediaStreamDescriptor>); 82 void callErrorHandler(PassRefPtr<NavigatorUserMediaError>); 83 void requestPermission(); 84 void createMediaStream(); 73 85 74 private: 75 UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraintsImpl> audioConstraints, PassRefPtr<MediaConstraintsImpl> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>); 76 77 void callSuccessHandler(PassRefPtr<MediaStream>); 78 void callErrorHandler(PassRefPtr<NavigatorUserMediaError>); 79 80 RefPtr<MediaConstraintsImpl> m_audioConstraints; 81 RefPtr<MediaConstraintsImpl> m_videoConstraints; 86 RefPtr<MediaConstraints> m_audioConstraints; 87 RefPtr<MediaConstraints> m_videoConstraints; 82 88 83 89 UserMediaController* m_controller; -
trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp
r156413 r156473 422 422 for (size_t i = 0; i < audioTracks.size(); ++i) { 423 423 RefPtr<MediaStreamTrack> localAudio = audioTracks[i]; 424 MediaStreamSource* source = localAudio-> component()->source();424 MediaStreamSource* source = localAudio->source(); 425 425 if (!source->deviceId().isEmpty()) { 426 426 destination()->enableInput(source->deviceId()); -
trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp
r155573 r156473 50 50 setNodeType(NodeTypeMediaStreamAudioDestination); 51 51 52 m_source = MediaStreamSource::create(ASCIILiteral("WebAudio-") + createCanonicalUUIDString(), MediaStreamSource:: TypeAudio, "MediaStreamAudioDestinationNode", MediaStreamSource::ReadyStateLive, true);52 m_source = MediaStreamSource::create(ASCIILiteral("WebAudio-") + createCanonicalUUIDString(), MediaStreamSource::Audio, "MediaStreamAudioDestinationNode", MediaStreamSource::Live, true); 53 53 MediaStreamSourceVector audioSources; 54 54 audioSources.append(m_source); 55 55 MediaStreamSourceVector videoSources; 56 56 m_stream = MediaStream::create(context->scriptExecutionContext(), MediaStreamDescriptor::create(audioSources, videoSources)); 57 MediaStreamCenter:: instance().didCreateMediaStream(m_stream->descriptor());57 MediaStreamCenter::shared().didCreateMediaStream(m_stream->descriptor()); 58 58 59 59 m_source->setAudioFormat(numberOfChannels, context->sampleRate()); -
trunk/Source/WebCore/WebCore.exp.in
r156472 r156473 2800 2800 _wkCachePartitionKey 2801 2801 #endif 2802 2803 #if ENABLE(MEDIA_STREAM) 2804 __ZN7WebCore16UserMediaRequest22userMediaAccessGrantedEv 2805 __ZN7WebCore16UserMediaRequest21userMediaAccessDeniedEv 2806 __ZN7WebCore18provideUserMediaToEPNS_4PageEPNS_15UserMediaClientE 2807 __ZNK7WebCore16UserMediaRequest14securityOriginEv 2808 #endif -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r156458 r156473 96 96 070756E014239B4E00414161 /* JSTextTrackCueList.h in Headers */ = {isa = PBXBuildFile; fileRef = 070756DA14239B4E00414161 /* JSTextTrackCueList.h */; }; 97 97 0709FC4E1025DEE30059CDBA /* AccessibilitySlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */; }; 98 0711589017DF6F6200EDFE2B /* MediaStreamComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0711588E17DF633700EDFE2B /* MediaStreamComponent.cpp */; }; 98 070F549817F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F549717F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h */; }; 99 070F549E17F2402700169E04 /* AudioDestinationConsumer.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F549D17F2402700169E04 /* AudioDestinationConsumer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 99 100 0711589117DF6F6600EDFE2B /* MediaStreamDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0711588F17DF633700EDFE2B /* MediaStreamDescriptor.cpp */; }; 100 101 071A9EC2168FBC43002629F9 /* TextTrackCueGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */; }; … … 203 204 078E093317D16B0600420AA1 /* MediaStreamCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07221B9A17CF0AD400848E51 /* MediaStreamCenter.cpp */; }; 204 205 078E093417D16B0B00420AA1 /* MediaStreamCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B9B17CF0AD400848E51 /* MediaStreamCenter.h */; settings = {ATTRIBUTES = (Private, ); }; }; 205 078E093517D16B2100420AA1 /* MediaStreamComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B9C17CF0AD400848E51 /* MediaStreamComponent.h */; settings = {ATTRIBUTES = (Private, ); }; };206 206 078E093617D16B2100420AA1 /* MediaStreamSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07221B9E17CF0AD400848E51 /* MediaStreamSource.cpp */; }; 207 207 078E093717D16B2C00420AA1 /* MediaStreamDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B9D17CF0AD400848E51 /* MediaStreamDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; }; 208 208 078E093817D16B2C00420AA1 /* MediaStreamSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B9F17CF0AD400848E51 /* MediaStreamSource.h */; settings = {ATTRIBUTES = (Private, ); }; }; 209 078E093917D16B2C00420AA1 /* MediaStream SourcesQueryClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221BA017CF0AD400848E51 /* MediaStreamSourcesQueryClient.h */; settings = {ATTRIBUTES = (Private, ); }; };209 078E093917D16B2C00420AA1 /* MediaStreamCreationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221BA017CF0AD400848E51 /* MediaStreamCreationClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; 210 210 078E093A17D16E1C00420AA1 /* MediaConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221B9917CF0AD400848E51 /* MediaConstraints.h */; settings = {ATTRIBUTES = (Private, ); }; }; 211 211 078E093B17D16E1C00420AA1 /* RTCConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221BA117CF0AD400848E51 /* RTCConfiguration.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 6468 6468 0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySlider.h; sourceTree = "<group>"; }; 6469 6469 070DD8F50F01868000727DEB /* mediaControls.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mediaControls.css; sourceTree = "<group>"; }; 6470 0711588E17DF633700EDFE2B /* MediaStreamComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamComponent.cpp; sourceTree = "<group>"; }; 6470 070F549717F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamConstraintsValidationClient.h; sourceTree = "<group>"; }; 6471 070F549D17F2402700169E04 /* AudioDestinationConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDestinationConsumer.h; sourceTree = "<group>"; }; 6471 6472 0711588F17DF633700EDFE2B /* MediaStreamDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamDescriptor.cpp; sourceTree = "<group>"; }; 6472 6473 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackCueGeneric.cpp; sourceTree = "<group>"; }; … … 6551 6552 07221B9A17CF0AD400848E51 /* MediaStreamCenter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamCenter.cpp; sourceTree = "<group>"; }; 6552 6553 07221B9B17CF0AD400848E51 /* MediaStreamCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamCenter.h; sourceTree = "<group>"; }; 6553 07221B9C17CF0AD400848E51 /* MediaStreamComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamComponent.h; sourceTree = "<group>"; };6554 6554 07221B9D17CF0AD400848E51 /* MediaStreamDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamDescriptor.h; sourceTree = "<group>"; }; 6555 6555 07221B9E17CF0AD400848E51 /* MediaStreamSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamSource.cpp; sourceTree = "<group>"; }; 6556 6556 07221B9F17CF0AD400848E51 /* MediaStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamSource.h; sourceTree = "<group>"; }; 6557 07221BA017CF0AD400848E51 /* MediaStream SourcesQueryClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamSourcesQueryClient.h; sourceTree = "<group>"; };6557 07221BA017CF0AD400848E51 /* MediaStreamCreationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamCreationClient.h; sourceTree = "<group>"; }; 6558 6558 07221BA117CF0AD400848E51 /* RTCConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCConfiguration.h; sourceTree = "<group>"; }; 6559 6559 07221BA217CF0AD400848E51 /* RTCDataChannelHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCDataChannelHandler.h; sourceTree = "<group>"; }; … … 13400 13400 07221B9A17CF0AD400848E51 /* MediaStreamCenter.cpp */, 13401 13401 07221B9B17CF0AD400848E51 /* MediaStreamCenter.h */, 13402 07 11588E17DF633700EDFE2B /* MediaStreamComponent.cpp*/,13403 07221B 9C17CF0AD400848E51 /* MediaStreamComponent.h */,13402 070F549717F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h */, 13403 07221BA017CF0AD400848E51 /* MediaStreamCreationClient.h */, 13404 13404 0711588F17DF633700EDFE2B /* MediaStreamDescriptor.cpp */, 13405 13405 07221B9D17CF0AD400848E51 /* MediaStreamDescriptor.h */, 13406 13406 07221B9E17CF0AD400848E51 /* MediaStreamSource.cpp */, 13407 13407 07221B9F17CF0AD400848E51 /* MediaStreamSource.h */, 13408 07221BA017CF0AD400848E51 /* MediaStreamSourcesQueryClient.h */,13409 13408 076306E217E22A43005A7C4E /* MediaStreamTrackSourcesRequestClient.h */, 13410 13409 07221BA117CF0AD400848E51 /* RTCConfiguration.h */, … … 21293 21292 FD31604812B026F700C1A359 /* AudioChannel.h */, 21294 21293 FD31604912B026F700C1A359 /* AudioDestination.h */, 21294 070F549D17F2402700169E04 /* AudioDestinationConsumer.h */, 21295 21295 FD31604A12B026F700C1A359 /* AudioDSPKernel.h */, 21296 21296 FD31604B12B026F700C1A359 /* AudioDSPKernelProcessor.cpp */, … … 21550 21550 FD31600512B0267600C1A359 /* AudioContext.h in Headers */, 21551 21551 FD31607F12B026F700C1A359 /* AudioDestination.h in Headers */, 21552 070F549E17F2402700169E04 /* AudioDestinationConsumer.h in Headers */, 21552 21553 FD3160BD12B0272A00C1A359 /* AudioDestinationMac.h in Headers */, 21553 21554 FD31600812B0267600C1A359 /* AudioDestinationNode.h in Headers */, … … 21808 21809 A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */, 21809 21810 A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */, 21811 070F549817F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h in Headers */, 21810 21812 371F51A10D262FA000ECE0D5 /* CSSSegmentedFontFace.h in Headers */, 21811 21813 A80E73520A199C77007FB8C5 /* CSSSelector.h in Headers */, … … 21959 21961 85E711910AC5D5350053270F /* DOMCounterInternal.h in Headers */, 21960 21962 BC1A37B0097C715F0019F3D8 /* DOMCSS.h in Headers */, 21961 078E093917D16B2C00420AA1 /* MediaStream SourcesQueryClient.h in Headers */,21963 078E093917D16B2C00420AA1 /* MediaStreamCreationClient.h in Headers */, 21962 21964 85032DD70AA8C9BE007D3B7D /* DOMCSSCharsetRule.h in Headers */, 21963 21965 85909CDC0ACC7A7E00DF01F1 /* DOMCSSCharsetRuleInternal.h in Headers */, … … 24208 24210 B2227A240D00BF220071B782 /* SVGForeignObjectElement.h in Headers */, 24209 24211 B2227A270D00BF220071B782 /* SVGGElement.h in Headers */, 24210 078E093517D16B2100420AA1 /* MediaStreamComponent.h in Headers */,24211 24212 087E0AF713606D0B00FA4BA8 /* SVGGlyph.h in Headers */, 24212 24213 B2A1F2AE0CEF0ABF00442F6A /* SVGGlyphElement.h in Headers */, … … 26733 26734 CD61FE671794AADB004101EB /* MediaSourceRegistry.cpp in Sources */, 26734 26735 FD671A77159BB07000197559 /* MediaStreamAudioSourceNode.cpp in Sources */, 26735 0711589017DF6F6200EDFE2B /* MediaStreamComponent.cpp in Sources */,26736 26736 0711589117DF6F6600EDFE2B /* MediaStreamDescriptor.cpp in Sources */, 26737 26737 BCB16C170979C3BD00467741 /* MemoryCache.cpp in Sources */, -
trunk/Source/WebCore/dom/EventNames.h
r156241 r156473 241 241 macro(mute) \ 242 242 macro(unmute) \ 243 macro(started) \ 243 244 macro(iceconnectionstatechange) \ 244 245 macro(icecandidate) \ -
trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.cpp
r155362 r156473 40 40 namespace WebCore { 41 41 42 static MediaStreamCenter*& mediaStreamCenterOverride() 43 { 44 static MediaStreamCenter* override; 45 return override; 46 } 47 48 MediaStreamCenter& MediaStreamCenter::shared() 49 { 50 MediaStreamCenter* override = mediaStreamCenterOverride(); 51 if (override) 52 return *override; 53 54 return MediaStreamCenter::platformCenter(); 55 } 56 57 void MediaStreamCenter::setSharedStreamCenter(MediaStreamCenter* center) 58 { 59 mediaStreamCenterOverride() = center; 60 } 61 42 62 MediaStreamCenter::MediaStreamCenter() 43 63 { … … 50 70 void MediaStreamCenter::endLocalMediaStream(MediaStreamDescriptor* streamDescriptor) 51 71 { 52 MediaStreamDescriptorClient* client = streamDescriptor->client(); 53 if (client) 54 client->streamEnded(); 55 else 56 streamDescriptor->setEnded(); 72 streamDescriptor->setEnded(); 57 73 } 58 74 -
trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.h
r155992 r156473 40 40 namespace WebCore { 41 41 42 class MediaStreamComponent; 42 class MediaConstraints; 43 class MediaStreamCreationClient; 44 class MediaStreamCreationClient; 43 45 class MediaStreamDescriptor; 44 class MediaStreamSource sQueryClient;46 class MediaStreamSource; 45 47 class MediaStreamTrackSourcesRequestClient; 46 48 … … 49 51 virtual ~MediaStreamCenter(); 50 52 51 static MediaStreamCenter& instance(); 53 static MediaStreamCenter& shared(); 54 static void setSharedStreamCenter(MediaStreamCenter*); 52 55 53 virtual void queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient>) = 0;56 virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0; 54 57 55 // Calls from the DOM objects to notify the platform 58 virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0; 59 56 60 virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) = 0; 57 virtual void didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, MediaStreamComponent*) = 0; 58 virtual bool didAddMediaStreamTrack(MediaStreamDescriptor*, MediaStreamComponent*) = 0; 59 virtual bool didRemoveMediaStreamTrack(MediaStreamDescriptor*, MediaStreamComponent*) = 0; 61 62 virtual void didSetMediaStreamTrackEnabled(MediaStreamSource*) = 0; 63 64 virtual bool didAddMediaStreamTrack(MediaStreamSource*) = 0; 65 virtual bool didRemoveMediaStreamTrack(MediaStreamSource*) = 0; 66 60 67 virtual void didStopLocalMediaStream(MediaStreamDescriptor*) = 0; 61 68 virtual void didCreateMediaStream(MediaStreamDescriptor*) = 0; … … 65 72 66 73 void endLocalMediaStream(MediaStreamDescriptor*); 74 static MediaStreamCenter& platformCenter(); 67 75 }; 68 76 -
trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp
r155477 r156473 48 48 } 49 49 50 PassRefPtr<MediaStreamDescriptor> MediaStreamDescriptor::create(const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents)50 void MediaStreamDescriptor::addSource(PassRefPtr<MediaStreamSource> source) 51 51 { 52 return adoptRef(new MediaStreamDescriptor(createCanonicalUUIDString(), audioComponents, videoComponents)); 53 } 54 55 void MediaStreamDescriptor::addComponent(PassRefPtr<MediaStreamComponent> component) 56 { 57 switch (component->source()->type()) { 58 case MediaStreamSource::TypeAudio: 59 if (m_audioComponents.find(component) == notFound) 60 m_audioComponents.append(component); 52 switch (source->type()) { 53 case MediaStreamSource::Audio: 54 if (m_audioStreamSources.find(source) == notFound) 55 m_audioStreamSources.append(source); 61 56 break; 62 case MediaStreamSource:: TypeVideo:63 if (m_video Components.find(component) == notFound)64 m_video Components.append(component);57 case MediaStreamSource::Video: 58 if (m_videoStreamSources.find(source) == notFound) 59 m_videoStreamSources.append(source); 65 60 break; 66 61 } 67 62 } 68 63 69 void MediaStreamDescriptor::remove Component(PassRefPtr<MediaStreamComponent> component)64 void MediaStreamDescriptor::removeSource(PassRefPtr<MediaStreamSource> source) 70 65 { 71 66 size_t pos = notFound; 72 switch ( component->source()->type()) {73 case MediaStreamSource:: TypeAudio:74 pos = m_audio Components.find(component);67 switch (source->type()) { 68 case MediaStreamSource::Audio: 69 pos = m_audioStreamSources.find(source); 75 70 if (pos != notFound) 76 m_audio Components.remove(pos);71 m_audioStreamSources.remove(pos); 77 72 break; 78 case MediaStreamSource:: TypeVideo:79 pos = m_video Components.find(component);73 case MediaStreamSource::Video: 74 pos = m_videoStreamSources.find(source); 80 75 if (pos != notFound) 81 m_video Components.remove(pos);76 m_videoStreamSources.remove(pos); 82 77 break; 83 78 } 84 79 } 85 80 86 void MediaStreamDescriptor::addRemote Track(MediaStreamComponent* component)81 void MediaStreamDescriptor::addRemoteSource(MediaStreamSource* source) 87 82 { 88 83 if (m_client) 89 m_client->addRemote Track(component);84 m_client->addRemoteSource(source); 90 85 else 91 add Component(component);86 addSource(source); 92 87 } 93 88 94 void MediaStreamDescriptor::removeRemote Track(MediaStreamComponent* component)89 void MediaStreamDescriptor::removeRemoteSource(MediaStreamSource* source) 95 90 { 96 91 if (m_client) 97 m_client->removeRemote Track(component);92 m_client->removeRemoteSource(source); 98 93 else 99 remove Component(component);94 removeSource(source); 100 95 } 101 96 … … 106 101 { 107 102 ASSERT(m_id.length()); 108 for (size_t i = 0; i < audioSources.size(); i++) 109 m_audioComponents.append(MediaStreamComponent::create(this, audioSources[i])); 103 for (size_t i = 0; i < audioSources.size(); i++) { 104 audioSources[i]->setStream(this); 105 m_audioStreamSources.append(audioSources[i]); 106 } 110 107 111 for (size_t i = 0; i < videoSources.size(); i++) 112 m_videoComponents.append(MediaStreamComponent::create(this, videoSources[i])); 108 for (size_t i = 0; i < videoSources.size(); i++) { 109 videoSources[i]->setStream(this); 110 m_videoStreamSources.append(videoSources[i]); 111 } 113 112 } 114 113 115 MediaStreamDescriptor::MediaStreamDescriptor(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents) 116 : m_client(0) 117 , m_id(id) 118 , m_ended(false) 114 void MediaStreamDescriptor::setEnded() 119 115 { 120 ASSERT(m_id.length()); 121 for (MediaStreamComponentVector::const_iterator iter = audioComponents.begin(); iter != audioComponents.end(); ++iter) { 122 (*iter)->setStream(this); 123 m_audioComponents.append((*iter)); 124 } 125 for (MediaStreamComponentVector::const_iterator iter = videoComponents.begin(); iter != videoComponents.end(); ++iter) { 126 (*iter)->setStream(this); 127 m_videoComponents.append((*iter)); 128 } 116 if (m_client) 117 m_client->streamDidEnd(); 118 m_ended = true; 119 for (size_t i = 0; i < m_audioStreamSources.size(); i++) 120 m_audioStreamSources[i]->setReadyState(MediaStreamSource::Ended); 121 for (size_t i = 0; i < m_videoStreamSources.size(); i++) 122 m_videoStreamSources[i]->setReadyState(MediaStreamSource::Ended); 129 123 } 130 124 -
trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h
r155573 r156473 35 35 #if ENABLE(MEDIA_STREAM) 36 36 37 #include "MediaStreamComponent.h"38 37 #include "MediaStreamSource.h" 39 #include "UUID.h"40 38 #include <wtf/RefCounted.h> 41 39 #include <wtf/Vector.h> … … 47 45 virtual ~MediaStreamDescriptorClient() { } 48 46 49 virtual void track Ended() = 0;50 virtual void stream Ended() = 0;51 virtual void addRemote Track(MediaStreamComponent*) = 0;52 virtual void removeRemote Track(MediaStreamComponent*) = 0;47 virtual void trackDidEnd() = 0; 48 virtual void streamDidEnd() = 0; 49 virtual void addRemoteSource(MediaStreamSource*) = 0; 50 virtual void removeRemoteSource(MediaStreamSource*) = 0; 53 51 }; 54 52 55 53 class MediaStreamDescriptor : public RefCounted<MediaStreamDescriptor> { 56 54 public: 57 class ExtraData : public RefCounted<ExtraData> {58 public:59 virtual ~ExtraData() { }60 };61 55 62 56 static PassRefPtr<MediaStreamDescriptor> create(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources); 63 static PassRefPtr<MediaStreamDescriptor> create(const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents);64 57 65 58 MediaStreamDescriptorClient* client() const { return m_client; } … … 68 61 String id() const { return m_id; } 69 62 70 unsigned numberOfAudio Components() const { return m_audioComponents.size(); }71 MediaStream Component* audioComponent(unsigned index) const { return m_audioComponents[index].get(); }63 unsigned numberOfAudioStreams() const { return m_audioStreamSources.size(); } 64 MediaStreamSource* audioStreams(unsigned index) const { return m_audioStreamSources[index].get(); } 72 65 73 unsigned numberOfVideo Components() const { return m_videoComponents.size(); }74 MediaStream Component* videoComponent(unsigned index) const { return m_videoComponents[index].get(); }66 unsigned numberOfVideoStreams() const { return m_videoStreamSources.size(); } 67 MediaStreamSource* videoStreams(unsigned index) const { return m_videoStreamSources[index].get(); } 75 68 76 void add Component(PassRefPtr<MediaStreamComponent>);77 void remove Component(PassRefPtr<MediaStreamComponent>);69 void addSource(PassRefPtr<MediaStreamSource>); 70 void removeSource(PassRefPtr<MediaStreamSource>); 78 71 79 void addRemote Track(MediaStreamComponent*);80 void removeRemote Track(MediaStreamComponent*);72 void addRemoteSource(MediaStreamSource*); 73 void removeRemoteSource(MediaStreamSource*); 81 74 82 75 bool ended() const { return m_ended; } 83 void setEnded() { m_ended = true; } 84 85 PassRefPtr<ExtraData> extraData() const { return m_extraData; } 86 void setExtraData(PassRefPtr<ExtraData> extraData) { m_extraData = extraData; } 76 void setEnded(); 87 77 88 78 private: 89 79 MediaStreamDescriptor(const String& id, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources); 90 MediaStreamDescriptor(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents);91 80 92 81 MediaStreamDescriptorClient* m_client; 93 82 String m_id; 94 Vector<RefPtr<MediaStream Component> > m_audioComponents;95 Vector<RefPtr<MediaStream Component> > m_videoComponents;83 Vector<RefPtr<MediaStreamSource> > m_audioStreamSources; 84 Vector<RefPtr<MediaStreamSource> > m_videoStreamSources; 96 85 bool m_ended; 97 98 RefPtr<ExtraData> m_extraData;99 86 }; 100 87 -
trunk/Source/WebCore/platform/mediastream/MediaStreamSource.cpp
r144748 r156473 34 34 35 35 #include "MediaStreamSource.h" 36 37 #include "AudioDestinationConsumer.h" 36 38 #include <wtf/PassOwnPtr.h> 37 39 … … 48 50 , m_name(name) 49 51 , m_readyState(readyState) 52 , m_stream(0) 50 53 , m_requiresConsumer(requiresConsumer) 54 , m_enabled(true) 55 , m_muted(false) 51 56 { 52 57 } … … 54 59 void MediaStreamSource::setReadyState(ReadyState readyState) 55 60 { 56 if (m_readyState != ReadyStateEnded && m_readyState != readyState) { 57 m_readyState = readyState; 58 for (Vector<Observer*>::iterator i = m_observers.begin(); i != m_observers.end(); ++i) 59 (*i)->sourceChangedState(); 60 } 61 if (m_readyState == Ended || m_readyState == readyState) 62 return; 63 64 m_readyState = readyState; 65 for (Vector<Observer*>::iterator i = m_observers.begin(); i != m_observers.end(); ++i) 66 (*i)->sourceChangedState(); 61 67 } 62 68 … … 71 77 if (pos != notFound) 72 78 m_observers.remove(pos); 79 } 80 81 void MediaStreamSource::setStream(MediaStreamDescriptor* stream) 82 { 83 ASSERT(!m_stream && stream); 84 m_stream = stream; 85 } 86 87 void MediaStreamSource::setMuted(bool muted) 88 { 89 if (m_muted == muted) 90 return; 91 92 m_muted = muted; 93 for (Vector<Observer*>::iterator i = m_observers.begin(); i != m_observers.end(); ++i) 94 (*i)->sourceChangedState(); 73 95 } 74 96 -
trunk/Source/WebCore/platform/mediastream/MediaStreamSource.h
r155881 r156473 43 43 namespace WebCore { 44 44 45 class AudioBus; 46 class MediaStreamDescriptor; 47 45 48 class MediaStreamSource : public RefCounted<MediaStreamSource> { 46 49 public: … … 51 54 }; 52 55 53 class ExtraData : public RefCounted<ExtraData> { 54 public: 55 virtual ~ExtraData() { } 56 }; 56 enum Type { Audio, Video }; 57 enum ReadyState { New = 0, Live = 1, Ended = 2 }; 57 58 58 enum Type { 59 TypeAudio, 60 TypeVideo 61 }; 62 63 enum ReadyState { 64 ReadyStateLive = 0, 65 ReadyStateMuted = 1, 66 ReadyStateEnded = 2 67 }; 68 69 static PassRefPtr<MediaStreamSource> create(const String& id, Type, const String& name, ReadyState = ReadyStateLive, bool requiresConsumer = false); 59 static PassRefPtr<MediaStreamSource> create(const String& id, Type, const String& name, ReadyState = New, bool requiresConsumer = false); 70 60 71 61 const String& id() const { return m_id; } 62 72 63 Type type() const { return m_type; } 73 64 const String& name() const { return m_name; } … … 79 70 void removeObserver(Observer*); 80 71 81 PassRefPtr<ExtraData> extraData() const { return m_extraData; }82 void setExtraData(PassRefPtr<ExtraData> extraData) { m_extraData = extraData; }72 void setConstraints(PassRefPtr<MediaConstraints> constraints) { m_constraints = constraints; } 73 MediaConstraints* constraints() const { return m_constraints.get(); } 83 74 84 void setConstraints(PassRefPtr<MediaConstraints> constraints) { m_constraints = constraints; } 85 MediaConstraints* constraints() { return m_constraints.get(); } 86 87 const String& deviceId() { return m_deviceId; } 75 const String& deviceId() const { return m_deviceId; } 88 76 void setDeviceId(const String& deviceId) { m_deviceId = deviceId; } 89 77 78 bool enabled() const { return m_enabled; } 79 void setEnabled(bool enabled) { m_enabled = enabled; } 80 81 bool muted() const { return m_muted; } 82 void setMuted(bool); 83 90 84 void setAudioFormat(size_t numberOfChannels, float sampleRate); 91 85 void consumeAudio(AudioBus*, size_t numberOfFrames); 86 87 MediaStreamDescriptor* stream() const { return m_stream; } 88 void setStream(MediaStreamDescriptor*); 92 89 93 90 bool requiresAudioConsumer() const { return m_requiresConsumer; } 94 91 void addAudioConsumer(PassRefPtr<AudioDestinationConsumer>); 95 92 bool removeAudioConsumer(AudioDestinationConsumer*); 96 const Vector<RefPtr<AudioDestinationConsumer> >& audioConsumers() { return m_audioConsumers; }93 const Vector<RefPtr<AudioDestinationConsumer> >& audioConsumers() const { return m_audioConsumers; } 97 94 98 95 private: … … 104 101 ReadyState m_readyState; 105 102 String m_deviceId; 106 bool m_requiresConsumer;107 103 Vector<Observer*> m_observers; 108 104 Mutex m_audioConsumersLock; 109 Vector<RefPtr<AudioDestinationConsumer> > m_audioConsumers; 110 RefPtr<ExtraData> m_extraData; 105 Vector<RefPtr<AudioDestinationConsumer>> m_audioConsumers; 111 106 RefPtr<MediaConstraints> m_constraints; 107 MediaStreamDescriptor* m_stream; 108 109 bool m_requiresConsumer; 110 bool m_enabled; 111 bool m_muted; 112 112 }; 113 113 -
trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h
r155954 r156473 41 41 42 42 class MediaConstraints; 43 class MediaStream Component;43 class MediaStreamSource; 44 44 class RTCConfiguration; 45 45 class RTCDTMFSenderHandler; … … 87 87 virtual void getStats(PassRefPtr<RTCStatsRequest>) = 0; 88 88 virtual PassOwnPtr<RTCDataChannelHandler> createDataChannel(const String& label, const RTCDataChannelInit&) = 0; 89 virtual PassOwnPtr<RTCDTMFSenderHandler> createDTMFSender(PassRefPtr<MediaStream Component>) = 0;89 virtual PassOwnPtr<RTCDTMFSenderHandler> createDTMFSender(PassRefPtr<MediaStreamSource>) = 0; 90 90 virtual void stop() = 0; 91 91 -
trunk/Source/WebCore/platform/mediastream/RTCStatsRequest.h
r131584 r156473 51 51 virtual bool hasSelector() = 0; 52 52 virtual MediaStreamDescriptor* stream() = 0; 53 virtual MediaStreamComponent* component() = 0;54 53 virtual void requestSucceeded(PassRefPtr<RTCStatsResponseBase>) = 0; 55 54 -
trunk/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp
r155992 r156473 42 42 namespace WebCore { 43 43 44 MediaStreamCenter& MediaStreamCenter:: instance()44 MediaStreamCenter& MediaStreamCenter::platformCenter() 45 45 { 46 46 ASSERT(isMainThread()); … … 57 57 } 58 58 59 void MediaStreamCenterBlackBerry:: queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient> client)59 void MediaStreamCenterBlackBerry::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>) 60 60 { 61 MediaStreamSourceVector audioSources, videoSources; 62 client->didCompleteQuery(audioSources, videoSources); 61 notImplemented(); 62 } 63 64 void MediaStreamCenterBlackBerry::createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>) 65 { 66 notImplemented(); 63 67 } 64 68 65 bool MediaStreamCenter Mac::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>)69 bool MediaStreamCenterBlackBerry::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) 66 70 { 71 notImplemented(); 67 72 return false; 68 73 } 69 74 70 void MediaStreamCenterBlackBerry::didSetMediaStreamTrackEnabled(MediaStream Descriptor*, MediaStreamComponent*)75 void MediaStreamCenterBlackBerry::didSetMediaStreamTrackEnabled(MediaStreamSource*) 71 76 { 77 notImplemented(); 72 78 } 73 79 74 bool MediaStreamCenterBlackBerry::didAddMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*)80 bool MediaStreamCenterBlackBerry::didAddMediaStreamTrack(MediaStreamSource*) 75 81 { 82 notImplemented(); 76 83 return false; 77 84 } 78 85 79 bool MediaStreamCenterBlackBerry::didRemoveMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*)86 bool MediaStreamCenterBlackBerry::didRemoveMediaStreamTrack(MediaStreamSource*) 80 87 { 88 notImplemented(); 81 89 return false; 82 90 } 83 91 84 void MediaStreamCenterBlackBerry::didStopLocalMediaStream(MediaStreamDescriptor* )92 void MediaStreamCenterBlackBerry::didStopLocalMediaStream(MediaStreamDescriptor* stream) 85 93 { 94 endLocalMediaStream(stream); 86 95 } 87 96 88 97 void MediaStreamCenterBlackBerry::didCreateMediaStream(MediaStreamDescriptor*) 89 98 { 99 notImplemented(); 90 100 } 91 101 -
trunk/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h
r155992 r156473 42 42 namespace WebCore { 43 43 44 class MediaStreamComponent;45 44 class MediaStreamDescriptor; 45 class MediaStreamSource; 46 46 class MediaStreamSourcesQueryClient; 47 47 … … 52 52 53 53 // MediaStreamCenter 54 virtual void queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient>) OVERRIDE; 54 virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints); 55 virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints); 55 56 virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) OVERRIDE; 56 virtual void didSetMediaStreamTrackEnabled(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;57 virtual bool didAddMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;58 virtual bool didRemoveMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;57 virtual void didSetMediaStreamTrackEnabled(MediaStreamSource*) OVERRIDE; 58 virtual bool didAddMediaStreamTrack(MediaStreamSource*) OVERRIDE; 59 virtual bool didRemoveMediaStreamTrack(MediaStreamSource*) OVERRIDE; 59 60 virtual void didStopLocalMediaStream(MediaStreamDescriptor*) OVERRIDE; 60 61 virtual void didCreateMediaStream(MediaStreamDescriptor*) OVERRIDE; -
trunk/Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp
r155992 r156473 42 42 namespace WebCore { 43 43 44 MediaStreamCenter& MediaStreamCenter:: instance()44 MediaStreamCenter& MediaStreamCenter::platformCenter() 45 45 { 46 46 ASSERT(isMainThread()); … … 57 57 } 58 58 59 void MediaStreamCenterGStreamer:: queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient> client)59 void MediaStreamCenterGStreamer::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>) 60 60 { 61 MediaStreamSourceVector audioSources, videoSources; 62 client->didCompleteQuery(audioSources, videoSources); 61 notImplemented(); 62 } 63 64 void MediaStreamCenterGStreamer::createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>) 65 { 66 notImplemented(); 63 67 } 64 68 65 bool MediaStreamCenter Mac::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>)69 bool MediaStreamCenterGStreamer::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) 66 70 { 71 notImplemented(); 67 72 return false; 68 73 } 69 74 70 void MediaStreamCenterGStreamer::didSetMediaStreamTrackEnabled(MediaStream Descriptor*, MediaStreamComponent*)75 void MediaStreamCenterGStreamer::didSetMediaStreamTrackEnabled(MediaStreamSource*) 71 76 { 77 notImplemented(); 72 78 } 73 79 74 bool MediaStreamCenterGStreamer::didAddMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*)80 bool MediaStreamCenterGStreamer::didAddMediaStreamTrack(MediaStreamSource*) 75 81 { 82 notImplemented(); 76 83 return false; 77 84 } 78 85 79 bool MediaStreamCenterGStreamer::didRemoveMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*)86 bool MediaStreamCenterGStreamer::didRemoveMediaStreamTrack(MediaStreamSource*) 80 87 { 88 notImplemented(); 81 89 return false; 82 90 } 83 91 84 void MediaStreamCenterGStreamer::didStopLocalMediaStream(MediaStreamDescriptor* )92 void MediaStreamCenterGStreamer::didStopLocalMediaStream(MediaStreamDescriptor* stream) 85 93 { 94 endLocalMediaStream(stream); 86 95 } 87 96 88 97 void MediaStreamCenterGStreamer::didCreateMediaStream(MediaStreamDescriptor*) 89 98 { 99 notImplemented(); 90 100 } 91 101 -
trunk/Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.h
r155992 r156473 42 42 namespace WebCore { 43 43 44 class MediaStreamComponent;45 44 class MediaStreamDescriptor; 45 class MediaStreamSource; 46 46 class MediaStreamSourcesQueryClient; 47 47 … … 52 52 53 53 // MediaStreamCenter 54 virtual void queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient>) OVERRIDE; 54 virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints); 55 virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints); 55 56 virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) OVERRIDE; 56 virtual void didSetMediaStreamTrackEnabled(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;57 virtual bool didAddMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;58 virtual bool didRemoveMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;57 virtual void didSetMediaStreamTrackEnabled(MediaStreamSource*) OVERRIDE; 58 virtual bool didAddMediaStreamTrack(MediaStreamSource*) OVERRIDE; 59 virtual bool didRemoveMediaStreamTrack(MediaStreamSource*) OVERRIDE; 59 60 virtual void didStopLocalMediaStream(MediaStreamDescriptor*) OVERRIDE; 60 61 virtual void didCreateMediaStream(MediaStreamDescriptor*) OVERRIDE; -
trunk/Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.cpp
r155992 r156473 35 35 #include "MediaStreamCenterMac.h" 36 36 37 #include "MediaStreamCreationClient.h" 37 38 #include "MediaStreamDescriptor.h" 38 #include "MediaStreamSourcesQueryClient.h"39 39 #include "MediaStreamTrackSourcesRequestClient.h" 40 40 #include "NotImplemented.h" … … 43 43 namespace WebCore { 44 44 45 MediaStreamCenter& MediaStreamCenter:: instance()45 MediaStreamCenter& MediaStreamCenter::platformCenter() 46 46 { 47 47 ASSERT(isMainThread()); … … 58 58 } 59 59 60 void MediaStreamCenterMac::queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient>) 60 void MediaStreamCenterMac::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>) 61 { 62 notImplemented(); 63 } 64 65 void MediaStreamCenterMac::createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>) 61 66 { 62 67 notImplemented(); … … 69 74 } 70 75 71 void MediaStreamCenterMac::didSetMediaStreamTrackEnabled(MediaStream Descriptor*, MediaStreamComponent*)76 void MediaStreamCenterMac::didSetMediaStreamTrackEnabled(MediaStreamSource*) 72 77 { 73 78 notImplemented(); 74 79 } 75 80 76 bool MediaStreamCenterMac::didAddMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*)81 bool MediaStreamCenterMac::didAddMediaStreamTrack(MediaStreamSource*) 77 82 { 78 83 notImplemented(); … … 80 85 } 81 86 82 bool MediaStreamCenterMac::didRemoveMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*)87 bool MediaStreamCenterMac::didRemoveMediaStreamTrack(MediaStreamSource*) 83 88 { 84 89 notImplemented(); -
trunk/Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.h
r155992 r156473 41 41 namespace WebCore { 42 42 43 class MediaStreamComponent;44 43 class MediaStreamDescriptor; 44 class MediaStreamSource; 45 45 class MediaStreamSourcesQueryClient; 46 46 … … 51 51 52 52 // MediaStreamCenter 53 virtual void queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient>) OVERRIDE;54 53 virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints); 54 virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints); 55 55 virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) OVERRIDE; 56 virtual void didSetMediaStreamTrackEnabled(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;57 virtual bool didAddMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;58 virtual bool didRemoveMediaStreamTrack(MediaStream Descriptor*, MediaStreamComponent*) OVERRIDE;56 virtual void didSetMediaStreamTrackEnabled(MediaStreamSource*) OVERRIDE; 57 virtual bool didAddMediaStreamTrack(MediaStreamSource*) OVERRIDE; 58 virtual bool didRemoveMediaStreamTrack(MediaStreamSource*) OVERRIDE; 59 59 virtual void didStopLocalMediaStream(MediaStreamDescriptor*) OVERRIDE; 60 60 virtual void didCreateMediaStream(MediaStreamDescriptor*) OVERRIDE;
Note: See TracChangeset
for help on using the changeset viewer.