Merge "Move getActiveScorerPackage() to the score service."
am: b5488ec3b3
Change-Id: I8819c482a87a8c78ad0a1a39dda74b5ee2e7da4c
diff --git a/core/java/android/net/INetworkScoreService.aidl b/core/java/android/net/INetworkScoreService.aidl
index b097f12..9573953 100644
--- a/core/java/android/net/INetworkScoreService.aidl
+++ b/core/java/android/net/INetworkScoreService.aidl
@@ -109,4 +109,12 @@
* @hide
*/
boolean isCallerActiveScorer(int callingUid);
+
+ /**
+ * Obtain the package name of the current active network scorer.
+ *
+ * @return the full package name of the current active scorer, or null if there is no active
+ * scorer.
+ */
+ String getActiveScorerPackage();
}
diff --git a/core/java/android/net/NetworkScoreManager.java b/core/java/android/net/NetworkScoreManager.java
index af0306e..a6854dc 100644
--- a/core/java/android/net/NetworkScoreManager.java
+++ b/core/java/android/net/NetworkScoreManager.java
@@ -170,11 +170,11 @@
* scorer.
*/
public String getActiveScorerPackage() {
- NetworkScorerAppData app = new NetworkScorerAppManager(mContext).getActiveScorer();
- if (app == null) {
- return null;
+ try {
+ return mService.getActiveScorerPackage();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
- return app.packageName;
}
/**
diff --git a/services/core/java/com/android/server/NetworkScoreService.java b/services/core/java/com/android/server/NetworkScoreService.java
index 2f05d0f4..e23844c 100644
--- a/services/core/java/com/android/server/NetworkScoreService.java
+++ b/services/core/java/com/android/server/NetworkScoreService.java
@@ -432,6 +432,22 @@
}
}
+ /**
+ * Obtain the package name of the current active network scorer.
+ *
+ * @return the full package name of the current active scorer, or null if there is no active
+ * scorer.
+ */
+ @Override
+ public String getActiveScorerPackage() {
+ synchronized (mServiceConnectionLock) {
+ if (mServiceConnection != null) {
+ return mServiceConnection.mComponentName.getPackageName();
+ }
+ }
+ return null;
+ }
+
@Override
public void disableScoring() {
// Only the active scorer or the system should be allowed to disable scoring.
diff --git a/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java
index 9bb7bd1..1189dae 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java
@@ -23,6 +23,7 @@
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
import static junit.framework.Assert.assertTrue;
import static junit.framework.Assert.fail;
@@ -470,6 +471,21 @@
assertTrue(mNetworkScoreService.isCallerActiveScorer(Binder.getCallingUid()));
}
+ @Test
+ public void testGetActiveScorerPackage_notActive() throws Exception {
+ mNetworkScoreService.systemRunning();
+
+ assertNull(mNetworkScoreService.getActiveScorerPackage());
+ }
+
+ @Test
+ public void testGetActiveScorerPackage_active() throws Exception {
+ when(mNetworkScorerAppManager.getActiveScorer()).thenReturn(NEW_SCORER);
+ mNetworkScoreService.systemRunning();
+
+ assertEquals(NEW_SCORER.packageName, mNetworkScoreService.getActiveScorerPackage());
+ }
+
// "injects" the mock INetworkRecommendationProvider into the NetworkScoreService.
private void injectProvider() {
final ComponentName componentName = new ComponentName(NEW_SCORER.packageName,