Title: [156108] trunk
Revision
156108
Author
[email protected]
Date
2013-09-19 12:06:54 -0700 (Thu, 19 Sep 2013)

Log Message

MediaStream API: update NavigatorUserMediaError object to match spec
https://bugs.webkit.org/show_bug.cgi?id=121584

Reviewed by Dean Jackson.

Source/WebCore: 

No new tests, updated getusermedia.html.

* CMakeLists.txt: Add NavigatorUserMediaError.cpp.
* GNUmakefile.list.am: Ditto.

* Modules/mediastream/NavigatorUserMediaError.cpp: Added.
* Modules/mediastream/NavigatorUserMediaError.h: Derive from DOMError, get rid of "message" attribute.
* Modules/mediastream/NavigatorUserMediaError.idl: Ditto.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::create): ASCIILiteral -> AtomicString. Rename constraint parameters.
(WebCore::UserMediaRequest::UserMediaRequest): Rename constraint parameters.
(WebCore::UserMediaRequest::audioConstraints): Return PassRefPtr<> instead of raw ptr.
(WebCore::UserMediaRequest::videoConstraints): Ditto.
(WebCore::UserMediaRequest::ownerDocument): Clean up style.
(WebCore::UserMediaRequest::succeed): 
(WebCore::UserMediaRequest::permissionFailure): Renamed from fail.
(WebCore::UserMediaRequest::constraintFailure):  Renamed from failConstraint.
(WebCore::UserMediaRequest::callSuccessHandler): New.
(WebCore::UserMediaRequest::callErrorHandler): New.
* Modules/mediastream/UserMediaRequest.h:

* WebCore.xcodeproj/project.pbxproj: Add NavigatorUserMediaError.cpp

* dom/DOMError.h: Make constructor protected.

* platform/mediastream/MediaStreamSourcesQueryClient.h: Make constraints available.

LayoutTests: 

* fast/mediastream/getusermedia-expected.txt:
* fast/mediastream/getusermedia.html:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (156107 => 156108)


--- trunk/LayoutTests/ChangeLog	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/LayoutTests/ChangeLog	2013-09-19 19:06:54 UTC (rev 156108)
@@ -1,17 +1,12 @@
-2013-09-19  Zoltan Horvath  <[email protected]>
+2013-09-19  Eric Carlson  <[email protected]>
 
-        [CSS Shapes] Fix starting html tag and doctype for shape-inside floats tests
-        https://bugs.webkit.org/show_bug.cgi?id=121621
+        MediaStream API: update NavigatorUserMediaError object to match spec
+        https://bugs.webkit.org/show_bug.cgi?id=121584
 
-        Reviewed by Andreas Kling.
+        Reviewed by Dean Jackson.
 
-        * fast/shapes/shape-inside/shape-inside-left-float-in-lower-left-triangle-inline-content-expected.html:
-        * fast/shapes/shape-inside/shape-inside-left-float-in-lower-right-triangle-inline-content-expected.html:
-        * fast/shapes/shape-inside/shape-inside-left-float-in-lower-right-triangle-inline-content.html:
-        * fast/shapes/shape-inside/shape-inside-left-float-in-upper-left-triangle-inline-content-expected.html:
-        * fast/shapes/shape-inside/shape-inside-left-float-in-upper-left-triangle-inline-content.html:
-        * fast/shapes/shape-inside/shape-inside-left-float-in-upper-right-triangle-inline-content-expected.html:
-        * fast/shapes/shape-inside/shape-inside-left-float-in-upper-right-triangle-inline-content.html:
+        * fast/mediastream/getusermedia-expected.txt:
+        * fast/mediastream/getusermedia.html:
 
 2013-09-19  Bem Jones-Bey  <[email protected]>
 

Modified: trunk/LayoutTests/fast/mediastream/getusermedia-expected.txt (156107 => 156108)


--- trunk/LayoutTests/fast/mediastream/getusermedia-expected.txt	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/LayoutTests/fast/mediastream/getusermedia-expected.txt	2013-09-19 19:06:54 UTC (rev 156108)
@@ -22,6 +22,8 @@
 PASS stream.getVideoTracks().length is 1
 PASS navigator.webkitGetUserMedia({audio:{mandatory:{'valid_but_unsupported_1':0}, optional:[]}, video:true}, gotStreamInError, error1); did not throw exception.
 PASS Error callback called.
+PASS errorArg.name is "ConstraintNotSatisfiedError"
+PASS errorArg.constraintName is "valid_but_unsupported_1"
 PASS navigator.webkitGetUserMedia({audio:{mandatory:{'valid_and_supported_1':1}, optional:[{'valid_but_unsupported_1':0}]}, video:true}, gotStream5, error); did not throw exception.
 PASS Stream generated.
 PASS stream.getAudioTracks().length is 1

Modified: trunk/LayoutTests/fast/mediastream/getusermedia.html (156107 => 156108)


--- trunk/LayoutTests/fast/mediastream/getusermedia.html	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/LayoutTests/fast/mediastream/getusermedia.html	2013-09-19 19:06:54 UTC (rev 156108)
@@ -10,6 +10,7 @@
 description("Tests webkitGetUserMedia.");
 
 var stream;
+var errorArg;
 
 function error() {
     testFailed('Error callback called.');
@@ -29,8 +30,11 @@
     finishJSTest();
 }
 
-function error1() {
+function error1(e) {
+    errorArg = e;
     testPassed('Error callback called.');
+    shouldBeEqualToString('errorArg.name', 'ConstraintNotSatisfiedError');
+    shouldBeEqualToString('errorArg.constraintName', 'valid_but_unsupported_1');
 
     shouldNotThrow("navigator.webkitGetUserMedia({audio:{mandatory:{'valid_and_supported_1':1}, optional:[{'valid_but_unsupported_1':0}]}, video:true}, gotStream5, error);");
 }

Modified: trunk/Source/WebCore/CMakeLists.txt (156107 => 156108)


--- trunk/Source/WebCore/CMakeLists.txt	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/CMakeLists.txt	2013-09-19 19:06:54 UTC (rev 156108)
@@ -846,6 +846,7 @@
     Modules/mediastream/MediaStreamTrackEvent.cpp
     Modules/mediastream/MediaStreamTrackSourcesRequest.cpp
     Modules/mediastream/NavigatorMediaStream.cpp
+    Modules/mediastream/NavigatorUserMediaError.cpp
     Modules/mediastream/RTCDTMFSender.cpp
     Modules/mediastream/RTCDTMFToneChangeEvent.cpp
     Modules/mediastream/RTCDataChannel.cpp

Modified: trunk/Source/WebCore/ChangeLog (156107 => 156108)


--- trunk/Source/WebCore/ChangeLog	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/ChangeLog	2013-09-19 19:06:54 UTC (rev 156108)
@@ -1,3 +1,38 @@
+2013-09-19  Eric Carlson  <[email protected]>
+
+        MediaStream API: update NavigatorUserMediaError object to match spec
+        https://bugs.webkit.org/show_bug.cgi?id=121584
+
+        Reviewed by Dean Jackson.
+
+        No new tests, updated getusermedia.html.
+
+        * CMakeLists.txt: Add NavigatorUserMediaError.cpp.
+        * GNUmakefile.list.am: Ditto.
+
+        * Modules/mediastream/NavigatorUserMediaError.cpp: Added.
+        * Modules/mediastream/NavigatorUserMediaError.h: Derive from DOMError, get rid of "message" attribute.
+        * Modules/mediastream/NavigatorUserMediaError.idl: Ditto.
+
+        * Modules/mediastream/UserMediaRequest.cpp:
+        (WebCore::UserMediaRequest::create): ASCIILiteral -> AtomicString. Rename constraint parameters.
+        (WebCore::UserMediaRequest::UserMediaRequest): Rename constraint parameters.
+        (WebCore::UserMediaRequest::audioConstraints): Return PassRefPtr<> instead of raw ptr.
+        (WebCore::UserMediaRequest::videoConstraints): Ditto.
+        (WebCore::UserMediaRequest::ownerDocument): Clean up style.
+        (WebCore::UserMediaRequest::succeed): 
+        (WebCore::UserMediaRequest::permissionFailure): Renamed from fail.
+        (WebCore::UserMediaRequest::constraintFailure):  Renamed from failConstraint.
+        (WebCore::UserMediaRequest::callSuccessHandler): New.
+        (WebCore::UserMediaRequest::callErrorHandler): New.
+        * Modules/mediastream/UserMediaRequest.h:
+
+        * WebCore.xcodeproj/project.pbxproj: Add NavigatorUserMediaError.cpp
+
+        * dom/DOMError.h: Make constructor protected.
+
+        * platform/mediastream/MediaStreamSourcesQueryClient.h: Make constraints available.
+
 2013-09-19  Bem Jones-Bey  <[email protected]>
 
         Fix handling of top margin on float with shape-outside

Modified: trunk/Source/WebCore/GNUmakefile.list.am (156107 => 156108)


--- trunk/Source/WebCore/GNUmakefile.list.am	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/GNUmakefile.list.am	2013-09-19 19:06:54 UTC (rev 156108)
@@ -1985,6 +1985,7 @@
 	Source/WebCore/Modules/mediastream/MediaStreamTrackSourcesRequest.h \
 	Source/WebCore/Modules/mediastream/NavigatorMediaStream.cpp \
 	Source/WebCore/Modules/mediastream/NavigatorMediaStream.h \
+	Source/WebCore/Modules/mediastream/NavigatorUserMediaError.cpp \
 	Source/WebCore/Modules/mediastream/NavigatorUserMediaError.h \
 	Source/WebCore/Modules/mediastream/NavigatorUserMediaErrorCallback.h \
 	Source/WebCore/Modules/mediastream/NavigatorUserMediaSuccessCallback.h \

Added: trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.cpp (0 => 156108)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.cpp	                        (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.cpp	2013-09-19 19:06:54 UTC (rev 156108)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#if ENABLE(MEDIA_STREAM)
+
+#include "NavigatorUserMediaError.h"
+
+#include <wtf/NeverDestroyed.h>
+
+namespace WebCore {
+
+const AtomicString& NavigatorUserMediaError::permissionDeniedErrorName()
+{
+    static NeverDestroyed<AtomicString> permissionDenied("PermissionDeniedError", AtomicString::ConstructFromLiteral);
+    return permissionDenied;
+}
+
+const AtomicString& NavigatorUserMediaError::constraintNotSatisfiedErrorName()
+{
+    static NeverDestroyed<AtomicString> constraintNotSatisfied("ConstraintNotSatisfiedError", AtomicString::ConstructFromLiteral);
+    return constraintNotSatisfied;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(MEDIA_STREAM)
+

Modified: trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.h (156107 => 156108)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.h	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.h	2013-09-19 19:06:54 UTC (rev 156108)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -25,6 +26,7 @@
 #ifndef NavigatorUserMediaError_h
 #define NavigatorUserMediaError_h
 
+#include "DOMError.h"
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -32,29 +34,27 @@
 
 namespace WebCore {
 
-class NavigatorUserMediaError : public RefCounted<NavigatorUserMediaError> {
+class NavigatorUserMediaError : public DOMError {
 public:
-    static PassRefPtr<NavigatorUserMediaError> create(const String& name, const String& message, const String& constraintName)
+    static PassRefPtr<NavigatorUserMediaError> create(const String& name, const String& constraintName)
     {
-        return adoptRef(new NavigatorUserMediaError(name, message, constraintName));
+        return adoptRef(new NavigatorUserMediaError(name, constraintName));
     }
 
     virtual ~NavigatorUserMediaError() { }
 
-    const String& name() const { return m_name; }
-    const String& message() const { return m_message; }
     const String& constraintName() const { return m_constraintName; }
 
+    static const AtomicString& permissionDeniedErrorName();
+    static const AtomicString& constraintNotSatisfiedErrorName();
+
 private:
-    NavigatorUserMediaError(const String& name, const String& message, const String& constraintName)
-        : m_name(name)
-        , m_message(message)
+    NavigatorUserMediaError(const String& name, const String& constraintName)
+        : DOMError(name)
         , m_constraintName(constraintName)
     {
     }
 
-    String m_name;
-    String m_message;
     String m_constraintName;
 };
 

Modified: trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.idl (156107 => 156108)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.idl	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorUserMediaError.idl	2013-09-19 19:06:54 UTC (rev 156108)
@@ -25,9 +25,7 @@
 [
     NoInterfaceObject,
     Conditional=MEDIA_STREAM
-] interface NavigatorUserMediaError {
-    readonly attribute DOMString name;
-    readonly attribute DOMString message;
+] interface NavigatorUserMediaError : DOMError {
     readonly attribute DOMString constraintName;
 };
 

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (156107 => 156108)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2013-09-19 19:06:54 UTC (rev 156108)
@@ -44,6 +44,8 @@
 #include "MediaStreamDescriptor.h"
 #include "SpaceSplitString.h"
 #include "UserMediaController.h"
+#include <wtf/Functional.h>
+#include <wtf/MainThread.h>
 
 namespace WebCore {
 
@@ -67,24 +69,26 @@
 
 PassRefPtr<UserMediaRequest> UserMediaRequest::create(ScriptExecutionContext* context, UserMediaController* controller, const Dictionary& options, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback, ExceptionCode& ec)
 {
-    RefPtr<MediaConstraintsImpl> audio = parseOptions(options, ASCIILiteral("audio"), ec);
+    ASSERT(successCallback);
+
+    RefPtr<MediaConstraintsImpl> audioConstraints = parseOptions(options, AtomicString("audio", AtomicString::ConstructFromLiteral), ec);
     if (ec)
         return 0;
 
-    RefPtr<MediaConstraintsImpl> video = parseOptions(options, ASCIILiteral("video"), ec);
+    RefPtr<MediaConstraintsImpl> videoConstraints = parseOptions(options, AtomicString("video", AtomicString::ConstructFromLiteral), ec);
     if (ec)
         return 0;
 
-    if (!audio && !video)
+    if (!audioConstraints && !videoConstraints)
         return 0;
 
-    return adoptRef(new UserMediaRequest(context, controller, audio.release(), video.release(), successCallback, errorCallback));
+    return adoptRef(new UserMediaRequest(context, controller, audioConstraints.release(), videoConstraints.release(), successCallback, errorCallback));
 }
 
-UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, PassRefPtr<MediaConstraintsImpl> audio, PassRefPtr<MediaConstraintsImpl> video, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)
+UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, PassRefPtr<MediaConstraintsImpl> audioConstraints, PassRefPtr<MediaConstraintsImpl> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)
     : ContextDestructionObserver(context)
-    , m_audio(audio)
-    , m_video(video)
+    , m_audioConstraints(audioConstraints)
+    , m_videoConstraints(videoConstraints)
     , m_controller(controller)
     , m_successCallback(successCallback)
     , m_errorCallback(errorCallback)
@@ -95,31 +99,20 @@
 {
 }
 
-bool UserMediaRequest::audio() const
+PassRefPtr<MediaConstraints> UserMediaRequest::audioConstraints() const
 {
-    return m_audio;
+    return m_audioConstraints;
 }
 
-bool UserMediaRequest::video() const
+PassRefPtr<MediaConstraints> UserMediaRequest::videoConstraints() const
 {
-    return m_video;
+    return m_videoConstraints;
 }
 
-MediaConstraints* UserMediaRequest::audioConstraints() const
-{
-    return m_audio.get();
-}
-
-MediaConstraints* UserMediaRequest::videoConstraints() const
-{
-    return m_video.get();
-}
-
 Document* UserMediaRequest::ownerDocument()
 {
-    if (m_scriptExecutionContext) {
+    if (m_scriptExecutionContext)
         return toDocument(m_scriptExecutionContext);
-    }
 
     return 0;
 }
@@ -144,34 +137,54 @@
 
     MediaStreamTrackVector tracks = stream->getAudioTracks();
     for (MediaStreamTrackVector::iterator iter = tracks.begin(); iter != tracks.end(); ++iter)
-        (*iter)->component()->source()->setConstraints(m_audio);
+        (*iter)->component()->source()->setConstraints(m_audioConstraints);
 
     tracks = stream->getVideoTracks();
     for (MediaStreamTrackVector::iterator iter = tracks.begin(); iter != tracks.end(); ++iter)
-        (*iter)->component()->source()->setConstraints(m_video);
+        (*iter)->component()->source()->setConstraints(m_videoConstraints);
 
     m_successCallback->handleEvent(stream.get());
 }
 
-void UserMediaRequest::fail(const String& description)
+void UserMediaRequest::permissionFailure()
 {
     if (!m_scriptExecutionContext)
         return;
 
-    if (m_errorCallback)
-        m_errorCallback->handleEvent(NavigatorUserMediaError::create(ASCIILiteral("PERMISSION_DENIED"), description, String()).get());
+    if (!m_errorCallback)
+        return;
+    
+    RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::permissionDeniedErrorName(), emptyString());
+    callOnMainThread(bind(&UserMediaRequest::callErrorHandler, this, error.release()));
 }
 
-void UserMediaRequest::failConstraint(const String& constraintName, const String& description)
+void UserMediaRequest::constraintFailure(const String& constraintName)
 {
     ASSERT(!constraintName.isEmpty());
     if (!m_scriptExecutionContext)
         return;
     
-    if (m_errorCallback)
-        m_errorCallback->handleEvent(NavigatorUserMediaError::create(ASCIILiteral("CONSTRAINT_NOT_SATISFIED"), description, constraintName).get());
+    if (!m_errorCallback)
+        return;
+
+    RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::constraintNotSatisfiedErrorName(), constraintName);
+    callOnMainThread(bind(&UserMediaRequest::callErrorHandler, this, error.release()));
 }
 
+void UserMediaRequest::callSuccessHandler(PassRefPtr<MediaStream> stream)
+{
+    ASSERT(m_successCallback);
+    
+    m_successCallback->handleEvent(stream.get());
+}
+
+void UserMediaRequest::callErrorHandler(PassRefPtr<NavigatorUserMediaError> error)
+{
+    ASSERT(error);
+    
+    m_errorCallback->handleEvent(error.get());
+}
+
 void UserMediaRequest::contextDestroyed()
 {
     Ref<UserMediaRequest> protect(*this);

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (156107 => 156108)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2013-09-19 19:06:54 UTC (rev 156108)
@@ -40,7 +40,6 @@
 #include "NavigatorUserMediaErrorCallback.h"
 #include "NavigatorUserMediaSuccessCallback.h"
 #include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
@@ -57,33 +56,30 @@
     static PassRefPtr<UserMediaRequest> create(ScriptExecutionContext*, UserMediaController*, const Dictionary& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>, ExceptionCode&);
     ~UserMediaRequest();
 
-    NavigatorUserMediaSuccessCallback* successCallback() const { return m_successCallback.get(); }
-    NavigatorUserMediaErrorCallback* errorCallback() const { return m_errorCallback.get(); }
     Document* ownerDocument();
 
     void start();
-
     void succeed(PassRefPtr<MediaStreamDescriptor>);
-    void fail(const String& description);
-    void failConstraint(const String& constraintName, const String& description);
+    void permissionFailure();
+    void constraintFailure(const String& constraintName);
 
-    MediaConstraints* audioConstraints() const;
-    MediaConstraints* videoConstraints() const;
-
     // MediaStreamSourcesQueryClient
-    virtual bool audio() const;
-    virtual bool video() const;
-    virtual void didCompleteQuery(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources);
+    virtual PassRefPtr<MediaConstraints> audioConstraints() const OVERRIDE;
+    virtual PassRefPtr<MediaConstraints> videoConstraints() const OVERRIDE;
+    virtual void didCompleteQuery(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) OVERRIDE;
 
     // ContextDestructionObserver
     virtual void contextDestroyed();
 
 private:
-    UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraintsImpl> audio, PassRefPtr<MediaConstraintsImpl> video, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>);
+    UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraintsImpl> audioConstraints, PassRefPtr<MediaConstraintsImpl> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>);
 
-    RefPtr<MediaConstraintsImpl> m_audio;
-    RefPtr<MediaConstraintsImpl> m_video;
+    void callSuccessHandler(PassRefPtr<MediaStream>);
+    void callErrorHandler(PassRefPtr<NavigatorUserMediaError>);
 
+    RefPtr<MediaConstraintsImpl> m_audioConstraints;
+    RefPtr<MediaConstraintsImpl> m_videoConstraints;
+
     UserMediaController* m_controller;
 
     RefPtr<NavigatorUserMediaSuccessCallback> m_successCallback;

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (156107 => 156108)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2013-09-19 19:06:54 UTC (rev 156108)
@@ -79,6 +79,7 @@
 		066C77310AB603FD00238CC4 /* RenderFileUploadControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 066C772F0AB603FD00238CC4 /* RenderFileUploadControl.h */; };
 		06E81ED70AB5D5E900C87837 /* LocalCurrentGraphicsContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 06E81ED60AB5D5E900C87837 /* LocalCurrentGraphicsContext.h */; };
 		06E81EEC0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06E81EEB0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm */; };
+		070327F817EA4AAF00CE1318 /* NavigatorUserMediaError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070327F717EA4AAF00CE1318 /* NavigatorUserMediaError.cpp */; };
 		070334D31459FFAD008D8D45 /* TrackEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070334D01459FFAC008D8D45 /* TrackEvent.cpp */; };
 		070334D71459FFD5008D8D45 /* TrackBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 070334D61459FFD5008D8D45 /* TrackBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		070334D9145A006F008D8D45 /* TrackBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070334D8145A006F008D8D45 /* TrackBase.cpp */; };
@@ -6442,6 +6443,7 @@
 		066C772F0AB603FD00238CC4 /* RenderFileUploadControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderFileUploadControl.h; sourceTree = "<group>"; };
 		06E81ED60AB5D5E900C87837 /* LocalCurrentGraphicsContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalCurrentGraphicsContext.h; sourceTree = "<group>"; };
 		06E81EEB0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = LocalCurrentGraphicsContext.mm; sourceTree = "<group>"; };
+		070327F717EA4AAF00CE1318 /* NavigatorUserMediaError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigatorUserMediaError.cpp; sourceTree = "<group>"; };
 		070334D01459FFAC008D8D45 /* TrackEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackEvent.cpp; sourceTree = "<group>"; };
 		070334D11459FFAC008D8D45 /* TrackEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackEvent.h; sourceTree = "<group>"; };
 		070334D21459FFAC008D8D45 /* TrackEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TrackEvent.idl; sourceTree = "<group>"; };
@@ -13327,6 +13329,7 @@
 				07221B5B17CEC32700848E51 /* NavigatorMediaStream.h */,
 				07221B5C17CEC32700848E51 /* NavigatorMediaStream.idl */,
 				07221B5D17CEC32700848E51 /* NavigatorUserMediaError.h */,
+				070327F717EA4AAF00CE1318 /* NavigatorUserMediaError.cpp */,
 				07221B5E17CEC32700848E51 /* NavigatorUserMediaError.idl */,
 				07221B5F17CEC32700848E51 /* NavigatorUserMediaErrorCallback.h */,
 				07221B6017CEC32700848E51 /* NavigatorUserMediaErrorCallback.idl */,
@@ -26666,6 +26669,7 @@
 				450CEBF015073BBE002BB149 /* LabelableElement.cpp in Sources */,
 				A456FA2611AD4A830020B420 /* LabelsNodeList.cpp in Sources */,
 				E18772F1126E2629003DD586 /* Language.cpp in Sources */,
+				070327F817EA4AAF00CE1318 /* NavigatorUserMediaError.cpp in Sources */,
 				9352084509BD43B900F2038D /* Language.mm in Sources */,
 				2917B5611473496C0052C9D0 /* LayerFlushScheduler.cpp in Sources */,
 				2917B566147349950052C9D0 /* LayerFlushSchedulerMac.cpp in Sources */,

Modified: trunk/Source/WebCore/dom/DOMError.h (156107 => 156108)


--- trunk/Source/WebCore/dom/DOMError.h	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/dom/DOMError.h	2013-09-19 19:06:54 UTC (rev 156108)
@@ -41,9 +41,10 @@
 
     const String& name() const { return m_name; }
 
-private:
+protected:
     explicit DOMError(const String& name);
 
+private:
     const String m_name;
 };
 

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamSourcesQueryClient.h (156107 => 156108)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamSourcesQueryClient.h	2013-09-19 18:49:05 UTC (rev 156107)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamSourcesQueryClient.h	2013-09-19 19:06:54 UTC (rev 156108)
@@ -35,15 +35,19 @@
 #if ENABLE(MEDIA_STREAM)
 
 #include "MediaStreamSource.h"
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
 
 namespace WebCore {
 
+class MediaConstraints;
+
 class MediaStreamSourcesQueryClient : public RefCounted<MediaStreamSourcesQueryClient> {
 public:
     virtual ~MediaStreamSourcesQueryClient() { }
 
-    virtual bool audio() const = 0;
-    virtual bool video() const = 0;
+    virtual PassRefPtr<MediaConstraints> audioConstraints() const = 0;
+    virtual PassRefPtr<MediaConstraints> videoConstraints() const = 0;
 
     virtual void didCompleteQuery(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) = 0;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to