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

Unified Diff: content/renderer/media/user_media_client_impl_unittest.cc

Issue 2696443002: Reland of Use spec-compliant algorithm to select video devices in getUserMedia. (Closed)
Patch Set: Address boliu's comments Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/user_media_client_impl.cc ('k') | content/renderer/render_frame_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/user_media_client_impl_unittest.cc
diff --git a/content/renderer/media/user_media_client_impl_unittest.cc b/content/renderer/media/user_media_client_impl_unittest.cc
index 43a957fe63cb391ee11f2809ce6159558b0cd933..2cd033b2005a647331e0ac0666f560284272ceb7 100644
--- a/content/renderer/media/user_media_client_impl_unittest.cc
+++ b/content/renderer/media/user_media_client_impl_unittest.cc
@@ -45,8 +45,7 @@ blink::WebMediaConstraints CreateDefaultConstraints() {
blink::WebMediaConstraints CreateDeviceConstraints(
const char* basic_exact_value,
const char* basic_ideal_value = nullptr,
- const char* advanced_exact_value = nullptr,
- const char* advanced_ideal_value = nullptr) {
+ const char* advanced_exact_value = nullptr) {
MockConstraintFactory factory;
blink::WebMediaTrackConstraintSet basic;
if (basic_exact_value) {
@@ -64,9 +63,29 @@ blink::WebMediaConstraints CreateDeviceConstraints(
blink::WebString value = blink::WebString::fromUTF8(advanced_exact_value);
advanced.deviceId.setExact(value);
}
- if (advanced_ideal_value) {
- blink::WebString value = blink::WebString::fromUTF8(advanced_ideal_value);
- advanced.deviceId.setIdeal(blink::WebVector<blink::WebString>(&value, 1));
+
+ return factory.CreateWebMediaConstraints();
+}
+
+blink::WebMediaConstraints CreateFacingModeConstraints(
+ const char* basic_exact_value,
+ const char* basic_ideal_value = nullptr,
+ const char* advanced_exact_value = nullptr) {
+ MockConstraintFactory factory;
+ if (basic_exact_value) {
+ factory.basic().facingMode.setExact(
+ blink::WebString::fromUTF8(basic_exact_value));
+ }
+ if (basic_ideal_value) {
+ blink::WebString value = blink::WebString::fromUTF8(basic_ideal_value);
+ factory.basic().deviceId.setIdeal(
+ blink::WebVector<blink::WebString>(&value, 1));
+ }
+
+ auto& advanced = factory.AddAdvanced();
+ if (advanced_exact_value) {
+ blink::WebString value = blink::WebString::fromUTF8(advanced_exact_value);
+ advanced.deviceId.setExact(value);
}
return factory.CreateWebMediaConstraints();
@@ -120,15 +139,34 @@ class MockMediaDevicesDispatcherHost
callback.Run(result);
}
+ void GetVideoInputCapabilities(
+ const url::Origin& security_origin,
+ const GetVideoInputCapabilitiesCallback& client_callback) override {
+ ::mojom::VideoInputDeviceCapabilitiesPtr device =
+ ::mojom::VideoInputDeviceCapabilities::New();
+ device->device_id = kFakeVideoInputDeviceId1;
+ device->facing_mode = ::mojom::FacingMode::USER;
+ device->formats.push_back(media::VideoCaptureFormat(
+ gfx::Size(640, 480), 30.0f, media::PIXEL_FORMAT_I420));
+ std::vector<::mojom::VideoInputDeviceCapabilitiesPtr> result;
+ result.push_back(std::move(device));
+
+ device = ::mojom::VideoInputDeviceCapabilities::New();
+ device->device_id = kFakeVideoInputDeviceId2;
+ device->facing_mode = ::mojom::FacingMode::ENVIRONMENT;
+ device->formats.push_back(media::VideoCaptureFormat(
+ gfx::Size(640, 480), 30.0f, media::PIXEL_FORMAT_I420));
+ result.push_back(std::move(device));
+
+ client_callback.Run(std::move(result));
+ }
+
MOCK_METHOD3(SubscribeDeviceChangeNotifications,
void(MediaDeviceType type,
uint32_t subscription_id,
const url::Origin& security_origin));
MOCK_METHOD2(UnsubscribeDeviceChangeNotifications,
void(MediaDeviceType type, uint32_t subscription_id));
- MOCK_METHOD2(GetVideoInputCapabilities,
- void(const url::Origin& security_origin,
- const GetVideoInputCapabilitiesCallback& client_callback));
};
class UserMediaClientImplUnderTest : public UserMediaClientImpl {
@@ -143,15 +181,16 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl {
UserMediaClientImplUnderTest(
PeerConnectionDependencyFactory* dependency_factory,
std::unique_ptr<MediaStreamDispatcher> media_stream_dispatcher)
- : UserMediaClientImpl(NULL,
+ : UserMediaClientImpl(nullptr,
dependency_factory,
- std::move(media_stream_dispatcher)),
+ std::move(media_stream_dispatcher),
+ base::ThreadTaskRunnerHandle::Get()),
state_(REQUEST_NOT_STARTED),
result_(NUM_MEDIA_REQUEST_RESULTS),
result_name_(""),
factory_(dependency_factory),
create_source_that_fails_(false),
- video_source_(NULL) {}
+ video_source_(nullptr) {}
void RequestUserMediaForTest(
const blink::WebUserMediaRequest& user_media_request) {
@@ -390,7 +429,7 @@ class UserMediaClientImplTest : public ::testing::Test {
return result;
}
- void TestValidRequestWithDeviceConstraints(
+ void TestValidRequestWithConstraints(
const blink::WebMediaConstraints& audio_constraints,
const blink::WebMediaConstraints& video_constraints,
const std::string& expected_audio_device_id,
@@ -838,9 +877,9 @@ TEST_F(UserMediaClientImplTest, CreateWithMandatoryValidDeviceIds) {
CreateDeviceConstraints(kFakeAudioInputDeviceId1);
blink::WebMediaConstraints video_constraints =
CreateDeviceConstraints(kFakeVideoInputDeviceId1);
- TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
- kFakeAudioInputDeviceId1,
- kFakeVideoInputDeviceId1);
+ TestValidRequestWithConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
}
TEST_F(UserMediaClientImplTest, CreateWithBasicIdealValidDeviceId) {
@@ -848,9 +887,9 @@ TEST_F(UserMediaClientImplTest, CreateWithBasicIdealValidDeviceId) {
CreateDeviceConstraints(nullptr, kFakeAudioInputDeviceId1);
blink::WebMediaConstraints video_constraints =
CreateDeviceConstraints(nullptr, kFakeVideoInputDeviceId1);
- TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
- kFakeAudioInputDeviceId1,
- kFakeVideoInputDeviceId1);
+ TestValidRequestWithConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
}
TEST_F(UserMediaClientImplTest, CreateWithAdvancedExactValidDeviceId) {
@@ -858,40 +897,43 @@ TEST_F(UserMediaClientImplTest, CreateWithAdvancedExactValidDeviceId) {
CreateDeviceConstraints(nullptr, nullptr, kFakeAudioInputDeviceId1);
blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
nullptr, nullptr, kFakeVideoInputDeviceId1);
- TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
- kFakeAudioInputDeviceId1,
- kFakeVideoInputDeviceId1);
+ TestValidRequestWithConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
}
-TEST_F(UserMediaClientImplTest, CreateWithAdvancedIdealValidDeviceId) {
- blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints(
- nullptr, nullptr, nullptr, kFakeAudioInputDeviceId1);
- blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
- nullptr, nullptr, nullptr, kFakeVideoInputDeviceId1);
- TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
- kFakeAudioInputDeviceId1,
- kFakeVideoInputDeviceId1);
+TEST_F(UserMediaClientImplTest, CreateWithAllOptionalInvalidDeviceId) {
+ blink::WebMediaConstraints audio_constraints =
+ CreateDeviceConstraints(nullptr, kInvalidDeviceId, kInvalidDeviceId);
+ blink::WebMediaConstraints video_constraints =
+ CreateDeviceConstraints(nullptr, kInvalidDeviceId, kInvalidDeviceId);
+ // MockMediaStreamDispatcher uses empty string as default audio device ID.
+ // MockMediaDevicesDispatcher uses the first device in the enumeration as
+ // default video device ID.
+ TestValidRequestWithConstraints(audio_constraints, video_constraints,
+ std::string(), kFakeVideoInputDeviceId1);
}
-TEST_F(UserMediaClientImplTest, CreateWithAllOptionalInvalidDeviceId) {
- blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints(
- nullptr, kInvalidDeviceId, kInvalidDeviceId, kInvalidDeviceId);
- blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
- nullptr, kInvalidDeviceId, kInvalidDeviceId, kInvalidDeviceId);
- // MockMediaStreamDispatcher uses empty string as default device ID.
- TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
- std::string(), std::string());
+TEST_F(UserMediaClientImplTest, CreateWithFacingModeUser) {
+ blink::WebMediaConstraints audio_constraints =
+ CreateDeviceConstraints(kFakeAudioInputDeviceId1);
+ blink::WebMediaConstraints video_constraints =
+ CreateFacingModeConstraints("user");
+ // kFakeVideoInputDeviceId1 has user facing mode.
+ TestValidRequestWithConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
}
-TEST_F(UserMediaClientImplTest,
- CreateWithAdvancedIdealValidOtherOptionalInvalidDeviceId) {
- blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints(
- nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeAudioInputDeviceId1);
- blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
- nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeVideoInputDeviceId1);
- TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
- kFakeAudioInputDeviceId1,
- kFakeVideoInputDeviceId1);
+TEST_F(UserMediaClientImplTest, CreateWithFacingModeEnvironment) {
+ blink::WebMediaConstraints audio_constraints =
+ CreateDeviceConstraints(kFakeAudioInputDeviceId1);
+ blink::WebMediaConstraints video_constraints =
+ CreateFacingModeConstraints("environment");
+ // kFakeVideoInputDeviceId2 has environment facing mode.
+ TestValidRequestWithConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId2);
}
} // namespace content
« no previous file with comments | « content/renderer/media/user_media_client_impl.cc ('k') | content/renderer/render_frame_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698