Move MediaConstraintsInterface to sdk/, and make it a concrete class

Bug: webrtc:9239
Change-Id: I545ebf59b078dd94bc466886616dd374e4b2e226
Reviewed-on: https://webrtc-review.googlesource.com/c/122502
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26682}
This commit is contained in:
Niels Möller
2019-02-13 08:52:27 +01:00
committed by Commit Bot
parent 1d7bf89ad6
commit dac03d9bb0
20 changed files with 211 additions and 394 deletions

View File

@ -21,10 +21,10 @@ namespace jni {
namespace {
// Helper for translating a List<Pair<String, String>> to a Constraints.
MediaConstraintsInterface::Constraints PopulateConstraintsFromJavaPairList(
MediaConstraints::Constraints PopulateConstraintsFromJavaPairList(
JNIEnv* env,
const JavaRef<jobject>& j_list) {
MediaConstraintsInterface::Constraints constraints;
MediaConstraints::Constraints constraints;
for (const JavaRef<jobject>& entry : Iterable(env, j_list)) {
constraints.emplace_back(
JavaToStdString(env, Java_KeyValuePair_getKey(env, entry)),
@ -33,34 +33,17 @@ MediaConstraintsInterface::Constraints PopulateConstraintsFromJavaPairList(
return constraints;
}
// Wrapper for a Java MediaConstraints object. Copies all needed data so when
// the constructor returns the Java object is no longer needed.
class MediaConstraintsJni : public MediaConstraintsInterface {
public:
MediaConstraintsJni(JNIEnv* env, const JavaRef<jobject>& j_constraints)
: mandatory_(PopulateConstraintsFromJavaPairList(
env,
Java_MediaConstraints_getMandatory(env, j_constraints))),
optional_(PopulateConstraintsFromJavaPairList(
env,
Java_MediaConstraints_getOptional(env, j_constraints))) {}
~MediaConstraintsJni() override = default;
// MediaConstraintsInterface.
const Constraints& GetMandatory() const override { return mandatory_; }
const Constraints& GetOptional() const override { return optional_; }
private:
const Constraints mandatory_;
const Constraints optional_;
};
} // namespace
std::unique_ptr<MediaConstraintsInterface> JavaToNativeMediaConstraints(
// Copies all needed data so Java object is no longer needed at return.
std::unique_ptr<MediaConstraints> JavaToNativeMediaConstraints(
JNIEnv* env,
const JavaRef<jobject>& j_constraints) {
return absl::make_unique<MediaConstraintsJni>(env, j_constraints);
return absl::make_unique<MediaConstraints>(
PopulateConstraintsFromJavaPairList(
env, Java_MediaConstraints_getMandatory(env, j_constraints)),
PopulateConstraintsFromJavaPairList(
env, Java_MediaConstraints_getOptional(env, j_constraints)));
}
} // namespace jni

View File

@ -14,13 +14,13 @@
#include <jni.h>
#include <memory>
#include "api/media_constraints_interface.h"
#include "sdk/android/native_api/jni/scoped_java_ref.h"
#include "sdk/media_constraints.h"
namespace webrtc {
namespace jni {
std::unique_ptr<MediaConstraintsInterface> JavaToNativeMediaConstraints(
std::unique_ptr<MediaConstraints> JavaToNativeMediaConstraints(
JNIEnv* env,
const JavaRef<jobject>& j_constraints);

View File

@ -33,7 +33,6 @@
#include <utility>
#include "absl/memory/memory.h"
#include "api/media_constraints_interface.h"
#include "api/peer_connection_interface.h"
#include "api/rtp_receiver_interface.h"
#include "api/rtp_sender_interface.h"
@ -411,7 +410,7 @@ OwnedPeerConnection::OwnedPeerConnection(
OwnedPeerConnection::OwnedPeerConnection(
rtc::scoped_refptr<PeerConnectionInterface> peer_connection,
std::unique_ptr<PeerConnectionObserver> observer,
std::unique_ptr<MediaConstraintsInterface> constraints)
std::unique_ptr<MediaConstraints> constraints)
: peer_connection_(peer_connection),
observer_(std::move(observer)),
constraints_(std::move(constraints)) {}
@ -482,7 +481,7 @@ static void JNI_PeerConnection_CreateOffer(
const JavaParamRef<jobject>& j_pc,
const JavaParamRef<jobject>& j_observer,
const JavaParamRef<jobject>& j_constraints) {
std::unique_ptr<MediaConstraintsInterface> constraints =
std::unique_ptr<MediaConstraints> constraints =
JavaToNativeMediaConstraints(jni, j_constraints);
rtc::scoped_refptr<CreateSdpObserverJni> observer(
new rtc::RefCountedObject<CreateSdpObserverJni>(jni, j_observer,
@ -497,7 +496,7 @@ static void JNI_PeerConnection_CreateAnswer(
const JavaParamRef<jobject>& j_pc,
const JavaParamRef<jobject>& j_observer,
const JavaParamRef<jobject>& j_constraints) {
std::unique_ptr<MediaConstraintsInterface> constraints =
std::unique_ptr<MediaConstraints> constraints =
JavaToNativeMediaConstraints(jni, j_constraints);
rtc::scoped_refptr<CreateSdpObserverJni> observer(
new rtc::RefCountedObject<CreateSdpObserverJni>(jni, j_observer,

View File

@ -108,18 +108,16 @@ class OwnedPeerConnection {
OwnedPeerConnection(
rtc::scoped_refptr<PeerConnectionInterface> peer_connection,
std::unique_ptr<PeerConnectionObserver> observer,
std::unique_ptr<MediaConstraintsInterface> constraints);
std::unique_ptr<MediaConstraints> constraints);
~OwnedPeerConnection();
PeerConnectionInterface* pc() const { return peer_connection_.get(); }
const MediaConstraintsInterface* constraints() const {
return constraints_.get();
}
const MediaConstraints* constraints() const { return constraints_.get(); }
private:
rtc::scoped_refptr<PeerConnectionInterface> peer_connection_;
std::unique_ptr<PeerConnectionObserver> observer_;
std::unique_ptr<MediaConstraintsInterface> constraints_;
std::unique_ptr<MediaConstraints> constraints_;
};
} // namespace jni

View File

@ -370,7 +370,7 @@ static jlong JNI_PeerConnectionFactory_CreateAudioSource(
JNIEnv* jni,
jlong native_factory,
const JavaParamRef<jobject>& j_constraints) {
std::unique_ptr<MediaConstraintsInterface> constraints =
std::unique_ptr<MediaConstraints> constraints =
JavaToNativeMediaConstraints(jni, j_constraints);
cricket::AudioOptions options;
CopyConstraintsIntoAudioOptions(constraints.get(), &options);
@ -437,7 +437,7 @@ static jlong JNI_PeerConnectionFactory_CreatePeerConnection(
}
}
std::unique_ptr<MediaConstraintsInterface> constraints;
std::unique_ptr<MediaConstraints> constraints;
if (!j_constraints.is_null()) {
constraints = JavaToNativeMediaConstraints(jni, j_constraints);
CopyConstraintsIntoRtcConfiguration(constraints.get(), &rtc_config);

View File

@ -12,10 +12,10 @@
#include <utility>
#include "api/media_constraints_interface.h"
#include "sdk/android/generated_peerconnection_jni/jni/SdpObserver_jni.h"
#include "sdk/android/native_api/jni/java_types.h"
#include "sdk/android/src/jni/jni_helpers.h"
#include "sdk/media_constraints.h"
namespace webrtc {
namespace jni {
@ -23,7 +23,7 @@ namespace jni {
CreateSdpObserverJni::CreateSdpObserverJni(
JNIEnv* env,
const JavaRef<jobject>& j_observer,
std::unique_ptr<MediaConstraintsInterface> constraints)
std::unique_ptr<MediaConstraints> constraints)
: j_observer_global_(env, j_observer),
constraints_(std::move(constraints)) {}
@ -47,7 +47,7 @@ void CreateSdpObserverJni::OnFailure(webrtc::RTCError error) {
SetSdpObserverJni::SetSdpObserverJni(
JNIEnv* env,
const JavaRef<jobject>& j_observer,
std::unique_ptr<MediaConstraintsInterface> constraints)
std::unique_ptr<MediaConstraints> constraints)
: j_observer_global_(env, j_observer),
constraints_(std::move(constraints)) {}

View File

@ -14,10 +14,10 @@
#include <memory>
#include <string>
#include "api/media_constraints_interface.h"
#include "api/peer_connection_interface.h"
#include "sdk/android/src/jni/jni_helpers.h"
#include "sdk/android/src/jni/pc/session_description.h"
#include "sdk/media_constraints.h"
namespace webrtc {
namespace jni {
@ -26,34 +26,34 @@ class CreateSdpObserverJni : public CreateSessionDescriptionObserver {
public:
CreateSdpObserverJni(JNIEnv* env,
const JavaRef<jobject>& j_observer,
std::unique_ptr<MediaConstraintsInterface> constraints);
std::unique_ptr<MediaConstraints> constraints);
~CreateSdpObserverJni() override;
MediaConstraintsInterface* constraints() { return constraints_.get(); }
MediaConstraints* constraints() { return constraints_.get(); }
void OnSuccess(SessionDescriptionInterface* desc) override;
void OnFailure(RTCError error) override;
private:
const ScopedJavaGlobalRef<jobject> j_observer_global_;
std::unique_ptr<MediaConstraintsInterface> constraints_;
std::unique_ptr<MediaConstraints> constraints_;
};
class SetSdpObserverJni : public SetSessionDescriptionObserver {
public:
SetSdpObserverJni(JNIEnv* env,
const JavaRef<jobject>& j_observer,
std::unique_ptr<MediaConstraintsInterface> constraints);
std::unique_ptr<MediaConstraints> constraints);
~SetSdpObserverJni() override;
MediaConstraintsInterface* constraints() { return constraints_.get(); }
MediaConstraints* constraints() { return constraints_.get(); }
void OnSuccess() override;
void OnFailure(RTCError error) override;
private:
const ScopedJavaGlobalRef<jobject> j_observer_global_;
std::unique_ptr<MediaConstraintsInterface> constraints_;
std::unique_ptr<MediaConstraints> constraints_;
};
} // namespace jni