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

Commit c154f896 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Force ActivityManager unmocking

Bug: 365800992
Test: com.android.internal.telephony.gsm.GsmSmsDispatcherTest
Test: com.android.internal.telephony.security.CellularNetworkSecuritySafetySourceTest
Test: FrameworksTelephonyTests
Flag: TEST_ONLY
Change-Id: Ibaa95df4199c278e80687de313f71023d7eda909
parent 4d6fd152
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -1050,6 +1050,28 @@ public abstract class TelephonyTest {
        Log.d(TAG, s);
    }

    protected void unmockActivityManager() throws Exception {
        // Normally, these two should suffice. But we're having some flakiness due to restored
        // instances being mocks...
        restoreInstance(Singleton.class, "mInstance", mIActivityManagerSingleton);
        restoreInstance(ActivityManager.class, "IActivityManagerSingleton", null);

        // Copy-paste from android.app.ActivityManager.IActivityManagerSingleton
        Singleton<IActivityManager> amSingleton = new Singleton<IActivityManager>() {
                @Override
                protected IActivityManager create() {
                    final IBinder b = ServiceManager.getService(Context.ACTIVITY_SERVICE);
                    final IActivityManager am = IActivityManager.Stub.asInterface(b);
                    return am;
                }
            };

        // ...so we're setting correct values explicitly, to be sure and not let the flake propagate
        // to other tests.
        replaceInstance(Singleton.class, "mInstance", mIActivityManagerSingleton, null);
        replaceInstance(ActivityManager.class, "IActivityManagerSingleton", null, amSingleton);
    }

    public static class FakeBlockedNumberContentProvider extends MockContentProvider {
        public Set<String> mBlockedNumbers = new HashSet<>();
        public int mNumEmergencyContactNotifications = 0;
+5 −7
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -46,7 +45,6 @@ import android.content.IntentFilter;
import android.content.pm.ServiceInfo;
import android.location.Country;
import android.location.CountryDetector;
import android.net.Uri;
import android.os.Binder;
import android.os.HandlerThread;
import android.os.Message;
@@ -60,7 +58,6 @@ import android.telephony.ServiceState;
import android.telephony.SmsManager;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.util.Singleton;

import androidx.test.filters.FlakyTest;
import androidx.test.filters.MediumTest;
@@ -139,6 +136,11 @@ public class GsmSmsDispatcherTest extends TelephonyTest {
    @Before
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());

        // unmock ActivityManager to be able to register receiver, create real PendingIntent and
        // receive TEST_INTENT
        unmockActivityManager();

        mSmsDispatchersController = mock(SmsDispatchersController.class);
        mGsmInboundSmsHandler = mock(GsmInboundSmsHandler.class);
        mCountryDetector = mock(CountryDetector.class);
@@ -233,10 +235,6 @@ public class GsmSmsDispatcherTest extends TelephonyTest {
    }

    private void registerTestIntentReceiver() throws Exception {
        // unmock ActivityManager to be able to register receiver, create real PendingIntent and
        // receive TEST_INTENT
        restoreInstance(Singleton.class, "mInstance", mIActivityManagerSingleton);
        restoreInstance(ActivityManager.class, "IActivityManagerSingleton", null);
        Context realContext = TestApplication.getAppContext();
        realContext.registerReceiver(mTestReceiver, new IntentFilter(TEST_INTENT),
                Context.RECEIVER_EXPORTED);
+1 −5
Original line number Diff line number Diff line
@@ -31,13 +31,11 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.app.ActivityManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.safetycenter.SafetySourceData;
import android.safetycenter.SafetySourceIssue;
import android.util.Singleton;

import com.android.internal.R;
import com.android.internal.telephony.TelephonyTest;
@@ -61,9 +59,7 @@ public final class CellularNetworkSecuritySafetySourceTest extends TelephonyTest
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());

        // unmock ActivityManager to be able to register receiver, create real PendingIntents.
        restoreInstance(Singleton.class, "mInstance", mIActivityManagerSingleton);
        restoreInstance(ActivityManager.class, "IActivityManagerSingleton", null);
        unmockActivityManager();

        SubscriptionInfoInternal info0 = new SubscriptionInfoInternal.Builder()
                .setId(0)