| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/test_runner/mock_web_user_media_client.h" | 5 #include "components/test_runner/mock_web_user_media_client.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "components/test_runner/mock_constraints.h" | 9 #include "components/test_runner/mock_constraints.h" |
| 10 #include "components/test_runner/renderer/mock_video_capturer_source.h" |
| 10 #include "components/test_runner/web_test_delegate.h" | 11 #include "components/test_runner/web_test_delegate.h" |
| 11 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" | 12 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
| 12 #include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h" | 13 #include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h" |
| 13 #include "third_party/WebKit/public/platform/WebMediaStream.h" | 14 #include "third_party/WebKit/public/platform/WebMediaStream.h" |
| 14 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" | 15 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
| 15 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 16 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
| 16 #include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h
" | 17 #include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h
" |
| 17 #include "third_party/WebKit/public/platform/WebSourceInfo.h" | 18 #include "third_party/WebKit/public/platform/WebSourceInfo.h" |
| 18 #include "third_party/WebKit/public/platform/WebVector.h" | 19 #include "third_party/WebKit/public/platform/WebVector.h" |
| 19 #include "third_party/WebKit/public/web/WebDocument.h" | 20 #include "third_party/WebKit/public/web/WebDocument.h" |
| 20 #include "third_party/WebKit/public/web/WebMediaDevicesRequest.h" | 21 #include "third_party/WebKit/public/web/WebMediaDevicesRequest.h" |
| 21 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h" | |
| 22 #include "third_party/WebKit/public/web/WebUserMediaRequest.h" | 22 #include "third_party/WebKit/public/web/WebUserMediaRequest.h" |
| 23 | 23 |
| 24 using blink::WebMediaConstraints; | 24 using blink::WebMediaConstraints; |
| 25 using blink::WebMediaDeviceInfo; | 25 using blink::WebMediaDeviceInfo; |
| 26 using blink::WebMediaDevicesRequest; | 26 using blink::WebMediaDevicesRequest; |
| 27 using blink::WebMediaStream; | 27 using blink::WebMediaStream; |
| 28 using blink::WebMediaStreamSource; | 28 using blink::WebMediaStreamSource; |
| 29 using blink::WebMediaStreamTrack; | 29 using blink::WebMediaStreamTrack; |
| 30 using blink::WebMediaStreamTrackSourcesRequest; | 30 using blink::WebMediaStreamTrackSourcesRequest; |
| 31 using blink::WebSourceInfo; | 31 using blink::WebSourceInfo; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 | 119 |
| 120 void RunIfValid() override { request_.requestSucceeded(result_); } | 120 void RunIfValid() override { request_.requestSucceeded(result_); } |
| 121 | 121 |
| 122 private: | 122 private: |
| 123 WebMediaStreamTrackSourcesRequest request_; | 123 WebMediaStreamTrackSourcesRequest request_; |
| 124 WebVector<WebSourceInfo> result_; | 124 WebVector<WebSourceInfo> result_; |
| 125 | 125 |
| 126 DISALLOW_COPY_AND_ASSIGN(SourcesRequestTask); | 126 DISALLOW_COPY_AND_ASSIGN(SourcesRequestTask); |
| 127 }; | 127 }; |
| 128 | 128 |
| 129 class MockExtraData : public WebMediaStream::ExtraData { | 129 class MockStreamExtraData : public WebMediaStream::ExtraData { |
| 130 public: | 130 public: |
| 131 int foo; | 131 int foo; |
| 132 }; | 132 }; |
| 133 | 133 |
| 134 MockWebUserMediaClient::MockWebUserMediaClient(WebTestDelegate* delegate) | 134 MockWebUserMediaClient::MockWebUserMediaClient(WebTestDelegate* delegate) |
| 135 : delegate_(delegate) {} | 135 : delegate_(delegate) {} |
| 136 | 136 |
| 137 void MockWebUserMediaClient::requestUserMedia( | 137 void MockWebUserMediaClient::requestUserMedia( |
| 138 const WebUserMediaRequest& stream_request) { | 138 const WebUserMediaRequest& request) { |
| 139 DCHECK(!stream_request.isNull()); | 139 DCHECK(!request.isNull()); |
| 140 WebUserMediaRequest request = stream_request; | |
| 141 | 140 |
| 142 if (request.ownerDocument().isNull() || !request.ownerDocument().frame()) { | 141 if (request.ownerDocument().isNull() || !request.ownerDocument().frame()) { |
| 143 delegate_->PostTask( | 142 delegate_->PostTask( |
| 144 new UserMediaRequestPermissionDeniedTask(this, request)); | 143 new UserMediaRequestPermissionDeniedTask(this, request)); |
| 145 return; | 144 return; |
| 146 } | 145 } |
| 147 | 146 |
| 148 WebMediaConstraints constraints = request.audioConstraints(); | 147 const WebMediaConstraints audio_constraints = request.audioConstraints(); |
| 149 WebString failed_constraint; | 148 WebString failed_constraint; |
| 150 if (!constraints.isNull() && | 149 if (!audio_constraints.isNull() && |
| 151 !MockConstraints::VerifyConstraints(constraints, &failed_constraint)) { | 150 !MockConstraints::VerifyConstraints(audio_constraints, |
| 152 delegate_->PostTask(new UserMediaRequestConstraintFailedTask( | 151 &failed_constraint)) { |
| 153 this, request, failed_constraint)); | 152 delegate_->PostTask(new UserMediaRequestConstraintFailedTask( |
| 154 return; | 153 this, request, failed_constraint)); |
| 155 } | 154 return; |
| 156 constraints = request.videoConstraints(); | 155 } |
| 157 if (!constraints.isNull() && | 156 const WebMediaConstraints video_constraints = request.videoConstraints(); |
| 158 !MockConstraints::VerifyConstraints(constraints, &failed_constraint)) { | 157 if (!video_constraints.isNull() && |
| 159 delegate_->PostTask(new UserMediaRequestConstraintFailedTask( | 158 !MockConstraints::VerifyConstraints(video_constraints, |
| 160 this, request, failed_constraint)); | 159 &failed_constraint)) { |
| 161 return; | 160 delegate_->PostTask(new UserMediaRequestConstraintFailedTask( |
| 162 } | 161 this, request, failed_constraint)); |
| 162 return; |
| 163 } |
| 163 | 164 |
| 164 const size_t zero = 0; | 165 WebMediaStream stream; |
| 165 const size_t one = 1; | 166 stream.initialize(WebVector<WebMediaStreamTrack>(), |
| 166 WebVector<WebMediaStreamTrack> audio_tracks(request.audio() ? one : zero); | 167 WebVector<WebMediaStreamTrack>()); |
| 167 WebVector<WebMediaStreamTrack> video_tracks(request.video() ? one : zero); | 168 stream.setExtraData(new MockStreamExtraData()); |
| 168 | 169 |
| 169 if (request.audio()) { | 170 if (request.audio()) { |
| 170 WebMediaStreamSource source; | 171 WebMediaStreamSource source; |
| 171 source.initialize("MockAudioDevice#1", | 172 source.initialize("MockAudioDevice#1", |
| 172 WebMediaStreamSource::TypeAudio, | 173 WebMediaStreamSource::TypeAudio, |
| 173 "Mock audio device", | 174 "Mock audio device", |
| 174 false /* remote */, true /* readonly */); | 175 false /* remote */, |
| 175 audio_tracks[0].initialize(source); | 176 true /* readonly */); |
| 176 } | 177 WebMediaStreamTrack web_track; |
| 178 web_track.initialize(source); |
| 179 stream.addTrack(web_track); |
| 180 } |
| 177 | 181 |
| 178 if (request.video()) { | 182 if (request.video()) |
| 179 WebMediaStreamSource source; | 183 AddVideoTrackToMediaStream(&stream); |
| 180 source.initialize("MockVideoDevice#1", | |
| 181 WebMediaStreamSource::TypeVideo, | |
| 182 "Mock video device", | |
| 183 false /* remote */, true /* readonly */); | |
| 184 video_tracks[0].initialize(source); | |
| 185 } | |
| 186 | 184 |
| 187 WebMediaStream stream; | 185 delegate_->PostTask(new UserMediaRequestTask(this, request, stream)); |
| 188 stream.initialize(audio_tracks, video_tracks); | |
| 189 | |
| 190 stream.setExtraData(new MockExtraData()); | |
| 191 | |
| 192 delegate_->PostTask(new UserMediaRequestTask(this, request, stream)); | |
| 193 } | 186 } |
| 194 | 187 |
| 195 void MockWebUserMediaClient::cancelUserMediaRequest( | 188 void MockWebUserMediaClient::cancelUserMediaRequest( |
| 196 const WebUserMediaRequest&) { | 189 const WebUserMediaRequest&) { |
| 197 } | 190 } |
| 198 | 191 |
| 199 void MockWebUserMediaClient::requestMediaDevices( | 192 void MockWebUserMediaClient::requestMediaDevices( |
| 200 const WebMediaDevicesRequest& request) { | 193 const WebMediaDevicesRequest& request) { |
| 201 struct { | 194 struct { |
| 202 const char* device_id; | 195 const char* device_id; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 224 }, | 217 }, |
| 225 }; | 218 }; |
| 226 | 219 |
| 227 WebVector<WebMediaDeviceInfo> devices(arraysize(test_devices)); | 220 WebVector<WebMediaDeviceInfo> devices(arraysize(test_devices)); |
| 228 for (size_t i = 0; i < arraysize(test_devices); ++i) { | 221 for (size_t i = 0; i < arraysize(test_devices); ++i) { |
| 229 devices[i].initialize(WebString::fromUTF8(test_devices[i].device_id), | 222 devices[i].initialize(WebString::fromUTF8(test_devices[i].device_id), |
| 230 test_devices[i].kind, | 223 test_devices[i].kind, |
| 231 WebString::fromUTF8(test_devices[i].label), | 224 WebString::fromUTF8(test_devices[i].label), |
| 232 WebString::fromUTF8(test_devices[i].group_id)); | 225 WebString::fromUTF8(test_devices[i].group_id)); |
| 233 } | 226 } |
| 234 | |
| 235 delegate_->PostTask(new MediaDevicesRequestTask(this, request, devices)); | 227 delegate_->PostTask(new MediaDevicesRequestTask(this, request, devices)); |
| 236 } | 228 } |
| 237 | 229 |
| 238 void MockWebUserMediaClient::cancelMediaDevicesRequest( | 230 void MockWebUserMediaClient::cancelMediaDevicesRequest( |
| 239 const WebMediaDevicesRequest&) { | 231 const WebMediaDevicesRequest&) { |
| 240 } | 232 } |
| 241 | 233 |
| 242 void MockWebUserMediaClient::requestSources( | 234 void MockWebUserMediaClient::requestSources( |
| 243 const blink::WebMediaStreamTrackSourcesRequest& request) { | 235 const blink::WebMediaStreamTrackSourcesRequest& request) { |
| 244 struct { | 236 struct { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 266 sources[i].initialize(WebString::fromUTF8(test_sources[i].id), | 258 sources[i].initialize(WebString::fromUTF8(test_sources[i].id), |
| 267 test_sources[i].kind, | 259 test_sources[i].kind, |
| 268 WebString::fromUTF8(test_sources[i].label), | 260 WebString::fromUTF8(test_sources[i].label), |
| 269 test_sources[i].facing); | 261 test_sources[i].facing); |
| 270 } | 262 } |
| 271 | 263 |
| 272 delegate_->PostTask(new SourcesRequestTask(this, request, sources)); | 264 delegate_->PostTask(new SourcesRequestTask(this, request, sources)); |
| 273 } | 265 } |
| 274 | 266 |
| 275 } // namespace test_runner | 267 } // namespace test_runner |
| OLD | NEW |