Changeset 87150 in webkit
- Timestamp:
- May 24, 2011 8:11:48 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 added
- 24 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r87143 r87150 1941 1941 LIST(APPEND WebCore_SOURCES 1942 1942 bindings/js/JSNavigatorCustom.cpp 1943 dom/GeneratedStream.cpp 1944 dom/Stream.cpp 1943 1945 page/MediaStreamController.cpp 1944 1946 page/MediaStreamFrameController.cpp … … 1946 1948 1947 1949 LIST(APPEND WebCore_IDL_FILES 1950 dom/GeneratedStream.idl 1951 dom/Stream.idl 1948 1952 page/NavigatorUserMediaError.idl 1949 1953 ) -
trunk/Source/WebCore/ChangeLog
r87147 r87150 1 2011-05-24 Leandro Gracia Gil <leandrogracia@chromium.org> 2 3 Reviewed by Tony Gentilcore. 4 5 Media Stream API: adding Stream and GeneratedStream classes. 6 https://bugs.webkit.org/show_bug.cgi?id=56666 7 8 Add the code for the Stream and GeneratedStream classes and integrate it 9 with the existing stream generation requests. 10 11 Tests for the Media Stream API will be provided by the bug 56587. 12 13 * CMakeLists.txt: 14 * CodeGenerators.pri: 15 * DerivedSources.cpp: 16 * DerivedSources.make: 17 * GNUmakefile.list.am: 18 * WebCore.gypi: 19 * WebCore.pro: 20 * WebCore.vcproj/WebCore.vcproj: 21 * WebCore.xcodeproj/project.pbxproj: 22 * bindings/js/JSEventTarget.cpp: 23 (WebCore::toJS): 24 * bindings/v8/V8DOMWrapper.cpp: 25 (WebCore::V8DOMWrapper::convertEventTargetToV8Object): 26 * dom/DOMAllInOne.cpp: 27 * dom/EventTarget.cpp: 28 (WebCore::EventTarget::toStream): 29 (WebCore::EventTarget::toGeneratedStream): 30 * dom/EventTarget.h: 31 * dom/GeneratedStream.cpp: Added. 32 (WebCore::GeneratedStream::DispatchUpdateTask::create): 33 (WebCore::GeneratedStream::DispatchUpdateTask::performTask): 34 (WebCore::GeneratedStream::DispatchUpdateTask::DispatchUpdateTask): 35 (WebCore::GeneratedStream::create): 36 (WebCore::GeneratedStream::GeneratedStream): 37 (WebCore::GeneratedStream::~GeneratedStream): 38 (WebCore::GeneratedStream::toGeneratedStream): 39 (WebCore::GeneratedStream::detachEmbedder): 40 (WebCore::GeneratedStream::stop): 41 (WebCore::GeneratedStream::onStop): 42 * dom/GeneratedStream.h: Added. 43 * dom/GeneratedStream.idl: Added. 44 * dom/Stream.cpp: Added. 45 (WebCore::Stream::create): 46 (WebCore::Stream::Stream): 47 (WebCore::Stream::~Stream): 48 (WebCore::Stream::toStream): 49 (WebCore::Stream::streamEnded): 50 (WebCore::Stream::scriptExecutionContext): 51 (WebCore::Stream::eventTargetData): 52 (WebCore::Stream::ensureEventTargetData): 53 * dom/Stream.h: Added. 54 (WebCore::Stream::readyState): 55 (WebCore::Stream::label): 56 (WebCore::Stream::refEventTarget): 57 (WebCore::Stream::derefEventTarget): 58 * dom/Stream.idl: Added. 59 * page/CallbackTask.h: 60 (WebCore::CallbackTask1::Scheduler::~Scheduler): 61 * page/MediaStreamClient.h: 62 * page/MediaStreamController.cpp: 63 (WebCore::MediaStreamController::stopGeneratedStream): 64 (WebCore::MediaStreamController::streamFailed): 65 * page/MediaStreamController.h: 66 * page/MediaStreamFrameController.cpp: 67 (WebCore::MediaStreamFrameController::Request::Request): 68 (WebCore::MediaStreamFrameController::GenerateStreamRequest::create): 69 (WebCore::MediaStreamFrameController::GenerateStreamRequest::abort): 70 (WebCore::MediaStreamFrameController::GenerateStreamRequest::GenerateStreamRequest): 71 (WebCore::MediaStreamFrameController::unregister): 72 (WebCore::MediaStreamFrameController::getStreamFromLabel): 73 (WebCore::MediaStreamFrameController::generateStream): 74 (WebCore::MediaStreamFrameController::stopGeneratedStream): 75 (WebCore::MediaStreamFrameController::streamGenerated): 76 (WebCore::MediaStreamFrameController::streamGenerationFailed): 77 (WebCore::MediaStreamFrameController::streamFailed): 78 * page/MediaStreamFrameController.h: 79 (WebCore::MediaStreamFrameController::StreamClient::StreamClient): 80 (WebCore::MediaStreamFrameController::StreamClient::isGeneratedStream): 81 * page/NavigatorUserMediaError.h: 82 (WebCore::NavigatorUserMediaError::create): 83 (WebCore::NavigatorUserMediaError::NavigatorUserMediaError): 84 * page/NavigatorUserMediaSuccessCallback.h: 85 * page/NavigatorUserMediaSuccessCallback.idl: 86 1 87 2011-05-23 Antti Koivisto <antti@apple.com> 2 88 -
trunk/Source/WebCore/CodeGenerators.pri
r87143 r87150 133 133 # dom/EventListener.idl \ 134 134 # dom/EventTarget.idl \ 135 dom/GeneratedStream.idl \ 135 136 dom/HashChangeEvent.idl \ 136 137 dom/KeyboardEvent.idl \ … … 153 154 dom/RangeException.idl \ 154 155 dom/Range.idl \ 156 dom/Stream.idl \ 155 157 dom/StringCallback.idl \ 156 158 dom/Text.idl \ -
trunk/Source/WebCore/DerivedSources.cpp
r87143 r87150 130 130 #include "JSWebKitFlags.cpp" 131 131 #include "JSFloat32Array.cpp" 132 #include "JSGeneratedStream.cpp" 132 133 #include "JSGeolocation.cpp" 133 134 #include "JSGeoposition.cpp" … … 287 288 #include "JSStorageInfoQuotaCallback.cpp" 288 289 #include "JSStorageInfoUsageCallback.cpp" 290 #include "JSStream.cpp" 289 291 #include "JSStringCallback.cpp" 290 292 #include "JSStyleMedia.cpp" -
trunk/Source/WebCore/DerivedSources.make
r87143 r87150 198 198 FileSystemCallback \ 199 199 WebKitFlags \ 200 GeneratedStream \ 200 201 Geolocation \ 201 202 Geoposition \ … … 358 359 StorageInfoQuotaCallback \ 359 360 StorageInfoUsageCallback \ 361 Stream \ 360 362 StringCallback \ 361 363 SVGAElement \ -
trunk/Source/WebCore/GNUmakefile.list.am
r87143 r87150 175 175 DerivedSources/WebCore/JSFloat32Array.cpp \ 176 176 DerivedSources/WebCore/JSFloat32Array.h \ 177 DerivedSources/WebCore/JSGeneratedStream.cpp \ 178 DerivedSources/WebCore/JSGeneratedStream.h \ 177 179 DerivedSources/WebCore/JSGeolocation.cpp \ 178 180 DerivedSources/WebCore/JSGeolocation.h \ … … 450 452 DerivedSources/WebCore/JSStorageInfoQuotaCallback.h \ 451 453 DerivedSources/WebCore/JSStorageInfoUsageCallback.h \ 454 DerivedSources/WebCore/JSStream.cpp \ 455 DerivedSources/WebCore/JSStream.h \ 452 456 DerivedSources/WebCore/JSStyleMedia.cpp \ 453 457 DerivedSources/WebCore/JSStyleMedia.h \ … … 1153 1157 Source/WebCore/dom/ExceptionCode.h \ 1154 1158 Source/WebCore/dom/FragmentScriptingPermission.h \ 1159 Source/WebCore/dom/GeneratedStream.cpp \ 1160 Source/WebCore/dom/GeneratedStream.h \ 1155 1161 Source/WebCore/dom/IgnoreDestructiveWriteCountIncrementer.h \ 1156 1162 Source/WebCore/dom/IconURL.cpp \ … … 1250 1256 Source/WebCore/dom/StaticNodeList.cpp \ 1251 1257 Source/WebCore/dom/StaticNodeList.h \ 1258 Source/WebCore/dom/Stream.cpp \ 1259 Source/WebCore/dom/Stream.h \ 1252 1260 Source/WebCore/dom/StyledElement.cpp \ 1253 1261 Source/WebCore/dom/StyledElement.h \ -
trunk/Source/WebCore/WebCore.gypi
r87143 r87150 1141 1141 'dom/EventListener.idl', 1142 1142 'dom/EventTarget.idl', 1143 'dom/GeneratedStream.idl', 1143 1144 'dom/HashChangeEvent.idl', 1144 1145 'dom/KeyboardEvent.idl', … … 1162 1163 'dom/RangeException.idl', 1163 1164 'dom/RequestAnimationFrameCallback.idl', 1165 'dom/Stream.idl', 1164 1166 'dom/StringCallback.idl', 1165 1167 'dom/Text.idl', … … 2472 2474 'dom/ExceptionBase.h', 2473 2475 'dom/ExceptionCode.cpp', 2476 'dom/GeneratedStream.cpp', 2477 'dom/GeneratedStream.h', 2474 2478 'dom/HashChangeEvent.h', 2475 2479 'dom/IgnoreDestructiveWriteCountIncrementer.h', … … 2554 2558 'dom/StaticNodeList.cpp', 2555 2559 'dom/StaticNodeList.h', 2560 'dom/Stream.cpp', 2561 'dom/Stream.h', 2556 2562 'dom/StringCallback.cpp', 2557 2563 'dom/StringCallback.h', -
trunk/Source/WebCore/WebCore.pro
r87143 r87150 3105 3105 contains(DEFINES, ENABLE_MEDIA_STREAM=1) { 3106 3106 HEADERS += \ 3107 dom/GeneratedStream.h \ 3108 dom/Stream.h \ 3107 3109 page/CallbackTask.h \ 3108 3110 page/MediaStreamClient.h \ … … 3114 3116 3115 3117 SOURCES += \ 3118 dom/GeneratedStream.cpp \ 3119 dom/Stream.cpp \ 3116 3120 page/MediaStreamController.cpp \ 3117 3121 page/MediaStreamFrameController.cpp -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r87143 r87150 5319 5319 </File> 5320 5320 <File 5321 RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSGeneratedStream.cpp" 5322 > 5323 <FileConfiguration 5324 Name="Debug|Win32" 5325 ExcludedFromBuild="true" 5326 > 5327 <Tool 5328 Name="VCCLCompilerTool" 5329 /> 5330 </FileConfiguration> 5331 <FileConfiguration 5332 Name="Release|Win32" 5333 ExcludedFromBuild="true" 5334 > 5335 <Tool 5336 Name="VCCLCompilerTool" 5337 /> 5338 </FileConfiguration> 5339 <FileConfiguration 5340 Name="Debug_Cairo_CFLite|Win32" 5341 ExcludedFromBuild="true" 5342 > 5343 <Tool 5344 Name="VCCLCompilerTool" 5345 /> 5346 </FileConfiguration> 5347 <FileConfiguration 5348 Name="Release_Cairo_CFLite|Win32" 5349 ExcludedFromBuild="true" 5350 > 5351 <Tool 5352 Name="VCCLCompilerTool" 5353 /> 5354 </FileConfiguration> 5355 <FileConfiguration 5356 Name="Debug_All|Win32" 5357 ExcludedFromBuild="true" 5358 > 5359 <Tool 5360 Name="VCCLCompilerTool" 5361 /> 5362 </FileConfiguration> 5363 <FileConfiguration 5364 Name="Production|Win32" 5365 ExcludedFromBuild="true" 5366 > 5367 <Tool 5368 Name="VCCLCompilerTool" 5369 /> 5370 </FileConfiguration> 5371 </File> 5372 <File 5373 RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSGeneratedStream.h" 5374 > 5375 </File> 5376 <File 5321 5377 RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSGeolocation.cpp" 5322 5378 > … … 13420 13476 <File 13421 13477 RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSStorageInfoUsageCallback.h" 13478 > 13479 </File> 13480 <File 13481 RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSStream.cpp" 13482 > 13483 <FileConfiguration 13484 Name="Debug|Win32" 13485 ExcludedFromBuild="true" 13486 > 13487 <Tool 13488 Name="VCCLCompilerTool" 13489 /> 13490 </FileConfiguration> 13491 <FileConfiguration 13492 Name="Release|Win32" 13493 ExcludedFromBuild="true" 13494 > 13495 <Tool 13496 Name="VCCLCompilerTool" 13497 /> 13498 </FileConfiguration> 13499 <FileConfiguration 13500 Name="Debug_Cairo_CFLite|Win32" 13501 ExcludedFromBuild="true" 13502 > 13503 <Tool 13504 Name="VCCLCompilerTool" 13505 /> 13506 </FileConfiguration> 13507 <FileConfiguration 13508 Name="Release_Cairo_CFLite|Win32" 13509 ExcludedFromBuild="true" 13510 > 13511 <Tool 13512 Name="VCCLCompilerTool" 13513 /> 13514 </FileConfiguration> 13515 <FileConfiguration 13516 Name="Debug_All|Win32" 13517 ExcludedFromBuild="true" 13518 > 13519 <Tool 13520 Name="VCCLCompilerTool" 13521 /> 13522 </FileConfiguration> 13523 <FileConfiguration 13524 Name="Production|Win32" 13525 ExcludedFromBuild="true" 13526 > 13527 <Tool 13528 Name="VCCLCompilerTool" 13529 /> 13530 </FileConfiguration> 13531 </File> 13532 <File 13533 RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSStream.h" 13422 13534 > 13423 13535 </File> … … 44699 44811 </File> 44700 44812 <File 44813 RelativePath="..\dom\GeneratedStream.cpp" 44814 > 44815 <FileConfiguration 44816 Name="Debug|Win32" 44817 ExcludedFromBuild="true" 44818 > 44819 <Tool 44820 Name="VCCLCompilerTool" 44821 /> 44822 </FileConfiguration> 44823 <FileConfiguration 44824 Name="Release|Win32" 44825 ExcludedFromBuild="true" 44826 > 44827 <Tool 44828 Name="VCCLCompilerTool" 44829 /> 44830 </FileConfiguration> 44831 <FileConfiguration 44832 Name="Debug_Cairo_CFLite|Win32" 44833 ExcludedFromBuild="true" 44834 > 44835 <Tool 44836 Name="VCCLCompilerTool" 44837 /> 44838 </FileConfiguration> 44839 <FileConfiguration 44840 Name="Release_Cairo_CFLite|Win32" 44841 ExcludedFromBuild="true" 44842 > 44843 <Tool 44844 Name="VCCLCompilerTool" 44845 /> 44846 </FileConfiguration> 44847 <FileConfiguration 44848 Name="Debug_All|Win32" 44849 ExcludedFromBuild="true" 44850 > 44851 <Tool 44852 Name="VCCLCompilerTool" 44853 /> 44854 </FileConfiguration> 44855 <FileConfiguration 44856 Name="Production|Win32" 44857 ExcludedFromBuild="true" 44858 > 44859 <Tool 44860 Name="VCCLCompilerTool" 44861 /> 44862 </FileConfiguration> 44863 </File> 44864 <File 44865 RelativePath="..\dom\GeneratedStream.h" 44866 > 44867 </File> 44868 <File 44701 44869 RelativePath="..\dom\HashChangeEvent.h" 44702 44870 > … … 47048 47216 <File 47049 47217 RelativePath="..\dom\StaticNodeList.h" 47218 > 47219 </File> 47220 <File 47221 RelativePath="..\dom\Stream.cpp" 47222 > 47223 <FileConfiguration 47224 Name="Debug|Win32" 47225 ExcludedFromBuild="true" 47226 > 47227 <Tool 47228 Name="VCCLCompilerTool" 47229 /> 47230 </FileConfiguration> 47231 <FileConfiguration 47232 Name="Release|Win32" 47233 ExcludedFromBuild="true" 47234 > 47235 <Tool 47236 Name="VCCLCompilerTool" 47237 /> 47238 </FileConfiguration> 47239 <FileConfiguration 47240 Name="Debug_Cairo_CFLite|Win32" 47241 ExcludedFromBuild="true" 47242 > 47243 <Tool 47244 Name="VCCLCompilerTool" 47245 /> 47246 </FileConfiguration> 47247 <FileConfiguration 47248 Name="Release_Cairo_CFLite|Win32" 47249 ExcludedFromBuild="true" 47250 > 47251 <Tool 47252 Name="VCCLCompilerTool" 47253 /> 47254 </FileConfiguration> 47255 <FileConfiguration 47256 Name="Debug_All|Win32" 47257 ExcludedFromBuild="true" 47258 > 47259 <Tool 47260 Name="VCCLCompilerTool" 47261 /> 47262 </FileConfiguration> 47263 <FileConfiguration 47264 Name="Production|Win32" 47265 ExcludedFromBuild="true" 47266 > 47267 <Tool 47268 Name="VCCLCompilerTool" 47269 /> 47270 </FileConfiguration> 47271 </File> 47272 <File 47273 RelativePath="..\dom\Stream.h" 47050 47274 > 47051 47275 </File> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r87143 r87150 4106 4106 B1E5459B134629C10092A545 /* NavigatorUserMediaErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E5458F134629C10092A545 /* NavigatorUserMediaErrorCallback.h */; }; 4107 4107 B1E5459D134629C10092A545 /* NavigatorUserMediaSuccessCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E54591134629C10092A545 /* NavigatorUserMediaSuccessCallback.h */; }; 4108 B1E5457A1346291F0092A545 /* GeneratedStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1E545711346291F0092A545 /* GeneratedStream.cpp */; }; 4109 B1E5457B1346291F0092A545 /* GeneratedStream.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E545721346291F0092A545 /* GeneratedStream.h */; }; 4110 B1E5457D1346291F0092A545 /* Stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1E545741346291F0092A545 /* Stream.cpp */; }; 4111 B1E5457E1346291F0092A545 /* Stream.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E545751346291F0092A545 /* Stream.h */; }; 4108 4112 B1E545DF13462B0B0092A545 /* JSNavigatorUserMediaError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1E545D113462B0B0092A545 /* JSNavigatorUserMediaError.cpp */; }; 4109 4113 B1E545E013462B0B0092A545 /* JSNavigatorUserMediaError.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E545D213462B0B0092A545 /* JSNavigatorUserMediaError.h */; }; … … 4112 4116 B1E545E313462B0B0092A545 /* JSNavigatorUserMediaSuccessCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1E545D513462B0B0092A545 /* JSNavigatorUserMediaSuccessCallback.cpp */; }; 4113 4117 B1E545E413462B0B0092A545 /* JSNavigatorUserMediaSuccessCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E545D613462B0B0092A545 /* JSNavigatorUserMediaSuccessCallback.h */; }; 4118 B1E545DD13462B0B0092A545 /* JSGeneratedStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1E545CF13462B0B0092A545 /* JSGeneratedStream.cpp */; }; 4119 B1E545DE13462B0B0092A545 /* JSGeneratedStream.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E545D013462B0B0092A545 /* JSGeneratedStream.h */; }; 4120 B1E545E513462B0B0092A545 /* JSStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1E545D713462B0B0092A545 /* JSStream.cpp */; }; 4121 B1E545E613462B0B0092A545 /* JSStream.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E545D813462B0B0092A545 /* JSStream.h */; }; 4114 4122 B20111070AB7740500DB0E68 /* JSSVGAElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B20111050AB7740500DB0E68 /* JSSVGAElement.cpp */; }; 4115 4123 B20111080AB7740500DB0E68 /* JSSVGAElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B20111060AB7740500DB0E68 /* JSSVGAElement.h */; }; … … 10379 10387 B1E5458B134629C10092A545 /* MediaStreamController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamController.cpp; sourceTree = "<group>"; }; 10380 10388 B1E5458C134629C10092A545 /* MediaStreamController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamController.h; sourceTree = "<group>"; }; 10389 B1E545711346291F0092A545 /* GeneratedStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeneratedStream.cpp; sourceTree = "<group>"; }; 10390 B1E545721346291F0092A545 /* GeneratedStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratedStream.h; sourceTree = "<group>"; }; 10391 B1E545731346291F0092A545 /* GeneratedStream.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GeneratedStream.idl; sourceTree = "<group>"; }; 10392 B1E545741346291F0092A545 /* Stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Stream.cpp; sourceTree = "<group>"; }; 10393 B1E545751346291F0092A545 /* Stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stream.h; sourceTree = "<group>"; }; 10394 B1E545761346291F0092A545 /* Stream.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Stream.idl; sourceTree = "<group>"; }; 10381 10395 B1E5458D134629C10092A545 /* NavigatorUserMediaError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorUserMediaError.h; sourceTree = "<group>"; }; 10382 10396 B1E5458E134629C10092A545 /* NavigatorUserMediaError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorUserMediaError.idl; sourceTree = "<group>"; }; … … 10385 10399 B1E54591134629C10092A545 /* NavigatorUserMediaSuccessCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorUserMediaSuccessCallback.h; sourceTree = "<group>"; }; 10386 10400 B1E54592134629C10092A545 /* NavigatorUserMediaSuccessCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorUserMediaSuccessCallback.idl; sourceTree = "<group>"; }; 10401 B1E545CF13462B0B0092A545 /* JSGeneratedStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGeneratedStream.cpp; sourceTree = "<group>"; }; 10402 B1E545D013462B0B0092A545 /* JSGeneratedStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGeneratedStream.h; sourceTree = "<group>"; }; 10403 B1E545D713462B0B0092A545 /* JSStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStream.cpp; sourceTree = "<group>"; }; 10404 B1E545D813462B0B0092A545 /* JSStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStream.h; sourceTree = "<group>"; }; 10387 10405 B1E545D113462B0B0092A545 /* JSNavigatorUserMediaError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigatorUserMediaError.cpp; sourceTree = "<group>"; }; 10388 10406 B1E545D213462B0B0092A545 /* JSNavigatorUserMediaError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNavigatorUserMediaError.h; sourceTree = "<group>"; }; … … 16877 16895 93F9B7720BA5FDDC00854064 /* JSEntityReference.cpp */, 16878 16896 93F9B7730BA5FDDC00854064 /* JSEntityReference.h */, 16897 B1E545CF13462B0B0092A545 /* JSGeneratedStream.cpp */, 16898 B1E545D013462B0B0092A545 /* JSGeneratedStream.h */, 16879 16899 FE80DA5F0E9C4703000D6F75 /* JSGeolocation.cpp */, 16880 16900 FE80DA600E9C4703000D6F75 /* JSGeolocation.h */, … … 16901 16921 75415D53129AB2D2003AD669 /* JSSpeechInputResultList.cpp */, 16902 16922 75415D54129AB2D2003AD669 /* JSSpeechInputResultList.h */, 16923 B1E545D713462B0B0092A545 /* JSStream.cpp */, 16924 B1E545D813462B0B0092A545 /* JSStream.h */, 16903 16925 65DF31EF09D1CC60000BE325 /* JSText.cpp */, 16904 16926 65DF31F009D1CC60000BE325 /* JSText.h */, … … 19313 19335 935FBCF109BA143B00E230B1 /* ExceptionCode.h */, 19314 19336 A853123C11D0471B00D4D077 /* FragmentScriptingPermission.h */, 19337 B1E545711346291F0092A545 /* GeneratedStream.cpp */, 19338 B1E545721346291F0092A545 /* GeneratedStream.h */, 19339 B1E545731346291F0092A545 /* GeneratedStream.idl */, 19315 19340 2442BBF81194C9D300D49469 /* HashChangeEvent.h */, 19316 19341 8482B7441198C32E00BFB005 /* HashChangeEvent.idl */, … … 19432 19457 BC7FA62C0D1F0EFF00DB22A9 /* StaticNodeList.cpp */, 19433 19458 BC7FA62B0D1F0EFF00DB22A9 /* StaticNodeList.h */, 19459 B1E545741346291F0092A545 /* Stream.cpp */, 19460 B1E545751346291F0092A545 /* Stream.h */, 19461 B1E545761346291F0092A545 /* Stream.idl */, 19434 19462 8102C5871325BB1100DDE67A /* StringCallback.cpp */, 19435 19463 81AC6C35131C57D30009A7E0 /* StringCallback.h */, … … 22840 22868 598365DD1355F557001B185D /* JSPositionCallback.h in Headers */, 22841 22869 598365DF1355F562001B185D /* JSPositionErrorCallback.h in Headers */, 22870 B1E5457B1346291F0092A545 /* GeneratedStream.h in Headers */, 22871 B1E5457E1346291F0092A545 /* Stream.h in Headers */, 22872 B1E545DE13462B0B0092A545 /* JSGeneratedStream.h in Headers */, 22873 B1E545E613462B0B0092A545 /* JSStream.h in Headers */, 22842 22874 ); 22843 22875 runOnlyForDeploymentPostprocessing = 0; … … 25515 25547 598365E41355F604001B185D /* JSPositionCallback.cpp in Sources */, 25516 25548 598365E61355F60D001B185D /* JSPositionErrorCallback.cpp in Sources */, 25549 B1E5457A1346291F0092A545 /* GeneratedStream.cpp in Sources */, 25550 B1E5457D1346291F0092A545 /* Stream.cpp in Sources */, 25551 B1E545DD13462B0B0092A545 /* JSGeneratedStream.cpp in Sources */, 25552 B1E545E513462B0B0092A545 /* JSStream.cpp in Sources */, 25517 25553 ); 25518 25554 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/WebCore/bindings/js/JSEventTarget.cpp
r84641 r87150 101 101 #endif 102 102 103 #if ENABLE(MEDIA_STREAM) 104 #include "GeneratedStream.h" 105 #include "Stream.h" 106 #endif 107 103 108 using namespace JSC; 104 109 … … 190 195 #endif 191 196 197 #if ENABLE(MEDIA_STREAM) 198 if (GeneratedStream* generatedStream = target->toGeneratedStream()) 199 return toJS(exec, globalObject, generatedStream); 200 201 if (Stream* stream = target->toStream()) 202 return toJS(exec, globalObject, stream); 203 #endif 204 192 205 ASSERT_NOT_REACHED(); 193 206 return jsNull(); -
trunk/Source/WebCore/bindings/v8/V8DOMWrapper.cpp
r84371 r87150 49 49 #include "V8FileReader.h" 50 50 #include "V8FileWriter.h" 51 #include "V8GeneratedStream.h" 51 52 #include "V8HTMLCollection.h" 52 53 #include "V8HTMLDocument.h" … … 65 66 #include "V8SharedWorker.h" 66 67 #include "V8SharedWorkerContext.h" 68 #include "V8Stream.h" 67 69 #include "V8StyleSheet.h" 68 70 #include "V8WebSocket.h" … … 449 451 #endif 450 452 453 #if ENABLE(MEDIA_STREAM) 454 if (GeneratedStream* generatedStream = target->toGeneratedStream()) 455 return toV8(generatedStream); 456 457 if (Stream* stream = target->toStream()) 458 return toV8(stream); 459 #endif 460 451 461 ASSERT(0); 452 462 return notHandledByInterceptor(); -
trunk/Source/WebCore/dom/DOMAllInOne.cpp
r87125 r87150 76 76 #include "ExceptionBase.cpp" 77 77 #include "ExceptionCode.cpp" 78 #include "GeneratedStream.cpp" 78 79 #include "IconURL.cpp" 79 80 #include "KeyboardEvent.cpp" … … 116 117 #include "StaticHashSetNodeList.cpp" 117 118 #include "StaticNodeList.cpp" 119 #include "Stream.cpp" 118 120 #include "StyleElement.cpp" 119 121 #include "StyledElement.cpp" -
trunk/Source/WebCore/dom/EventTarget.cpp
r84741 r87150 206 206 #endif 207 207 208 #if ENABLE(MEDIA_STREAM) 209 Stream* EventTarget::toStream() 210 { 211 return 0; 212 } 213 214 GeneratedStream* EventTarget::toGeneratedStream() 215 { 216 return 0; 217 } 218 #endif 219 208 220 bool EventTarget::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener, bool useCapture) 209 221 { -
trunk/Source/WebCore/dom/EventTarget.h
r86135 r87150 50 50 class FileReader; 51 51 class FileWriter; 52 class GeneratedStream; 52 53 class IDBDatabase; 53 54 class IDBRequest; … … 62 63 class SharedWorker; 63 64 class SharedWorkerContext; 65 class Stream; 64 66 class WebSocket; 65 67 class Worker; … … 148 150 #endif 149 151 152 #if ENABLE(MEDIA_STREAM) 153 virtual Stream* toStream(); 154 virtual GeneratedStream* toGeneratedStream(); 155 #endif 156 150 157 virtual ScriptExecutionContext* scriptExecutionContext() const = 0; 151 158 -
trunk/Source/WebCore/dom/GeneratedStream.h
r87149 r87150 23 23 */ 24 24 25 #ifndef MediaStreamClient_h26 #define MediaStreamClient_h25 #ifndef GeneratedStream_h 26 #define GeneratedStream_h 27 27 28 28 #if ENABLE(MEDIA_STREAM) 29 29 30 #include "Stream.h" 30 31 #include <wtf/Forward.h> 31 32 32 33 namespace WebCore { 33 34 34 class SecurityOrigin; 35 class GeneratedStream : public Stream { 36 public: 37 // FIXME: add audio and video tracks when available. 38 static PassRefPtr<GeneratedStream> create(MediaStreamFrameController*, const String& label); 39 virtual ~GeneratedStream(); 35 40 36 enum GenerateStreamOptionFlag { 37 GenerateStreamRequestAudio = 1, 38 GenerateStreamRequestVideoFacingUser = 1 << 1, 39 GenerateStreamRequestVideoFacingEnvironment = 1 << 2, 40 }; 41 void stop(); 41 42 42 typedef unsigned GenerateStreamOptionFlags; 43 // MediaStreamFrameController::StreamClient implementation. 44 virtual void detachEmbedder(); 43 45 44 class MediaStreamClient { 45 public: 46 // Notify the embedder client about the page controller being destroyed. 47 virtual void mediaStreamDestroyed() = 0; 46 // EventTarget. 47 virtual GeneratedStream* toGeneratedStream(); 48 48 49 // Generate a new local stream. 50 virtual void generateStream(int requestId, GenerateStreamOptionFlags, PassRefPtr<SecurityOrigin>) = 0; 49 private: 50 GeneratedStream(MediaStreamFrameController*, const String& label); 51 class DispatchUpdateTask; 52 friend class DispatchUpdateTask; 51 53 52 protected: 53 virtual ~MediaStreamClient() { } 54 void onStop(); 54 55 }; 55 56 … … 58 59 #endif // ENABLE(MEDIA_STREAM) 59 60 60 #endif // MediaStreamClient_h61 #endif // GeneratedStream_h -
trunk/Source/WebCore/dom/GeneratedStream.idl
r87149 r87150 23 23 */ 24 24 25 module window{25 module core { 26 26 interface [ 27 27 Conditional=MEDIA_STREAM, 28 Callback=FunctionOnly 29 ] NavigatorUserMediaSuccessCallback { 30 // FIXME: implement the correct type when the GeneratedStream class is available. 31 // boolean handleEvent(in GeneratedStream stream); 32 boolean handleEvent(in int dummy); 28 GenerateNativeConverter, 29 EventTarget 30 ] GeneratedStream : Stream { 31 void stop(); 32 33 // FIXME: implement audio and video tracks when available. 33 34 }; 34 35 -
trunk/Source/WebCore/dom/Stream.cpp
r87149 r87150 23 23 */ 24 24 25 #i fndef MediaStreamClient_h26 # define MediaStreamClient_h25 #include "config.h" 26 #include "Stream.h" 27 27 28 28 #if ENABLE(MEDIA_STREAM) 29 29 30 #include <wtf/Forward.h> 30 #include "Event.h" 31 #include "ScriptExecutionContext.h" 31 32 32 33 namespace WebCore { 33 34 34 class SecurityOrigin; 35 PassRefPtr<Stream> Stream::create(MediaStreamFrameController* frameController, const String& label) 36 { 37 return adoptRef(new Stream(frameController, label)); 38 } 35 39 36 enum GenerateStreamOptionFlag { 37 GenerateStreamRequestAudio = 1,38 GenerateStreamRequestVideoFacingUser = 1 << 1,39 GenerateStreamRequestVideoFacingEnvironment = 1 << 2, 40 } ;40 Stream::Stream(MediaStreamFrameController* frameController, const String& label, bool isGeneratedStream) 41 : StreamClient(frameController, label, isGeneratedStream) 42 , m_readyState(LIVE) 43 { 44 } 41 45 42 typedef unsigned GenerateStreamOptionFlags; 46 Stream::~Stream() 47 { 48 } 43 49 44 class MediaStreamClient { 45 public: 46 // Notify the embedder client about the page controller being destroyed.47 virtual void mediaStreamDestroyed() = 0; 50 Stream* Stream::toStream() 51 { 52 return this; 53 } 48 54 49 // Generate a new local stream. 50 virtual void generateStream(int requestId, GenerateStreamOptionFlags, PassRefPtr<SecurityOrigin>) = 0; 55 void Stream::streamEnded() 56 { 57 ASSERT(m_readyState != ENDED); 58 m_readyState = ENDED; 59 dispatchEvent(Event::create(eventNames().endedEvent, false, false)); 60 } 51 61 52 protected: 53 virtual ~MediaStreamClient() { } 54 }; 62 ScriptExecutionContext* Stream::scriptExecutionContext() const 63 { 64 return mediaStreamFrameController() ? mediaStreamFrameController()->scriptExecutionContext() : 0; 65 } 66 67 EventTargetData* Stream::eventTargetData() 68 { 69 return &m_eventTargetData; 70 } 71 72 EventTargetData* Stream::ensureEventTargetData() 73 { 74 return &m_eventTargetData; 75 } 55 76 56 77 } // namespace WebCore 57 78 58 79 #endif // ENABLE(MEDIA_STREAM) 59 60 #endif // MediaStreamClient_h -
trunk/Source/WebCore/dom/Stream.idl
r87149 r87150 23 23 */ 24 24 25 module window{25 module core { 26 26 interface [ 27 27 Conditional=MEDIA_STREAM, 28 Callback=FunctionOnly 29 ] NavigatorUserMediaSuccessCallback { 30 // FIXME: implement the correct type when the GeneratedStream class is available. 31 // boolean handleEvent(in GeneratedStream stream); 32 boolean handleEvent(in int dummy); 28 EventTarget 29 ] Stream { 30 readonly attribute DOMString label; 31 // FIXME: implement the record method when StreamRecorder is available. 32 33 const unsigned short LIVE = 1; 34 const unsigned short ENDED = 2; 35 readonly attribute unsigned short readyState; 36 attribute EventListener onended; 37 38 // EventTarget interface 39 void addEventListener(in DOMString type, 40 in EventListener listener, 41 in boolean useCapture); 42 void removeEventListener(in DOMString type, 43 in EventListener listener, 44 in boolean useCapture); 45 boolean dispatchEvent(in Event event) 46 raises(EventException); 33 47 }; 34 48 -
trunk/Source/WebCore/page/CallbackTask.h
r86583 r87150 52 52 class Scheduler { 53 53 public: 54 virtual ~Scheduler() { } 55 54 56 bool scheduleCallback(ScriptExecutionContext* context, PassRefPtr<ArgumentType> data) 55 57 { -
trunk/Source/WebCore/page/MediaStreamClient.h
r86583 r87150 50 50 virtual void generateStream(int requestId, GenerateStreamOptionFlags, PassRefPtr<SecurityOrigin>) = 0; 51 51 52 // Stop a generated stream. 53 virtual void stopGeneratedStream(const String& streamLabel) = 0; 54 52 55 protected: 53 56 virtual ~MediaStreamClient() { } -
trunk/Source/WebCore/page/MediaStreamController.cpp
r86583 r87150 113 113 } 114 114 115 void MediaStreamController::stopGeneratedStream(const String& streamLabel) 116 { 117 m_client->stopGeneratedStream(streamLabel); 118 } 119 115 120 void MediaStreamController::streamGenerated(int controllerRequestId, const String& streamLabel) 116 121 { … … 135 140 } 136 141 142 void MediaStreamController::streamFailed(const String& streamLabel) 143 { 144 // Don't assert since the frame controller can have been destroyed by the time this is called. 145 if (m_streams.contains(streamLabel)) 146 m_streams.get(streamLabel)->streamFailed(streamLabel); 147 } 148 137 149 } // namespace WebCore 138 150 -
trunk/Source/WebCore/page/MediaStreamController.h
r86583 r87150 51 51 52 52 void generateStream(MediaStreamFrameController*, int requestId, GenerateStreamOptionFlags, PassRefPtr<SecurityOrigin>); 53 void stopGeneratedStream(const String& streamLabel); 53 54 54 55 void streamGenerated(int requestId, const String& streamLabel); 55 56 void streamGenerationFailed(int requestId, NavigatorUserMediaError::ErrorCode); 57 void streamFailed(const String& streamLabel); 56 58 57 59 private: -
trunk/Source/WebCore/page/MediaStreamFrameController.cpp
r86583 r87150 31 31 #include "Document.h" 32 32 #include "Frame.h" 33 #include "GeneratedStream.h" 33 34 #include "MediaStreamController.h" 34 35 #include "NavigatorUserMediaErrorCallback.h" … … 43 44 WTF_MAKE_NONCOPYABLE(Request); 44 45 public: 45 Request(ScriptExecutionContext* scriptExecutionContext)46 : m_scriptExecutionContext(scriptExecutionContext) { }47 48 46 virtual ~Request() { } 49 47 … … 53 51 54 52 virtual void abort() = 0; 53 54 protected: 55 Request(ScriptExecutionContext* scriptExecutionContext) 56 : m_scriptExecutionContext(scriptExecutionContext) { } 55 57 56 58 private: … … 63 65 WTF_MAKE_NONCOPYABLE(GenerateStreamRequest); 64 66 public: 67 static PassRefPtr<GenerateStreamRequest> create(ScriptExecutionContext* scriptExecutionContext, 68 PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, 69 PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback) 70 { 71 return adoptRef(new GenerateStreamRequest(scriptExecutionContext, successCallback, errorCallback)); 72 } 73 74 virtual ~GenerateStreamRequest() { } 75 76 virtual bool isGenerateStreamRequest() const { return true; } 77 78 virtual void abort() 79 { 80 if (m_errorCallback) { 81 RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::PERMISSION_DENIED); 82 // The callback itself is made with the JS callback's context, not with the frame's context. 83 m_errorCallback->scheduleCallback(scriptExecutionContext(), error); 84 } 85 } 86 87 PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback() const { return m_successCallback; } 88 PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback() const { return m_errorCallback; } 89 90 private: 65 91 GenerateStreamRequest(ScriptExecutionContext* scriptExecutionContext, 66 92 PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, … … 70 96 , m_errorCallback(errorCallback) { } 71 97 72 virtual ~GenerateStreamRequest() { }73 74 virtual bool isGenerateStreamRequest() const { return true; }75 76 virtual void abort()77 {78 if (m_errorCallback) {79 RefPtr<NavigatorUserMediaError> error = adoptRef(new NavigatorUserMediaError(NavigatorUserMediaError::PERMISSION_DENIED));80 // The callback itself is made with the JS callback's context, not with the frame's context.81 m_errorCallback->scheduleCallback(scriptExecutionContext(), error);82 }83 }84 85 PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback() const { return m_successCallback; }86 PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback() const { return m_errorCallback; }87 88 private:89 98 RefPtr<NavigatorUserMediaSuccessCallback> m_successCallback; 90 99 RefPtr<NavigatorUserMediaErrorCallback> m_errorCallback; … … 153 162 { 154 163 ASSERT(m_streams.contains(client->clientId())); 164 165 // Assuming we should stop any live streams when losing access to the embedder. 166 if (client->isGeneratedStream()) { 167 GeneratedStream* stream = static_cast<GeneratedStream*>(client); 168 if (stream->readyState() == Stream::LIVE) 169 stopGeneratedStream(stream->label()); 170 } 171 155 172 m_streams.remove(client->clientId()); 173 } 174 175 Stream* MediaStreamFrameController::getStreamFromLabel(const String& label) const 176 { 177 ASSERT(m_streams.contains(label)); 178 ASSERT(m_streams.get(label)->isStream()); 179 return static_cast<Stream*>(m_streams.get(label)); 156 180 } 157 181 … … 254 278 255 279 int requestId = m_requests.getNextId(); 256 m_requests.add(requestId, adoptRef(new GenerateStreamRequest(scriptExecutionContext(), successCallback, errorCallback)));280 m_requests.add(requestId, GenerateStreamRequest::create(scriptExecutionContext(), successCallback, errorCallback)); 257 281 258 282 if (!isClientAvailable()) { … … 265 289 } 266 290 291 void MediaStreamFrameController::stopGeneratedStream(const String& streamLabel) 292 { 293 ASSERT(m_streams.contains(streamLabel)); 294 ASSERT(m_streams.get(streamLabel)->isGeneratedStream()); 295 296 if (isClientAvailable()) 297 pageController()->stopGeneratedStream(streamLabel); 298 } 299 267 300 void MediaStreamFrameController::streamGenerated(int requestId, const String& label) 268 301 { 269 302 // Don't assert since the request can have been aborted as a result of embedder detachment. 270 if (m_requests.contains(requestId)) { 271 ASSERT(m_requests.get(requestId)->isGenerateStreamRequest()); 272 ASSERT(!label.isNull()); 273 274 // FIXME: create a GeneratedStream object and invoke the callback when the class is available. 275 m_requests.remove(requestId); 276 } 303 if (!m_requests.contains(requestId)) 304 return; 305 306 ASSERT(m_requests.get(requestId)->isGenerateStreamRequest()); 307 ASSERT(!label.isNull()); 308 309 RefPtr<GenerateStreamRequest> streamRequest = static_cast<GenerateStreamRequest*>(m_requests.get(requestId).get()); 310 RefPtr<GeneratedStream> generatedStream = GeneratedStream::create(this, label); 311 m_streams.add(label, generatedStream.get()); 312 m_requests.remove(requestId); 313 streamRequest->successCallback()->handleEvent(generatedStream.get()); 277 314 } 278 315 … … 280 317 { 281 318 // Don't assert since the request can have been aborted as a result of embedder detachment. 282 if (m_requests.contains(requestId)) { 283 ASSERT(m_requests.get(requestId)->isGenerateStreamRequest()); 284 285 RefPtr<GenerateStreamRequest> streamRequest = static_cast<GenerateStreamRequest*>(m_requests.get(requestId).get()); 286 m_requests.remove(requestId); 287 288 if (streamRequest->errorCallback()) { 289 RefPtr<NavigatorUserMediaError> error = adoptRef(new NavigatorUserMediaError(code)); 290 streamRequest->errorCallback()->handleEvent(error.get()); 291 } 292 } 293 } 319 if (!m_requests.contains(requestId)) 320 return; 321 322 ASSERT(m_requests.get(requestId)->isGenerateStreamRequest()); 323 324 RefPtr<GenerateStreamRequest> streamRequest = static_cast<GenerateStreamRequest*>(m_requests.get(requestId).get()); 325 m_requests.remove(requestId); 326 327 if (streamRequest->errorCallback()) { 328 RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(code); 329 streamRequest->errorCallback()->handleEvent(error.get()); 330 } 331 } 332 333 void MediaStreamFrameController::streamFailed(const String& label) 334 { 335 getStreamFromLabel(label)->streamEnded(); 336 } 337 294 338 295 339 } // namespace WebCore -
trunk/Source/WebCore/page/MediaStreamFrameController.h
r86583 r87150 39 39 40 40 class Frame; 41 class GeneratedStream; 41 42 class MediaStreamController; 42 43 class NavigatorUserMediaErrorCallback; … … 45 46 class ScriptExecutionContext; 46 47 class SecurityOrigin; 48 class Stream; 47 49 48 50 class MediaStreamFrameController { … … 102 104 class StreamClient : public ClientBase<String> { 103 105 public: 104 StreamClient(MediaStreamFrameController* frameController, const String& label) : ClientBase<String>(frameController, label) { } 106 StreamClient(MediaStreamFrameController* frameController, const String& label, bool isGeneratedStream) 107 : ClientBase<String>(frameController, label) 108 , m_isGeneratedStream(isGeneratedStream) { } 109 105 110 virtual ~StreamClient() { unregister(); } 106 111 107 112 virtual bool isStream() const { return true; } 113 114 // Accessed by the destructor. 115 virtual bool isGeneratedStream() const { return m_isGeneratedStream; } 108 116 109 117 // Stream has ended for some external reason. … … 112 120 private: 113 121 virtual void unregister() { unregisterClient(this); } 122 bool m_isGeneratedStream; 114 123 }; 115 124 … … 131 140 void generateStream(const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>, ExceptionCode&); 132 141 142 // Stop a generated stream. 143 void stopGeneratedStream(const String& streamLabel); 144 133 145 // --- Calls coming back from the controller. --- // 134 146 … … 138 150 // Report a failure in the generation of a new stream. 139 151 void streamGenerationFailed(int requestId, NavigatorUserMediaError::ErrorCode); 152 153 // Report the end of a stream for external reasons. 154 void streamFailed(const String& streamLabel); 140 155 141 156 private: … … 178 193 void unregister(StreamClient*); 179 194 MediaStreamController* pageController() const; 195 Stream* getStreamFromLabel(const String&) const; 180 196 181 197 RequestMap m_requests; -
trunk/Source/WebCore/page/NavigatorUserMediaError.h
r83287 r87150 26 26 #define NavigatorUserMediaError_h 27 27 28 #include <wtf/PassRefPtr.h> 28 29 #include <wtf/RefCounted.h> 29 30 … … 39 40 }; 40 41 41 NavigatorUserMediaError(ErrorCode code) : m_code(code) { } 42 static PassRefPtr<NavigatorUserMediaError> create(ErrorCode code) 43 { 44 return adoptRef(new NavigatorUserMediaError(code)); 45 } 46 42 47 virtual ~NavigatorUserMediaError() { } 43 48 … … 45 50 46 51 private: 52 NavigatorUserMediaError(ErrorCode code) : m_code(code) { } 53 47 54 ErrorCode m_code; 48 55 }; -
trunk/Source/WebCore/page/NavigatorUserMediaSuccessCallback.h
r83287 r87150 32 32 namespace WebCore { 33 33 34 class GeneratedStream; 35 34 36 class NavigatorUserMediaSuccessCallback : public RefCounted<NavigatorUserMediaSuccessCallback> { 35 37 public: 36 38 virtual ~NavigatorUserMediaSuccessCallback() { } 37 // FIXME: set correct type when the GeneratedStream class is available. 38 // virtual bool handleEvent(GeneratedStream*) = 0; 39 virtual bool handleEvent(int dummy) = 0; 39 virtual bool handleEvent(GeneratedStream*) = 0; 40 40 }; 41 41 -
trunk/Source/WebCore/page/NavigatorUserMediaSuccessCallback.idl
r83287 r87150 28 28 Callback=FunctionOnly 29 29 ] NavigatorUserMediaSuccessCallback { 30 // FIXME: implement the correct type when the GeneratedStream class is available. 31 // boolean handleEvent(in GeneratedStream stream); 32 boolean handleEvent(in int dummy); 30 boolean handleEvent(in GeneratedStream stream); 33 31 }; 34 32
Note: See TracChangeset
for help on using the changeset viewer.