summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrew Sapperstein <asapperstein@google.com> 2023-03-09 02:42:46 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-03-09 02:42:46 +0000
commiteac07ee4927745585d2b4e15da1332ebb4738016 (patch)
tree967eb41de474bc7a868d6fe9e6949b840ccb8772
parent076471de48ff5bfdecd61972d4863fbf8e587d09 (diff)
parent6d035f93e2f2778158f91093930cd1e2f5b91aaf (diff)
Merge "Added methods to check shared connectivity features availablility." into udc-dev
-rw-r--r--core/api/system-current.txt2
-rw-r--r--core/res/res/values/config.xml12
-rw-r--r--core/res/res/values/symbols.xml6
-rw-r--r--wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java4
-rw-r--r--wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java28
-rw-r--r--wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java47
6 files changed, 93 insertions, 6 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index fb5ee8d94524..995602f27d2b 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -10158,6 +10158,8 @@ package android.net.wifi.sharedconnectivity.service {
public abstract class SharedConnectivityService extends android.app.Service {
ctor public SharedConnectivityService();
+ method public static boolean areHotspotNetworksEnabledForService(@NonNull android.content.Context);
+ method public static boolean areKnownNetworksEnabledForService(@NonNull android.content.Context);
method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
method public abstract void onConnectHotspotNetwork(@NonNull android.net.wifi.sharedconnectivity.app.HotspotNetwork);
method public abstract void onConnectKnownNetwork(@NonNull android.net.wifi.sharedconnectivity.app.KnownNetwork);
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 16511a678760..27c477f3f241 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3020,10 +3020,18 @@
>com.android.systemui/com.android.systemui.wifi.WifiDebuggingSecondaryUserActivity</string>
<!-- Package name of the system service that implements the shared connectivity service -->
- <string translatable="false" name="shared_connectivity_service_package"></string>
+ <string translatable="false" name="config_sharedConnectivityServicePackage"></string>
<!-- Intent action used when binding to the shared connectivity service -->
- <string translatable="false" name="shared_connectivity_service_intent_action"></string>
+ <string translatable="false" name="config_sharedConnectivityServiceIntentAction"></string>
+
+ <!-- The system and settings UI can support all the features of instant tether. If set to false,
+ instant tether will run in notifications mode -->
+ <bool name="config_hotspotNetworksEnabledForService">false</bool>
+
+ <!-- The system and settings UI can support all the features of known networks. If set to false,
+ known networks will run in notifications mode -->
+ <bool name="config_knownNetworksEnabledForService">false</bool>
<!-- Component name of the activity that shows the usb containment status. -->
<string name="config_usbContaminantActivity" translatable="false"
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index c34d31cca7ba..a15833d36870 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -4960,8 +4960,10 @@
<java-symbol type="bool" name="config_stopSystemPackagesByDefault"/>
<java-symbol type="string" name="config_wearServiceComponent" />
- <java-symbol type="string" name="shared_connectivity_service_package" />
- <java-symbol type="string" name="shared_connectivity_service_intent_action" />
+ <java-symbol type="string" name="config_sharedConnectivityServicePackage" />
+ <java-symbol type="string" name="config_sharedConnectivityServiceIntentAction" />
+ <java-symbol type="bool" name="config_hotspotNetworksEnabledForService"/>
+ <java-symbol type="bool" name="config_knownNetworksEnabledForService"/>
<!-- Whether to show weather on the lockscreen by default. -->
<java-symbol type="bool" name="config_lockscreenWeatherEnabledByDefault" />
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 604641520252..15fd817ba73b 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
@@ -161,9 +161,9 @@ public class SharedConnectivityManager {
Resources resources = context.getResources();
try {
String servicePackageName = resources.getString(
- R.string.shared_connectivity_service_package);
+ R.string.config_sharedConnectivityServicePackage);
String serviceIntentAction = resources.getString(
- R.string.shared_connectivity_service_intent_action);
+ R.string.config_sharedConnectivityServiceIntentAction);
return new SharedConnectivityManager(context, servicePackageName, serviceIntentAction);
} catch (Resources.NotFoundException e) {
Log.e(TAG, "To support shared connectivity service on this device, the service's"
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 c53da9c15d4d..57108e4aa227 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
@@ -25,6 +25,7 @@ import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.app.Service;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.wifi.sharedconnectivity.app.HotspotNetwork;
@@ -40,8 +41,11 @@ import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.util.Log;
+import com.android.internal.R;
+
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
/**
@@ -382,6 +386,30 @@ public abstract class SharedConnectivityService extends Service {
}
/**
+ * System and settings UI support on the device for instant tether.
+ * @return True if the UI can display Instant Tether network data. False otherwise.
+ */
+ public static boolean areHotspotNetworksEnabledForService(@NonNull Context context) {
+ String servicePackage = context.getResources()
+ .getString(R.string.config_sharedConnectivityServicePackage);
+ return Objects.equals(context.getPackageName(), servicePackage)
+ && context.getResources()
+ .getBoolean(R.bool.config_hotspotNetworksEnabledForService);
+ }
+
+ /**
+ * System and settings UI support on the device for known networks.
+ * @return True if the UI can display known networks data. False otherwise.
+ */
+ public static boolean areKnownNetworksEnabledForService(@NonNull Context context) {
+ String servicePackage = context.getResources()
+ .getString(R.string.config_sharedConnectivityServicePackage);
+ return Objects.equals(context.getPackageName(), servicePackage)
+ && context.getResources()
+ .getBoolean(R.bool.config_knownNetworksEnabledForService);
+ }
+
+ /**
* Implementing application should implement this method.
*
* Implementation should initiate a connection to the Hotspot Network indicated.
diff --git a/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java b/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java
index 19effe5d6f14..b8b6b767eed3 100644
--- a/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java
+++ b/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java
@@ -26,10 +26,12 @@ import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.Intent;
+import android.content.res.Resources;
import android.net.wifi.sharedconnectivity.app.HotspotNetwork;
import android.net.wifi.sharedconnectivity.app.HotspotNetworkConnectionStatus;
import android.net.wifi.sharedconnectivity.app.KnownNetwork;
@@ -86,6 +88,9 @@ public class SharedConnectivityServiceTest {
@Mock
Context mContext;
+ @Mock
+ Resources mResources;
+
static class FakeSharedConnectivityService extends SharedConnectivityService {
public void attachBaseContext(Context context) {
super.attachBaseContext(context);
@@ -180,6 +185,48 @@ public class SharedConnectivityServiceTest {
.isEqualTo(KNOWN_NETWORK_CONNECTION_STATUS);
}
+ @Test
+ public void areHotspotNetworksEnabledForService() {
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mContext.getPackageName()).thenReturn("package");
+ when(mResources.getString(anyInt())).thenReturn("package");
+ when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+ assertThat(SharedConnectivityService.areHotspotNetworksEnabledForService(mContext))
+ .isTrue();
+ }
+
+ @Test
+ public void areHotspotNetworksEnabledForService_notSamePackage_shouldReturnFalse() {
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mContext.getPackageName()).thenReturn("package");
+ when(mResources.getString(anyInt())).thenReturn("other_package");
+ when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+ assertThat(SharedConnectivityService.areHotspotNetworksEnabledForService(mContext))
+ .isFalse();
+ }
+
+ @Test
+ public void areKnownNetworksEnabledForService() {
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mContext.getPackageName()).thenReturn("package");
+ when(mResources.getString(anyInt())).thenReturn("package");
+ when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+ assertThat(SharedConnectivityService.areKnownNetworksEnabledForService(mContext)).isTrue();
+ }
+
+ @Test
+ public void areKnownNetworksEnabledForService_notSamePackage_shouldReturnFalse() {
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mContext.getPackageName()).thenReturn("package");
+ when(mResources.getString(anyInt())).thenReturn("other_package");
+ when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+ assertThat(SharedConnectivityService.areKnownNetworksEnabledForService(mContext)).isFalse();
+ }
+
private SharedConnectivityService createService() {
FakeSharedConnectivityService service = new FakeSharedConnectivityService();
service.attachBaseContext(mContext);