Add a network scorer label metadata field to NetworkScoreAppData

This field allows Network Score Services to pass an alternate label for
the scorer.

Bug: 35848510
Test: runtest --path
frameworks/base/services/tests/servicestests/src/com/android/server/NetworkScorerAppManagerTest.java
runtest --path
frameworks/base/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java

Change-Id: Ic28671c1663bd08b2406045d20c150a209d56054
diff --git a/services/tests/servicestests/src/com/android/server/NetworkScorerAppManagerTest.java b/services/tests/servicestests/src/com/android/server/NetworkScorerAppManagerTest.java
index e9a2d34..502bf06 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkScorerAppManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkScorerAppManagerTest.java
@@ -59,6 +59,9 @@
 
 @RunWith(AndroidJUnit4.class)
 public class NetworkScorerAppManagerTest {
+    private static String MOCK_SERVICE_LABEL = "Mock Service";
+    private static String MOCK_OVERRIDEN_SERVICE_LABEL = "Mock Service Label Override";
+
     @Mock private Context mMockContext;
     @Mock private PackageManager mMockPm;
     @Mock private Resources mResources;
@@ -94,6 +97,22 @@
         assertNotNull(activeScorer);
         assertEquals(recoComponent, activeScorer.getRecommendationServiceComponent());
         assertEquals(924, activeScorer.packageUid);
+        assertEquals(MOCK_SERVICE_LABEL, activeScorer.getRecommendationServiceLabel());
+    }
+
+    @Test
+    public void testGetActiveScorer_providerAvailable_serviceLabelOverride() throws Exception {
+        final ComponentName recoComponent = new ComponentName("package1", "class1");
+        setNetworkRecoPackageSetting(recoComponent.getPackageName());
+        mockScoreNetworksGranted(recoComponent.getPackageName());
+        mockRecommendationServiceAvailable(recoComponent, 924 /* packageUid */,
+                null /* enableUseOpenWifiPackageActivityPackage*/, true /* serviceLabelOverride */);
+
+        final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
+        assertNotNull(activeScorer);
+        assertEquals(recoComponent, activeScorer.getRecommendationServiceComponent());
+        assertEquals(924, activeScorer.packageUid);
+        assertEquals(MOCK_OVERRIDEN_SERVICE_LABEL, activeScorer.getRecommendationServiceLabel());
     }
 
     @Test
@@ -269,11 +288,17 @@
     }
 
     private void mockRecommendationServiceAvailable(final ComponentName compName, int packageUid) {
-        mockRecommendationServiceAvailable(compName, packageUid, null);
+        mockRecommendationServiceAvailable(compName, packageUid, null, false);
     }
 
     private void mockRecommendationServiceAvailable(final ComponentName compName, int packageUid,
             String enableUseOpenWifiActivityPackage) {
+        mockRecommendationServiceAvailable(
+                compName, packageUid, enableUseOpenWifiActivityPackage, false);
+    }
+
+    private void mockRecommendationServiceAvailable(final ComponentName compName, int packageUid,
+            String enableUseOpenWifiActivityPackage, boolean serviceLabelOverride) {
         final ResolveInfo serviceInfo = new ResolveInfo();
         serviceInfo.serviceInfo = new ServiceInfo();
         serviceInfo.serviceInfo.name = compName.getClassName();
@@ -286,6 +311,16 @@
                     NetworkScoreManager.USE_OPEN_WIFI_PACKAGE_META_DATA,
                     enableUseOpenWifiActivityPackage);
         }
+        if (serviceLabelOverride) {
+            if (serviceInfo.serviceInfo.metaData == null) {
+                serviceInfo.serviceInfo.metaData = new Bundle();
+            }
+            serviceInfo.serviceInfo.metaData.putString(
+                    NetworkScoreManager.RECOMMENDATION_SERVICE_LABEL_META_DATA,
+                    MOCK_OVERRIDEN_SERVICE_LABEL);
+        } else {
+            serviceInfo.serviceInfo.nonLocalizedLabel = MOCK_SERVICE_LABEL;
+        }
 
         final int flags = PackageManager.GET_META_DATA;
         when(mMockPm.resolveService(