From 728b9b564d89b01c80e6ed02fb268f84fcb6f9a7 Mon Sep 17 00:00:00 2001 From: Benjamin Wright Date: Tue, 3 Jul 2018 13:28:34 -0700 Subject: [PATCH] Adds PeerConnectionDependencies to Java API. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change adds the base PeerConnectionDependencies structure available in the native API to the Java API. This changelist only adds the API for the PeerConnection.Observer which is currently the only mandatory parameter. In a following CL this will be extended to include the SSLCertificateVerifier allowing java code to provide an implementation of this. Bug: webrtc:7913 Change-Id: I74c2e46988ed5cb0685ed907c1bff43867f2c48c Reviewed-on: https://webrtc-review.googlesource.com/86180 Reviewed-by: Sami Kalliomäki Commit-Queue: Benjamin Wright Cr-Commit-Position: refs/heads/master@{#23892} --- sdk/android/BUILD.gn | 1 + .../webrtc/PeerConnectionDependencies.java | 49 +++++++++++++++++++ .../api/org/webrtc/PeerConnectionFactory.java | 6 +++ 3 files changed, 56 insertions(+) create mode 100644 sdk/android/api/org/webrtc/PeerConnectionDependencies.java diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index abad9da1b4..a7e99396e0 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -970,6 +970,7 @@ rtc_android_library("peerconnection_java") { "api/org/webrtc/NetworkMonitor.java", # TODDO(sakal): Break dependencies and move to base_java. "api/org/webrtc/NetworkMonitorAutoDetect.java", # TODDO(sakal): Break dependencies and move to base_java. "api/org/webrtc/PeerConnection.java", + "api/org/webrtc/PeerConnectionDependencies.java", "api/org/webrtc/PeerConnectionFactory.java", "api/org/webrtc/RTCStats.java", "api/org/webrtc/RTCStatsCollectorCallback.java", diff --git a/sdk/android/api/org/webrtc/PeerConnectionDependencies.java b/sdk/android/api/org/webrtc/PeerConnectionDependencies.java new file mode 100644 index 0000000000..8ecf0ff11e --- /dev/null +++ b/sdk/android/api/org/webrtc/PeerConnectionDependencies.java @@ -0,0 +1,49 @@ +/* + * Copyright 2018 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +package org.webrtc; + +import javax.annotation.Nullable; + +/** + * PeerConnectionDependencies holds all PeerConnection dependencies that are + * applied per PeerConnection. A dependency is distinct from a configuration + * as it defines significant executable code that can be provided by a user of + * the API. + */ +public final class PeerConnectionDependencies { + // Mandatory dependencies. + private PeerConnection.Observer observer; + + public static class Builder { + private PeerConnection.Observer observer; + + private Builder(PeerConnection.Observer observer) { + this.observer = observer; + } + + // Observer is a required dependency and so is forced in the construction of the object. + public PeerConnectionDependencies createPeerConnectionDependencies() { + return new PeerConnectionDependencies(observer); + } + } + + public static Builder builder(PeerConnection.Observer observer) { + return new Builder(observer); + } + + PeerConnection.Observer getObserver() { + return observer; + } + + private PeerConnectionDependencies(PeerConnection.Observer observer) { + this.observer = observer; + } +} diff --git a/sdk/android/api/org/webrtc/PeerConnectionFactory.java b/sdk/android/api/org/webrtc/PeerConnectionFactory.java index dc89aec31f..07a1cde187 100644 --- a/sdk/android/api/org/webrtc/PeerConnectionFactory.java +++ b/sdk/android/api/org/webrtc/PeerConnectionFactory.java @@ -349,6 +349,12 @@ public class PeerConnectionFactory { return createPeerConnection(rtcConfig, null /* constraints */, observer); } + @Nullable + public PeerConnection createPeerConnection( + PeerConnection.RTCConfiguration rtcConfig, PeerConnectionDependencies dependencies) { + return createPeerConnection(rtcConfig, null /* constraints */, dependencies.getObserver()); + } + public MediaStream createLocalMediaStream(String label) { return new MediaStream(nativeCreateLocalMediaStream(nativeFactory, label)); }