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

Unified Diff: components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactory.java

Issue 716433003: Continue impementation SessionDependencyFactoryNative. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@native-factory
Patch Set: Created 6 years, 1 month 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
Index: components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactory.java
diff --git a/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactory.java b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactory.java
index 1f1fe9b401c6c438baa28064798c8e69170d9e57..458579b973d4f7193358293ecc5e55f180d6157c 100644
--- a/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactory.java
+++ b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactory.java
@@ -20,25 +20,45 @@ import java.util.List;
/**
* Implements AbstractDataChannel and AbstractPeerConnection on top of org.webrtc.* API.
* Isolation is needed because some configuration of DevTools bridge may not be based on
- * Java API. Native implementation of SessionDependencyFactory will be added for this case.
+ * Java API.
* In addition abstraction layer isolates SessionBase from complexity of underlying API
* beside used features.
*/
-public class SessionDependencyFactory {
- private final PeerConnectionFactory mFactory = new PeerConnectionFactory();
+public abstract class SessionDependencyFactory {
+ public static SessionDependencyFactory newInstance() {
+ return new JavaImpl();
+ }
+
+ public abstract AbstractPeerConnection createPeerConnection(
+ RTCConfiguration config, AbstractPeerConnection.Observer observer);
+
+ public abstract void dispose();
+
+ private static class JavaImpl extends SessionDependencyFactory {
+ private final PeerConnectionFactory mFactory = new PeerConnectionFactory();
+
+ @Override
+ public AbstractPeerConnection createPeerConnection(
+ RTCConfiguration config, AbstractPeerConnection.Observer observer) {
+ return new PeerConnectionAdapter(
+ mFactory.createPeerConnection(
+ convert(config),
+ createPeerConnectionConstraints(),
+ new PeerConnnectionObserverAdapter(observer)),
+ observer);
+ }
- public AbstractPeerConnection createPeerConnection(
- RTCConfiguration config, AbstractPeerConnection.Observer observer) {
+ @Override
+ public void dispose() {
+ mFactory.dispose();
+ }
+ }
+
+ private static MediaConstraints createPeerConnectionConstraints() {
MediaConstraints constraints = new MediaConstraints();
constraints.mandatory.add(
new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
- return new PeerConnectionAdapter(
- mFactory.createPeerConnection(convert(config), constraints,
- new PeerConnnectionObserverAdapter(observer)), observer);
- }
-
- public void dispose() {
- mFactory.dispose();
+ return constraints;
}
private static AbstractPeerConnection.SessionDescriptionType convertType(
@@ -139,8 +159,8 @@ public class SessionDependencyFactory {
@Override
public void onStateChange() {
- AbstractDataChannel.State state = mDataChannel.state() == DataChannel.State.OPEN ?
- AbstractDataChannel.State.OPEN : AbstractDataChannel.State.CLOSED;
+ AbstractDataChannel.State state = mDataChannel.state() == DataChannel.State.OPEN
+ ? AbstractDataChannel.State.OPEN : AbstractDataChannel.State.CLOSED;
if (mState != state) {
mState = state;
mAdaptee.onStateChange(state);
@@ -190,6 +210,7 @@ public class SessionDependencyFactory {
@Override
public void onCreateSuccess(final SessionDescription localDescription) {
+ // TODO(serya): |mConnection| could be disposed, synchronization needed.
mConnection.setLocalDescriptionOnSignalingThread(localDescription);
}

Powered by Google App Engine
This is Rietveld 408576698