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 @@
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:
return "PermissionDeniedError";
nameString = "PermissionDeniedError";
break;
case NameConstraintNotSatisfied:
return "ConstraintNotSatisfiedError";
nameString = "ConstraintNotSatisfiedError";
break;
}
ASSERT_NOT_REACHED();
return String();
return adoptRef(new NavigatorUserMediaError(nameString, message, constraintName));
}
} // namespace WebCore
......@@ -39,23 +39,26 @@ public:
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));
}
String name() const;
String name() const { return m_name; }
const String& message() const { return m_message; }
const String& constraintName() const { return m_constraintName; }
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)
{
ASSERT(!name.isEmpty());
ScriptWrappable::init(this);
}
Name m_name;
String m_name;
String m_message;
String m_constraintName;
};
......
......@@ -152,22 +152,32 @@ void UserMediaRequest::succeed(PassRefPtr<MediaStreamDescriptor> streamDescripto
m_successCallback->handleEvent(stream.get());
}
void UserMediaRequest::fail(const String& description)
void UserMediaRequest::failPermissionDenied(const String& message)
{
if (!executionContext())
return;
RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::NamePermissionDenied, description, String());
RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::NamePermissionDenied, message, String());
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());
if (!executionContext())
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());
}
......
......@@ -60,8 +60,9 @@ public:
void start();
void succeed(PassRefPtr<MediaStreamDescriptor>);
void fail(const String& description);
void failConstraint(const String& constraintName, const String& description);
void failPermissionDenied(const String& message);
void failConstraint(const String& constraintName, const String& message);
void failUASpecific(const String& name, const String& message, const String& constraintName);
bool audio() const;
bool video() const;
......
......@@ -107,10 +107,10 @@ void WebUserMediaRequest::requestSucceeded(const WebMediaStream& streamDescripto
m_private->succeed(streamDescriptor);
}
void WebUserMediaRequest::requestFailed(const WebString& description)
void WebUserMediaRequest::requestDenied(const WebString& description)
{
ASSERT(!isNull());
m_private->fail(description);
m_private->failPermissionDenied(description);
}
void WebUserMediaRequest::requestFailedConstraint(const WebString& constraintName, const WebString& description)
......@@ -119,6 +119,12 @@ void WebUserMediaRequest::requestFailedConstraint(const WebString& constraintNam
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
{
if (isNull() || other.isNull())
......
......@@ -74,8 +74,12 @@ public:
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 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
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