[Safer intents] Permission controller

To avoid implicit intents, make intents launch explicitly.

Test: build, manual
Bug: 323061508
Change-Id: Ib95b417fc8682f690890fc55f321b4fece2c0369
This commit is contained in:
Jason Chiu
2024-03-27 12:25:32 +08:00
parent 67bfb4141f
commit cf13dfd4c6
22 changed files with 182 additions and 49 deletions

View File

@@ -20,13 +20,16 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
@@ -52,7 +55,6 @@ public class TopLevelSafetyCenterEntryPreferenceControllerTest {
@Mock
private SafetyCenterManagerWrapper mSafetyCenterManagerWrapper;
@Mock
private Context mContext;
@Before
@@ -60,7 +62,12 @@ public class TopLevelSafetyCenterEntryPreferenceControllerTest {
MockitoAnnotations.initMocks(this);
SafetyCenterManagerWrapper.sInstance = mSafetyCenterManagerWrapper;
mPreference = new Preference(ApplicationProvider.getApplicationContext());
mContext = spy(ApplicationProvider.getApplicationContext());
PackageManager pm = spy(mContext.getPackageManager());
doReturn(pm).when(mContext).getPackageManager();
doReturn("com.android.permissioncontroller").when(pm).getPermissionControllerPackageName();
mPreference = new Preference(mContext);
mPreference.setKey(PREFERENCE_KEY);
doNothing().when(mContext).startActivity(any(Intent.class));
@@ -75,7 +82,7 @@ public class TopLevelSafetyCenterEntryPreferenceControllerTest {
@Test
public void handlePreferenceTreeClick_forDifferentPreferenceKey_isNotHandled() {
Preference preference = new Preference(ApplicationProvider.getApplicationContext());
Preference preference = new Preference(mContext);
preference.setKey("some_other_preference");
boolean preferenceHandled =

View File

@@ -20,6 +20,8 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -27,6 +29,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
@@ -80,6 +83,10 @@ public class SecurityDashboardActivityTest {
}
});
doNothing().when(mActivity).startActivity(any(Intent.class));
PackageManager pm = mock(PackageManager.class);
doReturn(pm).when(mActivity).getPackageManager();
doReturn("com.android.permissioncontroller").when(pm).getPermissionControllerPackageName();
}
@Test