diff options
| author | 2023-02-24 00:27:36 +0000 | |
|---|---|---|
| committer | 2023-02-24 17:47:59 +0000 | |
| commit | bb165f6576671eb69d40c66a2fd0b7694e45dce7 (patch) | |
| tree | 30676b262121e5601c63a07e256bbf1a63fb7b2f /wifi/java | |
| parent | 8128beb12a6dea98700321a716d7e64105df6536 (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')
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); |