Commit d12deebf authored by tommyw@chromium.org's avatar tommyw@chromium.org

MediaStream API: Addding support for UA specific error messages for gUM

The spec now says that getUserMedia error messages are UA specific with
the exception for PermissionDeniedError and ConstraintNotSatisfied.

BUG=132812

Review URL: https://codereview.chromium.org/180683003

git-svn-id: svn://svn.chromium.org/blink/trunk@168562 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 080f3d41
...@@ -33,18 +33,20 @@ ...@@ -33,18 +33,20 @@
namespace WebCore { namespace WebCore {
String NavigatorUserMediaError::name() const PassRefPtr<NavigatorUserMediaError> NavigatorUserMediaError::create(Name name, const String& message, const String& constraintName)
{ {
switch (m_name) { String nameString;
switch (name) {
case NamePermissionDenied: case NamePermissionDenied:
return "PermissionDeniedError"; nameString = "PermissionDeniedError";
break;
case NameConstraintNotSatisfied: case NameConstraintNotSatisfied:
return "ConstraintNotSatisfiedError"; nameString = "ConstraintNotSatisfiedError";
break;
} }
ASSERT_NOT_REACHED(); return adoptRef(new NavigatorUserMediaError(nameString, message, constraintName));
return String();
} }
} // namespace WebCore } // namespace WebCore
...@@ -39,23 +39,26 @@ public: ...@@ -39,23 +39,26 @@ public:
NameConstraintNotSatisfied NameConstraintNotSatisfied
}; };
static PassRefPtr<NavigatorUserMediaError> create(Name name, const String& message, const String& constraintName) static PassRefPtr<NavigatorUserMediaError> create(Name, const String& message, const String& constraintName);
static PassRefPtr<NavigatorUserMediaError> create(const String& name, const String& message, const String& constraintName)
{ {
return adoptRef(new NavigatorUserMediaError(name, message, constraintName)); return adoptRef(new NavigatorUserMediaError(name, message, constraintName));
} }
String name() const; String name() const { return m_name; }
const String& message() const { return m_message; } const String& message() const { return m_message; }
const String& constraintName() const { return m_constraintName; } const String& constraintName() const { return m_constraintName; }
private: private:
NavigatorUserMediaError(Name name, const String& message, const String& constraintName) NavigatorUserMediaError(const String& name, const String& message, const String& constraintName)
: m_name(name), m_message(message), m_constraintName(constraintName) : m_name(name), m_message(message), m_constraintName(constraintName)
{ {
ASSERT(!name.isEmpty());
ScriptWrappable::init(this); ScriptWrappable::init(this);
} }
Name m_name; String m_name;
String m_message; String m_message;
String m_constraintName; String m_constraintName;
}; };
......
...@@ -152,22 +152,32 @@ void UserMediaRequest::succeed(PassRefPtr<MediaStreamDescriptor> streamDescripto ...@@ -152,22 +152,32 @@ void UserMediaRequest::succeed(PassRefPtr<MediaStreamDescriptor> streamDescripto
m_successCallback->handleEvent(stream.get()); m_successCallback->handleEvent(stream.get());
} }
void UserMediaRequest::fail(const String& description) void UserMediaRequest::failPermissionDenied(const String& message)
{ {
if (!executionContext()) if (!executionContext())
return; return;
RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::NamePermissionDenied, description, String()); RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::NamePermissionDenied, message, String());
m_errorCallback->handleEvent(error.get()); m_errorCallback->handleEvent(error.get());
} }
void UserMediaRequest::failConstraint(const String& constraintName, const String& description) void UserMediaRequest::failConstraint(const String& constraintName, const String& message)
{ {
ASSERT(!constraintName.isEmpty()); ASSERT(!constraintName.isEmpty());
if (!executionContext()) if (!executionContext())
return; return;
RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::NameConstraintNotSatisfied, description, constraintName); RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::NameConstraintNotSatisfied, message, constraintName);
m_errorCallback->handleEvent(error.get());
}
void UserMediaRequest::failUASpecific(const String& name, const String& message, const String& constraintName)
{
ASSERT(!name.isEmpty());
if (!executionContext())
return;
RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(name, message, constraintName);
m_errorCallback->handleEvent(error.get()); m_errorCallback->handleEvent(error.get());
} }
......
...@@ -60,8 +60,9 @@ public: ...@@ -60,8 +60,9 @@ public:
void start(); void start();
void succeed(PassRefPtr<MediaStreamDescriptor>); void succeed(PassRefPtr<MediaStreamDescriptor>);
void fail(const String& description); void failPermissionDenied(const String& message);
void failConstraint(const String& constraintName, const String& description); void failConstraint(const String& constraintName, const String& message);
void failUASpecific(const String& name, const String& message, const String& constraintName);
bool audio() const; bool audio() const;
bool video() const; bool video() const;
......
...@@ -107,10 +107,10 @@ void WebUserMediaRequest::requestSucceeded(const WebMediaStream& streamDescripto ...@@ -107,10 +107,10 @@ void WebUserMediaRequest::requestSucceeded(const WebMediaStream& streamDescripto
m_private->succeed(streamDescriptor); m_private->succeed(streamDescriptor);
} }
void WebUserMediaRequest::requestFailed(const WebString& description) void WebUserMediaRequest::requestDenied(const WebString& description)
{ {
ASSERT(!isNull()); ASSERT(!isNull());
m_private->fail(description); m_private->failPermissionDenied(description);
} }
void WebUserMediaRequest::requestFailedConstraint(const WebString& constraintName, const WebString& description) void WebUserMediaRequest::requestFailedConstraint(const WebString& constraintName, const WebString& description)
...@@ -119,6 +119,12 @@ void WebUserMediaRequest::requestFailedConstraint(const WebString& constraintNam ...@@ -119,6 +119,12 @@ void WebUserMediaRequest::requestFailedConstraint(const WebString& constraintNam
m_private->failConstraint(constraintName, description); m_private->failConstraint(constraintName, description);
} }
void WebUserMediaRequest::requestFailedUASpecific(const WebString& name, const WebString& constraintName, const WebString& description)
{
ASSERT(!isNull());
m_private->failUASpecific(name, constraintName, description);
}
bool WebUserMediaRequest::equals(const WebUserMediaRequest& other) const bool WebUserMediaRequest::equals(const WebUserMediaRequest& other) const
{ {
if (isNull() || other.isNull()) if (isNull() || other.isNull())
......
...@@ -74,8 +74,12 @@ public: ...@@ -74,8 +74,12 @@ public:
BLINK_EXPORT void requestSucceeded(const WebMediaStream&); BLINK_EXPORT void requestSucceeded(const WebMediaStream&);
BLINK_EXPORT void requestFailed(const WebString& description = WebString()); BLINK_EXPORT void requestDenied(const WebString& description = WebString());
BLINK_EXPORT void requestFailedConstraint(const WebString& constraintName, const WebString& description = WebString()); BLINK_EXPORT void requestFailedConstraint(const WebString& constraintName, const WebString& description = WebString());
BLINK_EXPORT void requestFailedUASpecific(const WebString& name, const WebString& constraintName = WebString(), const WebString& description = WebString());
// DEPRECATED
BLINK_EXPORT void requestFailed(const WebString& description = WebString()) { requestDenied(description); }
#if BLINK_IMPLEMENTATION #if BLINK_IMPLEMENTATION
WebUserMediaRequest(const PassRefPtr<WebCore::UserMediaRequest>&); WebUserMediaRequest(const PassRefPtr<WebCore::UserMediaRequest>&);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment