summaryrefslogtreecommitdiff
path: root/wifi/java
diff options
context:
space:
mode:
author Isaac Katzenelson <isaackatz@google.com> 2023-02-24 00:27:36 +0000
committer Isaac Katzenelson <isaackatz@google.com> 2023-02-24 17:47:59 +0000
commitbb165f6576671eb69d40c66a2fd0b7694e45dce7 (patch)
tree30676b262121e5601c63a07e256bbf1a63fb7b2f /wifi/java
parent8128beb12a6dea98700321a716d7e64105df6536 (diff)
Add getters to SharedConnectivityService
Set default values for the getters' data. Bug: 270583470, 270487088 Test: atest SharedConnectivityServiceTest Change-Id: Iae62abbc87258c9d596d2458f96c7a38bcd602c8
Diffstat (limited to 'wifi/java')
-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 9593c8ae77a8..e765e963f838 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
@@ -180,9 +180,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();
}
}
@@ -406,4 +406,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 f3af06247576..07d9da29316f 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
@@ -32,6 +32,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;
@@ -67,9 +68,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;
@@ -127,6 +136,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})
private void checkPermissions() {
@@ -141,15 +180,6 @@ public abstract class SharedConnectivityService extends Service {
}
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);