Deprecate ContextUtils.getApplicationContext.
Allows passing in the application context to NetworkMonitor in startMonitoring. The audio code will refactored once it is moved under sdk/android. Bug: webrtc:8937 Change-Id: I50c917a845fc4f711899a97d34c04813cc68b68c Reviewed-on: https://webrtc-review.googlesource.com/58091 Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Commit-Queue: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22231}
This commit is contained in:
committed by
Commit Bot
parent
d2ed0a4c9e
commit
9ddc14daca
@ -36,7 +36,10 @@ public class ContextUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the stored application context.
|
* Returns the stored application context.
|
||||||
|
*
|
||||||
|
* @deprecated crbug.com/webrtc/8937
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static Context getApplicationContext() {
|
public static Context getApplicationContext() {
|
||||||
return applicationContext;
|
return applicationContext;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -83,24 +83,30 @@ public class NetworkMonitor {
|
|||||||
* multi-networking. This requires the embedding app have the platform ACCESS_NETWORK_STATE and
|
* multi-networking. This requires the embedding app have the platform ACCESS_NETWORK_STATE and
|
||||||
* CHANGE_NETWORK_STATE permission.
|
* CHANGE_NETWORK_STATE permission.
|
||||||
*/
|
*/
|
||||||
public void startMonitoring() {
|
public void startMonitoring(Context applicationContext) {
|
||||||
synchronized (autoDetectorLock) {
|
synchronized (autoDetectorLock) {
|
||||||
++numMonitors;
|
++numMonitors;
|
||||||
if (autoDetector == null) {
|
if (autoDetector == null) {
|
||||||
autoDetector = createAutoDetector(ContextUtils.getApplicationContext());
|
autoDetector = createAutoDetector(applicationContext);
|
||||||
}
|
}
|
||||||
currentConnectionType =
|
currentConnectionType =
|
||||||
NetworkMonitorAutoDetect.getConnectionType(autoDetector.getCurrentNetworkState());
|
NetworkMonitorAutoDetect.getConnectionType(autoDetector.getCurrentNetworkState());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Deprecated, pass in application context in startMonitoring instead. */
|
||||||
|
@Deprecated
|
||||||
|
public void startMonitoring() {
|
||||||
|
startMonitoring(ContextUtils.getApplicationContext());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables auto detection of the network state change and brings up mobile networks for using
|
* Enables auto detection of the network state change and brings up mobile networks for using
|
||||||
* multi-networking. This requires the embedding app have the platform ACCESS_NETWORK_STATE and
|
* multi-networking. This requires the embedding app have the platform ACCESS_NETWORK_STATE and
|
||||||
* CHANGE_NETWORK_STATE permission.
|
* CHANGE_NETWORK_STATE permission.
|
||||||
*/
|
*/
|
||||||
@CalledByNative
|
@CalledByNative
|
||||||
private void startMonitoring(long nativeObserver) {
|
private void startMonitoring(Context applicationContext, long nativeObserver) {
|
||||||
Logging.d(TAG, "Start monitoring with native observer " + nativeObserver);
|
Logging.d(TAG, "Start monitoring with native observer " + nativeObserver);
|
||||||
|
|
||||||
startMonitoring();
|
startMonitoring();
|
||||||
@ -213,21 +219,31 @@ public class NetworkMonitor {
|
|||||||
nativeNotifyOfActiveNetworkList(nativeObserver, networkInfos);
|
nativeNotifyOfActiveNetworkList(nativeObserver, networkInfos);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Adds an observer for any connection type changes. */
|
/**
|
||||||
|
* Adds an observer for any connection type changes.
|
||||||
|
*
|
||||||
|
* @deprecated Use getInstance(appContext).addObserver instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public static void addNetworkObserver(NetworkObserver observer) {
|
public static void addNetworkObserver(NetworkObserver observer) {
|
||||||
getInstance().addNetworkObserverInternal(observer);
|
getInstance().addObserver(observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addNetworkObserverInternal(NetworkObserver observer) {
|
public void addObserver(NetworkObserver observer) {
|
||||||
networkObservers.add(observer);
|
networkObservers.add(observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Removes an observer for any connection type changes. */
|
/**
|
||||||
|
* Removes an observer for any connection type changes.
|
||||||
|
*
|
||||||
|
* @deprecated Use getInstance(appContext).removeObserver instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public static void removeNetworkObserver(NetworkObserver observer) {
|
public static void removeNetworkObserver(NetworkObserver observer) {
|
||||||
getInstance().removeNetworkObserverInternal(observer);
|
getInstance().removeObserver(observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeNetworkObserverInternal(NetworkObserver observer) {
|
public void removeObserver(NetworkObserver observer) {
|
||||||
networkObservers.remove(observer);
|
networkObservers.remove(observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,6 +17,13 @@
|
|||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
|
std::unique_ptr<rtc::NetworkMonitorFactory> CreateAndroidNetworkMonitorFactory(
|
||||||
|
JNIEnv* env,
|
||||||
|
jobject application_context) {
|
||||||
|
return rtc::MakeUnique<jni::AndroidNetworkMonitorFactory>(
|
||||||
|
env, JavaParamRef<jobject>(application_context));
|
||||||
|
}
|
||||||
|
|
||||||
std::unique_ptr<rtc::NetworkMonitorFactory>
|
std::unique_ptr<rtc::NetworkMonitorFactory>
|
||||||
CreateAndroidNetworkMonitorFactory() {
|
CreateAndroidNetworkMonitorFactory() {
|
||||||
return rtc::MakeUnique<jni::AndroidNetworkMonitorFactory>();
|
return rtc::MakeUnique<jni::AndroidNetworkMonitorFactory>();
|
||||||
|
|||||||
@ -11,6 +11,8 @@
|
|||||||
#ifndef SDK_ANDROID_NATIVE_API_BASE_NETWORKMONITOR_H_
|
#ifndef SDK_ANDROID_NATIVE_API_BASE_NETWORKMONITOR_H_
|
||||||
#define SDK_ANDROID_NATIVE_API_BASE_NETWORKMONITOR_H_
|
#define SDK_ANDROID_NATIVE_API_BASE_NETWORKMONITOR_H_
|
||||||
|
|
||||||
|
#include <jni.h>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include "rtc_base/networkmonitor.h"
|
#include "rtc_base/networkmonitor.h"
|
||||||
@ -21,6 +23,11 @@ namespace webrtc {
|
|||||||
// network changes as soon as they occur, requesting a cellular interface
|
// network changes as soon as they occur, requesting a cellular interface
|
||||||
// (dependent on permissions), and binding sockets to network interfaces (more
|
// (dependent on permissions), and binding sockets to network interfaces (more
|
||||||
// reliable than binding to IP addresses on Android).
|
// reliable than binding to IP addresses on Android).
|
||||||
|
std::unique_ptr<rtc::NetworkMonitorFactory> CreateAndroidNetworkMonitorFactory(
|
||||||
|
JNIEnv* env,
|
||||||
|
jobject application_context);
|
||||||
|
|
||||||
|
// Deprecated. Pass in application context instead.
|
||||||
std::unique_ptr<rtc::NetworkMonitorFactory>
|
std::unique_ptr<rtc::NetworkMonitorFactory>
|
||||||
CreateAndroidNetworkMonitorFactory();
|
CreateAndroidNetworkMonitorFactory();
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@ class JavaRef<jobject> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
JavaRef() : obj_(nullptr) {}
|
constexpr JavaRef() : obj_(nullptr) {}
|
||||||
explicit JavaRef(jobject obj) : obj_(obj) {}
|
explicit JavaRef(jobject obj) : obj_(obj) {}
|
||||||
jobject obj_;
|
jobject obj_;
|
||||||
|
|
||||||
@ -172,6 +172,7 @@ class ScopedJavaGlobalRef : public JavaRef<T> {
|
|||||||
public:
|
public:
|
||||||
using JavaRef<T>::obj_;
|
using JavaRef<T>::obj_;
|
||||||
|
|
||||||
|
explicit constexpr ScopedJavaGlobalRef(std::nullptr_t) {}
|
||||||
ScopedJavaGlobalRef(JNIEnv* env, const JavaRef<T>& other)
|
ScopedJavaGlobalRef(JNIEnv* env, const JavaRef<T>& other)
|
||||||
: JavaRef<T>(static_cast<T>(env->NewGlobalRef(other.obj()))) {}
|
: JavaRef<T>(static_cast<T>(env->NewGlobalRef(other.obj()))) {}
|
||||||
explicit ScopedJavaGlobalRef(const ScopedJavaLocalRef<T>& other)
|
explicit ScopedJavaGlobalRef(const ScopedJavaLocalRef<T>& other)
|
||||||
|
|||||||
@ -145,8 +145,11 @@ std::string NetworkInformation::ToString() const {
|
|||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
AndroidNetworkMonitor::AndroidNetworkMonitor(JNIEnv* env)
|
AndroidNetworkMonitor::AndroidNetworkMonitor(
|
||||||
|
JNIEnv* env,
|
||||||
|
const JavaRef<jobject>& j_application_context)
|
||||||
: android_sdk_int_(Java_NetworkMonitor_androidSdkInt(env)),
|
: android_sdk_int_(Java_NetworkMonitor_androidSdkInt(env)),
|
||||||
|
j_application_context_(env, j_application_context),
|
||||||
j_network_monitor_(env, Java_NetworkMonitor_getInstance(env)) {}
|
j_network_monitor_(env, Java_NetworkMonitor_getInstance(env)) {}
|
||||||
|
|
||||||
AndroidNetworkMonitor::~AndroidNetworkMonitor() = default;
|
AndroidNetworkMonitor::~AndroidNetworkMonitor() = default;
|
||||||
@ -164,8 +167,8 @@ void AndroidNetworkMonitor::Start() {
|
|||||||
worker_thread()->socketserver()->set_network_binder(this);
|
worker_thread()->socketserver()->set_network_binder(this);
|
||||||
|
|
||||||
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
||||||
Java_NetworkMonitor_startMonitoring(env, j_network_monitor_,
|
Java_NetworkMonitor_startMonitoring(
|
||||||
jlongFromPointer(this));
|
env, j_network_monitor_, j_application_context_, jlongFromPointer(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidNetworkMonitor::Stop() {
|
void AndroidNetworkMonitor::Stop() {
|
||||||
@ -350,9 +353,20 @@ rtc::AdapterType AndroidNetworkMonitor::GetAdapterType(
|
|||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AndroidNetworkMonitorFactory::AndroidNetworkMonitorFactory()
|
||||||
|
: j_application_context_(nullptr) {}
|
||||||
|
|
||||||
|
AndroidNetworkMonitorFactory::AndroidNetworkMonitorFactory(
|
||||||
|
JNIEnv* env,
|
||||||
|
const JavaRef<jobject>& j_application_context)
|
||||||
|
: j_application_context_(env, j_application_context) {}
|
||||||
|
|
||||||
|
AndroidNetworkMonitorFactory::~AndroidNetworkMonitorFactory() = default;
|
||||||
|
|
||||||
rtc::NetworkMonitorInterface*
|
rtc::NetworkMonitorInterface*
|
||||||
AndroidNetworkMonitorFactory::CreateNetworkMonitor() {
|
AndroidNetworkMonitorFactory::CreateNetworkMonitor() {
|
||||||
return new AndroidNetworkMonitor(AttachCurrentThreadIfNeeded());
|
return new AndroidNetworkMonitor(AttachCurrentThreadIfNeeded(),
|
||||||
|
j_application_context_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidNetworkMonitor::NotifyConnectionTypeChanged(
|
void AndroidNetworkMonitor::NotifyConnectionTypeChanged(
|
||||||
|
|||||||
@ -55,7 +55,8 @@ struct NetworkInformation {
|
|||||||
class AndroidNetworkMonitor : public rtc::NetworkMonitorBase,
|
class AndroidNetworkMonitor : public rtc::NetworkMonitorBase,
|
||||||
public rtc::NetworkBinderInterface {
|
public rtc::NetworkBinderInterface {
|
||||||
public:
|
public:
|
||||||
explicit AndroidNetworkMonitor(JNIEnv* env);
|
explicit AndroidNetworkMonitor(JNIEnv* env,
|
||||||
|
const JavaRef<jobject>& j_application_context);
|
||||||
~AndroidNetworkMonitor() override;
|
~AndroidNetworkMonitor() override;
|
||||||
|
|
||||||
// TODO(sakal): Remove once down stream dependencies have been updated.
|
// TODO(sakal): Remove once down stream dependencies have been updated.
|
||||||
@ -90,6 +91,7 @@ class AndroidNetworkMonitor : public rtc::NetworkMonitorBase,
|
|||||||
void OnNetworkDisconnected_w(NetworkHandle network_handle);
|
void OnNetworkDisconnected_w(NetworkHandle network_handle);
|
||||||
|
|
||||||
const int android_sdk_int_;
|
const int android_sdk_int_;
|
||||||
|
ScopedJavaGlobalRef<jobject> j_application_context_;
|
||||||
ScopedJavaGlobalRef<jobject> j_network_monitor_;
|
ScopedJavaGlobalRef<jobject> j_network_monitor_;
|
||||||
rtc::ThreadChecker thread_checker_;
|
rtc::ThreadChecker thread_checker_;
|
||||||
bool started_ = false;
|
bool started_ = false;
|
||||||
@ -100,9 +102,18 @@ class AndroidNetworkMonitor : public rtc::NetworkMonitorBase,
|
|||||||
|
|
||||||
class AndroidNetworkMonitorFactory : public rtc::NetworkMonitorFactory {
|
class AndroidNetworkMonitorFactory : public rtc::NetworkMonitorFactory {
|
||||||
public:
|
public:
|
||||||
AndroidNetworkMonitorFactory() {}
|
// Deprecated. Pass in application context to this class.
|
||||||
|
AndroidNetworkMonitorFactory();
|
||||||
|
|
||||||
|
AndroidNetworkMonitorFactory(JNIEnv* env,
|
||||||
|
const JavaRef<jobject>& j_application_context);
|
||||||
|
|
||||||
|
~AndroidNetworkMonitorFactory() override;
|
||||||
|
|
||||||
rtc::NetworkMonitorInterface* CreateNetworkMonitor() override;
|
rtc::NetworkMonitorInterface* CreateNetworkMonitor() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
ScopedJavaGlobalRef<jobject> j_application_context_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace jni
|
} // namespace jni
|
||||||
|
|||||||
Reference in New Issue
Block a user