blob: eb09168d57c9ff9b23e57f15673c91ac6361b024 [file] [log] [blame]
Benjamin Wright728b9b52018-07-03 13:28:34 -07001/*
2 * Copyright 2018 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11package org.webrtc;
12
Artem Titarenko69540f42018-12-10 12:30:46 +010013import android.support.annotation.Nullable;
Benjamin Wright728b9b52018-07-03 13:28:34 -070014
15/**
16 * PeerConnectionDependencies holds all PeerConnection dependencies that are
17 * applied per PeerConnection. A dependency is distinct from a configuration
18 * as it defines significant executable code that can be provided by a user of
19 * the API.
20 */
21public final class PeerConnectionDependencies {
22 // Mandatory dependencies.
Benjamin Wright8cf30402018-07-20 15:08:03 -070023 private final PeerConnection.Observer observer;
24
25 // Optional fields.
26 private final SSLCertificateVerifier sslCertificateVerifier;
Benjamin Wright728b9b52018-07-03 13:28:34 -070027
28 public static class Builder {
29 private PeerConnection.Observer observer;
Benjamin Wright8cf30402018-07-20 15:08:03 -070030 private SSLCertificateVerifier sslCertificateVerifier;
Benjamin Wright728b9b52018-07-03 13:28:34 -070031
32 private Builder(PeerConnection.Observer observer) {
33 this.observer = observer;
34 }
35
Benjamin Wright8cf30402018-07-20 15:08:03 -070036 public Builder setSSLCertificateVerifier(SSLCertificateVerifier sslCertificateVerifier) {
37 this.sslCertificateVerifier = sslCertificateVerifier;
38 return this;
39 }
40
Benjamin Wright728b9b52018-07-03 13:28:34 -070041 // Observer is a required dependency and so is forced in the construction of the object.
42 public PeerConnectionDependencies createPeerConnectionDependencies() {
Benjamin Wright8cf30402018-07-20 15:08:03 -070043 return new PeerConnectionDependencies(observer, sslCertificateVerifier);
Benjamin Wright728b9b52018-07-03 13:28:34 -070044 }
45 }
46
47 public static Builder builder(PeerConnection.Observer observer) {
48 return new Builder(observer);
49 }
50
51 PeerConnection.Observer getObserver() {
52 return observer;
53 }
54
Benjamin Wright8cf30402018-07-20 15:08:03 -070055 @Nullable
56 SSLCertificateVerifier getSSLCertificateVerifier() {
57 return sslCertificateVerifier;
58 }
59
60 private PeerConnectionDependencies(
61 PeerConnection.Observer observer, SSLCertificateVerifier sslCertificateVerifier) {
Benjamin Wright728b9b52018-07-03 13:28:34 -070062 this.observer = observer;
Benjamin Wright8cf30402018-07-20 15:08:03 -070063 this.sslCertificateVerifier = sslCertificateVerifier;
Benjamin Wright728b9b52018-07-03 13:28:34 -070064 }
65}