Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(810)

Side by Side Diff: content/shell/renderer/test_runner/WebUserMediaClientMock.cpp

Issue 308073011: test_runner: Migrate WebUserMediaClientMock to our Chromium C++ style. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/shell/renderer/test_runner/WebUserMediaClientMock.h"
6
7 #include "base/logging.h"
8 #include "content/shell/renderer/test_runner/WebTestDelegate.h"
9 #include "content/shell/renderer/test_runner/mock_constraints.h"
10 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
11 #include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h"
12 #include "third_party/WebKit/public/platform/WebMediaStream.h"
13 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
14 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
15 #include "third_party/WebKit/public/platform/WebVector.h"
16 #include "third_party/WebKit/public/web/WebDocument.h"
17 #include "third_party/WebKit/public/web/WebMediaDevicesRequest.h"
18 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h"
19 #include "third_party/WebKit/public/web/WebUserMediaRequest.h"
20
21 using namespace blink;
22
23 namespace content {
24
25 class UserMediaRequestTask : public WebMethodTask<WebUserMediaClientMock> {
26 public:
27 UserMediaRequestTask(WebUserMediaClientMock* object, const WebUserMediaReque st& request, const WebMediaStream result)
28 : WebMethodTask<WebUserMediaClientMock>(object)
29 , m_request(request)
30 , m_result(result)
31 {
32 DCHECK(!m_result.isNull());
33 }
34
35 virtual void runIfValid() OVERRIDE
36 {
37 m_request.requestSucceeded(m_result);
38 }
39
40 private:
41 WebUserMediaRequest m_request;
42 WebMediaStream m_result;
43 };
44
45 class UserMediaRequestConstraintFailedTask : public WebMethodTask<WebUserMediaCl ientMock> {
46 public:
47 UserMediaRequestConstraintFailedTask(WebUserMediaClientMock* object, const W ebUserMediaRequest& request, const WebString& constraint)
48 : WebMethodTask<WebUserMediaClientMock>(object)
49 , m_request(request)
50 , m_constraint(constraint)
51 {
52 }
53
54 virtual void runIfValid() OVERRIDE
55 {
56 m_request.requestFailedConstraint(m_constraint);
57 }
58
59 private:
60 WebUserMediaRequest m_request;
61 WebString m_constraint;
62 };
63
64 class UserMediaRequestPermissionDeniedTask : public WebMethodTask<WebUserMediaCl ientMock> {
65 public:
66 UserMediaRequestPermissionDeniedTask(WebUserMediaClientMock* object, const W ebUserMediaRequest& request)
67 : WebMethodTask<WebUserMediaClientMock>(object)
68 , m_request(request)
69 {
70 }
71
72 virtual void runIfValid() OVERRIDE
73 {
74 m_request.requestFailed();
75 }
76
77 private:
78 WebUserMediaRequest m_request;
79 };
80
81 class MediaDevicesRequestTask : public WebMethodTask<WebUserMediaClientMock> {
82 public:
83 MediaDevicesRequestTask(WebUserMediaClientMock* object, const WebMediaDevice sRequest& request, const WebVector<WebMediaDeviceInfo>& result)
84 : WebMethodTask<WebUserMediaClientMock>(object)
85 , m_request(request)
86 , m_result(result)
87 {
88 }
89
90 virtual void runIfValid() OVERRIDE
91 {
92 m_request.requestSucceeded(m_result);
93 }
94
95 private:
96 WebMediaDevicesRequest m_request;
97 WebVector<WebMediaDeviceInfo> m_result;
98 };
99
100 ////////////////////////////////
101
102 class MockExtraData : public WebMediaStream::ExtraData {
103 public:
104 int foo;
105 };
106
107 WebUserMediaClientMock::WebUserMediaClientMock(WebTestDelegate* delegate)
108 : m_delegate(delegate)
109 {
110 }
111
112 void WebUserMediaClientMock::requestUserMedia(const WebUserMediaRequest& streamR equest)
113 {
114 DCHECK(!streamRequest.isNull());
115 WebUserMediaRequest request = streamRequest;
116
117 if (request.ownerDocument().isNull() || !request.ownerDocument().frame()) {
118 m_delegate->postTask(new UserMediaRequestPermissionDeniedTask(this, requ est));
119 return;
120 }
121
122 WebMediaConstraints constraints = request.audioConstraints();
123 WebString failedConstraint;
124 if (!constraints.isNull() && !MockConstraints::VerifyConstraints(constraints , &failedConstraint)) {
125 m_delegate->postTask(new UserMediaRequestConstraintFailedTask(this, requ est, failedConstraint));
126 return;
127 }
128 constraints = request.videoConstraints();
129 if (!constraints.isNull() && !MockConstraints::VerifyConstraints(constraints , &failedConstraint)) {
130 m_delegate->postTask(new UserMediaRequestConstraintFailedTask(this, requ est, failedConstraint));
131 return;
132 }
133
134 const size_t zero = 0;
135 const size_t one = 1;
136 WebVector<WebMediaStreamTrack> audioTracks(request.audio() ? one : zero);
137 WebVector<WebMediaStreamTrack> videoTracks(request.video() ? one : zero);
138
139 if (request.audio()) {
140 WebMediaStreamSource source;
141 source.initialize("MockAudioDevice#1", WebMediaStreamSource::TypeAudio, "Mock audio device");
142 audioTracks[0].initialize(source);
143 }
144
145 if (request.video()) {
146 WebMediaStreamSource source;
147 source.initialize("MockVideoDevice#1", WebMediaStreamSource::TypeVideo, "Mock video device");
148 videoTracks[0].initialize(source);
149 }
150
151 WebMediaStream stream;
152 stream.initialize(audioTracks, videoTracks);
153
154 stream.setExtraData(new MockExtraData());
155
156 m_delegate->postTask(new UserMediaRequestTask(this, request, stream));
157 }
158
159 void WebUserMediaClientMock::cancelUserMediaRequest(const WebUserMediaRequest&)
160 {
161 }
162
163 void WebUserMediaClientMock::requestMediaDevices(const WebMediaDevicesRequest& r equest)
164 {
165 const size_t three = 3;
166 WebVector<WebMediaDeviceInfo> devices(three);
167
168 devices[0].initialize("device1", WebMediaDeviceInfo::MediaDeviceKindAudioInp ut, "Built-in microphone", "group1");
169 devices[1].initialize("device2", WebMediaDeviceInfo::MediaDeviceKindAudioOut put, "Built-in speakers", "group1");
170 devices[2].initialize("device3", WebMediaDeviceInfo::MediaDeviceKindVideoInp ut, "Build-in webcam", "group2");
171
172 m_delegate->postTask(new MediaDevicesRequestTask(this, request, devices));
173 }
174
175 void WebUserMediaClientMock::cancelMediaDevicesRequest(const WebMediaDevicesRequ est&)
176 {
177 }
178
179 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698