Index: Source/testing/runner/WebUserMediaClientMock.cpp |
diff --git a/Source/testing/runner/WebUserMediaClientMock.cpp b/Source/testing/runner/WebUserMediaClientMock.cpp |
index 719118ef4400d054fea5fb1887aaeef0276be8b5..2ff413e5a71c1381b68dfd1d5873e47ad790b114 100644 |
--- a/Source/testing/runner/WebUserMediaClientMock.cpp |
+++ b/Source/testing/runner/WebUserMediaClientMock.cpp |
@@ -52,14 +52,12 @@ public: |
, m_request(request) |
, m_result(result) |
{ |
+ WEBKIT_ASSERT(!m_result.isNull()); |
} |
virtual void runIfValid() OVERRIDE |
{ |
- if (m_result.isNull()) |
- m_request.requestFailed(); |
- else |
- m_request.requestSucceeded(m_result); |
+ m_request.requestSucceeded(m_result); |
} |
private: |
@@ -67,6 +65,42 @@ private: |
WebMediaStream m_result; |
}; |
+class UserMediaRequestConstraintFailedTask : public WebMethodTask<WebUserMediaClientMock> { |
+public: |
+ UserMediaRequestConstraintFailedTask(WebUserMediaClientMock* object, const WebUserMediaRequest& request, const WebString& constraint) |
+ : WebMethodTask<WebUserMediaClientMock>(object) |
+ , m_request(request) |
+ , m_constraint(constraint) |
+ { |
+ } |
+ |
+ virtual void runIfValid() OVERRIDE |
+ { |
+ m_request.requestFailedConstraint(m_constraint); |
+ } |
+ |
+private: |
+ WebUserMediaRequest m_request; |
+ WebString m_constraint; |
+}; |
+ |
+class UserMediaRequestPermissionDeniedTask : public WebMethodTask<WebUserMediaClientMock> { |
+public: |
+ UserMediaRequestPermissionDeniedTask(WebUserMediaClientMock* object, const WebUserMediaRequest& request) |
+ : WebMethodTask<WebUserMediaClientMock>(object) |
+ , m_request(request) |
+ { |
+ } |
+ |
+ virtual void runIfValid() OVERRIDE |
+ { |
+ m_request.requestFailed(); |
+ } |
+ |
+private: |
+ WebUserMediaRequest m_request; |
+}; |
+ |
//////////////////////////////// |
class MockExtraData : public WebMediaStream::ExtraData { |
@@ -85,18 +119,19 @@ void WebUserMediaClientMock::requestUserMedia(const WebUserMediaRequest& streamR |
WebUserMediaRequest request = streamRequest; |
if (request.ownerDocument().isNull() || !request.ownerDocument().frame()) { |
- m_delegate->postTask(new UserMediaRequestTask(this, request, WebMediaStream())); |
+ m_delegate->postTask(new UserMediaRequestPermissionDeniedTask(this, request)); |
return; |
} |
WebMediaConstraints constraints = request.audioConstraints(); |
- if (!constraints.isNull() && !MockConstraints::verifyConstraints(constraints)) { |
- m_delegate->postTask(new UserMediaRequestTask(this, request, WebMediaStream())); |
+ WebString failedConstraint; |
+ if (!constraints.isNull() && !MockConstraints::verifyConstraints(constraints, &failedConstraint)) { |
+ m_delegate->postTask(new UserMediaRequestConstraintFailedTask(this, request, failedConstraint)); |
return; |
} |
constraints = request.videoConstraints(); |
- if (!constraints.isNull() && !MockConstraints::verifyConstraints(constraints)) { |
- m_delegate->postTask(new UserMediaRequestTask(this, request, WebMediaStream())); |
+ if (!constraints.isNull() && !MockConstraints::verifyConstraints(constraints, &failedConstraint)) { |
+ m_delegate->postTask(new UserMediaRequestConstraintFailedTask(this, request, failedConstraint)); |
return; |
} |