summaryrefslogtreecommitdiff
path: root/wifi/java/src
diff options
context:
space:
mode:
author Isaac Katzenelson <isaack@android.com> 2023-02-24 21:18:55 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-02-24 21:18:55 +0000
commit3252063093e538b9765ee2ac5f197da61bd0b8aa (patch)
tree7b2db4eab3eb5ddba5ecefc5e2e35ba9ba3696ab /wifi/java/src
parenta4551d5615b0d4e77e6bde2c2e20dcb11b376cd1 (diff)
parentbb165f6576671eb69d40c66a2fd0b7694e45dce7 (diff)
Merge "Add getters to SharedConnectivityService" into udc-dev
Diffstat (limited to 'wifi/java/src')
-rw-r--r--wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java106
-rw-r--r--wifi/java/src/android/net/wifi/sharedconnectivity/service/ISharedConnectivityService.aidl8
-rw-r--r--wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java54
3 files changed, 153 insertions, 15 deletions
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
index d5d01d38ef62..ab5b2e179fdb 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
@@ -192,9 +192,9 @@ public class SharedConnectivityManager {
mService = ISharedConnectivityService.Stub.asInterface(service);
if (!mCallbackProxyCache.isEmpty()) {
synchronized (mCallbackProxyCache) {
- mCallbackProxyCache.keySet().forEach(callback -> {
- registerCallbackInternal(callback, mCallbackProxyCache.get(callback));
- });
+ mCallbackProxyCache.keySet().forEach(callback ->
+ registerCallbackInternal(
+ callback, mCallbackProxyCache.get(callback)));
mCallbackProxyCache.clear();
}
}
@@ -418,4 +418,104 @@ public class SharedConnectivityManager {
}
return true;
}
+
+ /**
+ * Gets the list of tether networks the user can select to connect to.
+ *
+ * @return Returns a {@link List} of {@link TetherNetwork} objects, empty list on failure.
+ */
+ @NonNull
+ public List<TetherNetwork> getTetherNetworks() {
+ if (mService == null) {
+ return List.of();
+ }
+
+ try {
+ return mService.getTetherNetworks();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Exception in getTetherNetworks", e);
+ }
+ return List.of();
+ }
+
+ /**
+ * Gets the list of known networks the user can select to connect to.
+ *
+ * @return Returns a {@link List} of {@link KnownNetwork} objects, empty list on failure.
+ */
+ @NonNull
+ public List<KnownNetwork> getKnownNetworks() {
+ if (mService == null) {
+ return List.of();
+ }
+
+ try {
+ return mService.getKnownNetworks();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Exception in getKnownNetworks", e);
+ }
+ return List.of();
+ }
+
+ /**
+ * Gets the shared connectivity settings state.
+ *
+ * @return Returns a {@link SharedConnectivitySettingsState} object with the state, null on
+ * failure.
+ */
+ @Nullable
+ public SharedConnectivitySettingsState getSettingsState() {
+ if (mService == null) {
+ return null;
+ }
+
+ try {
+ return mService.getSettingsState();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Exception in getSettingsState", e);
+ }
+ return null;
+ }
+
+ /**
+ * Gets the connection status of the tether network the user selected to connect to.
+ *
+ * @return Returns a {@link TetherNetworkConnectionStatus} object with the connection status,
+ * null on failure. If no connection is active the status will be
+ * {@link TetherNetworkConnectionStatus#CONNECTION_STATUS_UNKNOWN}.
+ */
+ @Nullable
+ public TetherNetworkConnectionStatus getTetherNetworkConnectionStatus() {
+ if (mService == null) {
+ return null;
+ }
+
+ try {
+ return mService.getTetherNetworkConnectionStatus();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Exception in getTetherNetworkConnectionStatus", e);
+ }
+ return null;
+ }
+
+ /**
+ * Gets the connection status of the known network the user selected to connect to.
+ *
+ * @return Returns a {@link KnownNetworkConnectionStatus} object with the connection status,
+ * null on failure. If no connection is active the status will be
+ * {@link KnownNetworkConnectionStatus#CONNECTION_STATUS_UNKNOWN}.
+ */
+ @Nullable
+ public KnownNetworkConnectionStatus getKnownNetworkConnectionStatus() {
+ if (mService == null) {
+ return null;
+ }
+
+ try {
+ return mService.getKnownNetworkConnectionStatus();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Exception in getKnownNetworkConnectionStatus", e);
+ }
+ return null;
+ }
}
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/service/ISharedConnectivityService.aidl b/wifi/java/src/android/net/wifi/sharedconnectivity/service/ISharedConnectivityService.aidl
index 52da596081a4..9f33e99ad3d1 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/service/ISharedConnectivityService.aidl
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/service/ISharedConnectivityService.aidl
@@ -18,6 +18,9 @@ package android.net.wifi.sharedconnectivity.service;
import android.net.wifi.sharedconnectivity.app.KnownNetwork;
import android.net.wifi.sharedconnectivity.app.TetherNetwork;
+import android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus;
+import android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState;
+import android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus;
import android.net.wifi.sharedconnectivity.service.ISharedConnectivityCallback;
/*
@@ -30,4 +33,9 @@ interface ISharedConnectivityService {
void disconnectTetherNetwork(in TetherNetwork network);
void connectKnownNetwork(in KnownNetwork network);
void forgetKnownNetwork(in KnownNetwork network);
+ List<TetherNetwork> getTetherNetworks();
+ List<KnownNetwork> getKnownNetworks();
+ SharedConnectivitySettingsState getSettingsState();
+ TetherNetworkConnectionStatus getTetherNetworkConnectionStatus();
+ KnownNetworkConnectionStatus getKnownNetworkConnectionStatus();
}
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java b/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
index b751f1eaa40e..1d3c63cbbb0e 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
@@ -33,6 +33,7 @@ import android.net.wifi.sharedconnectivity.app.SharedConnectivityManager;
import android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState;
import android.net.wifi.sharedconnectivity.app.TetherNetwork;
import android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus;
+import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.RemoteException;
@@ -68,9 +69,17 @@ public abstract class SharedConnectivityService extends Service {
private List<TetherNetwork> mTetherNetworks = Collections.emptyList();
private List<KnownNetwork> mKnownNetworks = Collections.emptyList();
- private SharedConnectivitySettingsState mSettingsState;
- private TetherNetworkConnectionStatus mTetherNetworkConnectionStatus;
- private KnownNetworkConnectionStatus mKnownNetworkConnectionStatus;
+ private SharedConnectivitySettingsState mSettingsState =
+ new SharedConnectivitySettingsState.Builder().setInstantTetherEnabled(false)
+ .setExtras(Bundle.EMPTY).build();
+ private TetherNetworkConnectionStatus mTetherNetworkConnectionStatus =
+ new TetherNetworkConnectionStatus.Builder()
+ .setStatus(TetherNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN)
+ .setExtras(Bundle.EMPTY).build();
+ private KnownNetworkConnectionStatus mKnownNetworkConnectionStatus =
+ new KnownNetworkConnectionStatus.Builder()
+ .setStatus(KnownNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN)
+ .setExtras(Bundle.EMPTY).build();
private final class DeathRecipient implements IBinder.DeathRecipient {
ISharedConnectivityCallback mCallback;
@@ -128,6 +137,36 @@ public abstract class SharedConnectivityService extends Service {
mHandler.post(() -> onForgetKnownNetwork(network));
}
+ @Override
+ public List<TetherNetwork> getTetherNetworks() {
+ checkPermissions();
+ return mTetherNetworks;
+ }
+
+ @Override
+ public List<KnownNetwork> getKnownNetworks() {
+ checkPermissions();
+ return mKnownNetworks;
+ }
+
+ @Override
+ public SharedConnectivitySettingsState getSettingsState() {
+ checkPermissions();
+ return mSettingsState;
+ }
+
+ @Override
+ public TetherNetworkConnectionStatus getTetherNetworkConnectionStatus() {
+ checkPermissions();
+ return mTetherNetworkConnectionStatus;
+ }
+
+ @Override
+ public KnownNetworkConnectionStatus getKnownNetworkConnectionStatus() {
+ checkPermissions();
+ return mKnownNetworkConnectionStatus;
+ }
+
@RequiresPermission(anyOf = {android.Manifest.permission.NETWORK_SETTINGS,
android.Manifest.permission.NETWORK_SETUP_WIZARD})
/**
@@ -155,15 +194,6 @@ public abstract class SharedConnectivityService extends Service {
public void onBind() {}
private void onRegisterCallback(ISharedConnectivityCallback callback) {
- // Listener gets triggered on first register using cashed data
- if (!notifyTetherNetworkUpdate(callback) || !notifyKnownNetworkUpdate(callback)
- || !notifySettingsStateUpdate(callback)
- || !notifyTetherNetworkConnectionStatusChanged(callback)
- || !notifyKnownNetworkConnectionStatusChanged(callback)) {
- if (DEBUG) Log.w(TAG, "Failed to notify client");
- return;
- }
-
DeathRecipient deathRecipient = new DeathRecipient(callback);
try {
callback.asBinder().linkToDeath(deathRecipient, 0);