Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7670f6d authored by Jeremy Joslin's avatar Jeremy Joslin
Browse files

Move getActiveScorerPackage() to the score service.

Implemented getActiveScorerPackage() in the NetworkScoreService to
make it more efficient (no need to query PM).

Test: runtest frameworks-services -c com.android.server.NetworkScoreServiceTest
Bug: 33781558
Change-Id: Iee7610e4982b44aefa1ef8b6c208292b8f9adcf8
Merged-In: I2144351c2c09cad30f80399069364f3572e38445
parent 9b442faa
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -109,4 +109,12 @@ interface INetworkScoreService
     * @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();
}
+4 −4
Original line number Diff line number Diff line
@@ -170,11 +170,11 @@ public class NetworkScoreManager {
     *         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;
    }

    /**
+16 −0
Original line number Diff line number Diff line
@@ -432,6 +432,22 @@ public class NetworkScoreService extends INetworkScoreService.Stub {
        }
    }

    /**
     * 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.
+16 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static android.net.NetworkScoreManager.CACHE_FILTER_NONE;
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 @@ public class NetworkScoreServiceTest {
        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,