Index: content/shell/renderer/test_runner/mock_web_user_media_client.cc |
diff --git a/content/shell/renderer/test_runner/mock_web_user_media_client.cc b/content/shell/renderer/test_runner/mock_web_user_media_client.cc |
index 10cc4de1aa0495eafe61e8bcbf1aed769e8a096d..c758854ac2b1e815da177276535d6d3b9a4ba5d2 100644 |
--- a/content/shell/renderer/test_runner/mock_web_user_media_client.cc |
+++ b/content/shell/renderer/test_runner/mock_web_user_media_client.cc |
@@ -5,6 +5,7 @@ |
#include "content/shell/renderer/test_runner/mock_web_user_media_client.h" |
#include "base/logging.h" |
+#include "base/macros.h" |
#include "content/shell/renderer/test_runner/WebTestDelegate.h" |
#include "content/shell/renderer/test_runner/mock_constraints.h" |
#include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
@@ -12,6 +13,8 @@ |
#include "third_party/WebKit/public/platform/WebMediaStream.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h" |
+#include "third_party/WebKit/public/platform/WebSourceInfo.h" |
#include "third_party/WebKit/public/platform/WebVector.h" |
#include "third_party/WebKit/public/web/WebDocument.h" |
#include "third_party/WebKit/public/web/WebMediaDevicesRequest.h" |
@@ -24,6 +27,8 @@ using blink::WebMediaDevicesRequest; |
using blink::WebMediaStream; |
using blink::WebMediaStreamSource; |
using blink::WebMediaStreamTrack; |
+using blink::WebMediaStreamTrackSourcesRequest; |
+using blink::WebSourceInfo; |
using blink::WebString; |
using blink::WebUserMediaRequest; |
using blink::WebVector; |
@@ -46,6 +51,8 @@ class UserMediaRequestTask : public WebMethodTask<MockWebUserMediaClient> { |
private: |
WebUserMediaRequest request_; |
WebMediaStream result_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UserMediaRequestTask); |
}; |
class UserMediaRequestConstraintFailedTask |
@@ -65,6 +72,8 @@ class UserMediaRequestConstraintFailedTask |
private: |
WebUserMediaRequest request_; |
WebString constraint_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UserMediaRequestConstraintFailedTask); |
}; |
class UserMediaRequestPermissionDeniedTask |
@@ -79,6 +88,8 @@ class UserMediaRequestPermissionDeniedTask |
private: |
WebUserMediaRequest request_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UserMediaRequestPermissionDeniedTask); |
}; |
class MediaDevicesRequestTask : public WebMethodTask<MockWebUserMediaClient> { |
@@ -95,6 +106,26 @@ class MediaDevicesRequestTask : public WebMethodTask<MockWebUserMediaClient> { |
private: |
WebMediaDevicesRequest request_; |
WebVector<WebMediaDeviceInfo> result_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MediaDevicesRequestTask); |
+}; |
+ |
+class SourcesRequestTask : public WebMethodTask<MockWebUserMediaClient> { |
+ public: |
+ SourcesRequestTask(MockWebUserMediaClient* object, |
+ const WebMediaStreamTrackSourcesRequest& request, |
+ const WebVector<WebSourceInfo>& result) |
+ : WebMethodTask<MockWebUserMediaClient>(object), |
+ request_(request), |
+ result_(result) {} |
+ |
+ virtual void RunIfValid() OVERRIDE { request_.requestSucceeded(result_); } |
+ |
+ private: |
+ WebMediaStreamTrackSourcesRequest request_; |
+ WebVector<WebSourceInfo> result_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SourcesRequestTask); |
}; |
class MockExtraData : public WebMediaStream::ExtraData { |
@@ -167,21 +198,39 @@ void MockWebUserMediaClient::cancelUserMediaRequest( |
void MockWebUserMediaClient::requestMediaDevices( |
const WebMediaDevicesRequest& request) { |
- const size_t three = 3; |
- WebVector<WebMediaDeviceInfo> devices(three); |
- |
- devices[0].initialize("device1", |
- WebMediaDeviceInfo::MediaDeviceKindAudioInput, |
- "Built-in microphone", |
- "group1"); |
- devices[1].initialize("device2", |
- WebMediaDeviceInfo::MediaDeviceKindAudioOutput, |
- "Built-in speakers", |
- "group1"); |
- devices[2].initialize("device3", |
- WebMediaDeviceInfo::MediaDeviceKindVideoInput, |
- "Build-in webcam", |
- "group2"); |
+ struct { |
+ const char* device_id; |
+ WebMediaDeviceInfo::MediaDeviceKind kind; |
+ const char* label; |
+ const char* group_id; |
+ } test_devices[] = { |
+ { |
+ "device1", |
+ WebMediaDeviceInfo::MediaDeviceKindAudioInput, |
+ "Built-in microphone", |
+ "group1", |
+ }, |
+ { |
+ "device2", |
+ WebMediaDeviceInfo::MediaDeviceKindAudioOutput, |
+ "Built-in speakers", |
+ "group1", |
+ }, |
+ { |
+ "device3", |
+ WebMediaDeviceInfo::MediaDeviceKindVideoInput, |
+ "Build-in webcam", |
+ "group2", |
+ }, |
+ }; |
+ |
+ WebVector<WebMediaDeviceInfo> devices(ARRAYSIZE_UNSAFE(test_devices)); |
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_devices); ++i) { |
+ devices[i].initialize(WebString::fromUTF8(test_devices[i].device_id), |
+ test_devices[i].kind, |
+ WebString::fromUTF8(test_devices[i].label), |
+ WebString::fromUTF8(test_devices[i].group_id)); |
+ } |
delegate_->postTask(new MediaDevicesRequestTask(this, request, devices)); |
} |
@@ -190,4 +239,37 @@ void MockWebUserMediaClient::cancelMediaDevicesRequest( |
const WebMediaDevicesRequest&) { |
} |
+void MockWebUserMediaClient::requestSources( |
+ const blink::WebMediaStreamTrackSourcesRequest& request) { |
+ struct { |
+ const char* id; |
+ WebSourceInfo::SourceKind kind; |
+ const char* label; |
+ WebSourceInfo::VideoFacingMode facing; |
+ } test_sources[] = { |
+ { |
+ "device1", |
+ WebSourceInfo::SourceKindAudio, |
+ "Built-in microphone", |
+ WebSourceInfo::VideoFacingModeNone, |
+ }, |
+ { |
+ "device2", |
+ WebSourceInfo::SourceKindVideo, |
+ "Build-in webcam", |
+ WebSourceInfo::VideoFacingModeEnvironment, |
+ }, |
+ }; |
+ |
+ WebVector<WebSourceInfo> sources(ARRAYSIZE_UNSAFE(test_sources)); |
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_sources); ++i) { |
+ sources[i].initialize(WebString::fromUTF8(test_sources[i].id), |
+ test_sources[i].kind, |
+ WebString::fromUTF8(test_sources[i].label), |
+ test_sources[i].facing); |
+ } |
+ |
+ delegate_->postTask(new SourcesRequestTask(this, request, sources)); |
+} |
+ |
} // namespace content |