Refactor DefaultAppPicker to a general radio button picker

Bug: 36557316
Test: make RunSettingsRoboTests
Change-Id: I52985e527e55697cf29f8d97d775d4bbed025beb
This commit is contained in:
Fan Zhang
2017-03-23 11:03:29 -07:00
parent b3f13f9f32
commit a278962dbc
37 changed files with 580 additions and 398 deletions

View File

@@ -17,13 +17,17 @@
package com.android.settings.applications.defaultapps;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageItemInfo;
import android.content.pm.PackageManager;
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.applications.PackageManagerWrapper;
import org.junit.Before;
import org.junit.Test;
@@ -32,60 +36,44 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class DefaultAppInfoTest {
@Mock
private ActivityInfo mActivityInfo;
@Mock
private ApplicationInfo mApplicationInfo;
private PackageItemInfo mPackageItemInfo;
@Mock
private ComponentName mComponentName;
@Mock
private PackageManager mPackageManager;
@Mock
private PackageManagerWrapper mPackageManagerWrapper;
private DefaultAppInfo mInfo;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(mPackageManagerWrapper.getPackageManager()).thenReturn(mPackageManager);
}
@Test
public void initInfoWithActivityInfo_shouldLoadInfo() {
mActivityInfo.packageName = "test";
mInfo = new DefaultAppInfo(mActivityInfo);
mInfo.loadLabel(mPackageManager);
mInfo.loadIcon(mPackageManager);
mPackageItemInfo.packageName = "test";
mInfo = new DefaultAppInfo(mPackageManagerWrapper, mPackageItemInfo);
mInfo.loadLabel();
mInfo.loadIcon();
assertThat(mInfo.getKey()).isEqualTo(mActivityInfo.packageName);
verify(mActivityInfo).loadLabel(mPackageManager);
verify(mActivityInfo).loadIcon(mPackageManager);
}
@Test
public void initInfoWithApplicationInfo_shouldLoadInfo() {
mApplicationInfo.packageName = "test";
mInfo = new DefaultAppInfo(mApplicationInfo);
mInfo.loadLabel(mPackageManager);
mInfo.loadIcon(mPackageManager);
assertThat(mInfo.getKey()).isEqualTo(mApplicationInfo.packageName);
verify(mApplicationInfo).loadLabel(mPackageManager);
verify(mApplicationInfo).loadIcon(mPackageManager);
assertThat(mInfo.getKey()).isEqualTo(mPackageItemInfo.packageName);
verify(mPackageItemInfo).loadLabel(mPackageManager);
verify(mPackageItemInfo).loadIcon(mPackageManager);
}
@Test
public void initInfoWithComponent_shouldLoadInfo() {
when(mComponentName.getPackageName()).thenReturn("com.android.settings");
mInfo = new DefaultAppInfo(0 /* uid */, mComponentName);
mInfo = new DefaultAppInfo(mPackageManagerWrapper, 0 /* uid */, mComponentName);
mInfo.getKey();
verify(mComponentName).flattenToString();

View File

@@ -17,11 +17,15 @@
package com.android.settings.applications.defaultapps;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.UserManager;
import android.support.v4.app.FragmentManager;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.SettingsRobolectricTestRunner;
@@ -40,13 +44,6 @@ import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.List;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class DefaultAppPickerFragmentTest {
@@ -57,8 +54,6 @@ public class DefaultAppPickerFragmentTest {
private PreferenceScreen mScreen;
@Mock
private UserManager mUserManager;
@Mock
private FragmentManager mFragmentManager;
private TestFragment mFragment;
@@ -66,9 +61,6 @@ public class DefaultAppPickerFragmentTest {
public void setUp() {
MockitoAnnotations.initMocks(this);
mFragment = spy(new TestFragment());
final Bundle bundle = new Bundle();
bundle.putBoolean(DefaultAppPickerFragment.EXTRA_FOR_WORK, false);
mFragment.setArguments(bundle);
when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
doReturn(mActivity).when(mFragment).getContext();
@@ -76,26 +68,7 @@ public class DefaultAppPickerFragmentTest {
}
@Test
public void onAttach_userIsInitialized() {
mFragment.onAttach((Context) mActivity);
verify(mActivity).getPackageManager();
verify(mActivity).getSystemService(Context.USER_SERVICE);
}
@Test
public void clickPreference_noCofirmation_shouldDirectlyConfirm() {
final RadioButtonPreference pref =
new RadioButtonPreference(RuntimeEnvironment.application);
pref.setKey("TEST");
mFragment.onRadioButtonClicked(pref);
assertThat(mFragment.setDefaultAppKeyCalled).isTrue();
}
@Test
public void clickPreference_hasCofirmation_shouldShowConfirmation() {
public void clickPreference_hasConfirmation_shouldShowConfirmation() {
final RadioButtonPreference pref =
new RadioButtonPreference(RuntimeEnvironment.application);
pref.setKey("TEST");
@@ -106,18 +79,6 @@ public class DefaultAppPickerFragmentTest {
mFragment.onRadioButtonClicked(pref);
}
@Test
public void displaySingleOption_shouldSelectRadioButton() {
final RadioButtonPreference pref =
new RadioButtonPreference(RuntimeEnvironment.application);
when(mScreen.getPreferenceCount()).thenReturn(1);
when(mScreen.getPreference(0)).thenReturn(pref);
mFragment.mayCheckOnlyRadioButton();
assertThat(pref.isChecked()).isTrue();
}
public static class TestFragment extends DefaultAppPickerFragment {
boolean setDefaultAppKeyCalled;
@@ -133,12 +94,12 @@ public class DefaultAppPickerFragmentTest {
}
@Override
protected String getDefaultAppKey() {
protected String getDefaultKey() {
return null;
}
@Override
protected boolean setDefaultAppKey(String key) {
protected boolean setDefaultKey(String key) {
setDefaultAppKeyCalled = true;
return true;
}

View File

@@ -17,6 +17,10 @@
package com.android.settings.applications.defaultapps;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.UserManager;
import android.support.v7.preference.Preference;
@@ -33,10 +37,6 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class DefaultAppPreferenceControllerTest {
@@ -62,7 +62,7 @@ public class DefaultAppPreferenceControllerTest {
public void updateState_hasDefaultApp_shouldUpdateAppName() {
mController = new TestPreferenceController(mContext);
when(mController.mAppInfo.loadLabel(mContext.getPackageManager()))
when(mController.mAppInfo.loadLabel())
.thenReturn(TEST_APP_NAME);
mController.updateState(mPreference);

View File

@@ -16,9 +16,14 @@
package com.android.settings.applications.defaultapps;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.UserManager;
import com.android.settings.SettingsRobolectricTestRunner;
@@ -36,13 +41,6 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -73,14 +71,14 @@ public class DefaultAutofillPickerTest {
@Test
public void setAndGetDefaultAppKey_shouldUpdateDefaultAutoFill() {
assertThat(mPicker.setDefaultAppKey(TEST_APP_KEY)).isTrue();
assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
assertThat(mPicker.setDefaultKey(TEST_APP_KEY)).isTrue();
assertThat(mPicker.getDefaultKey()).isEqualTo(TEST_APP_KEY);
}
@Test
public void getConfirmationMessage_shouldNotBeNull() {
final DefaultAppInfo info = mock(DefaultAppInfo.class);
when(info.loadLabel(any(PackageManager.class))).thenReturn("test_app_name");
when(info.loadLabel()).thenReturn("test_app_name");
assertThat(mPicker.getConfirmationMessage(info)).isNotNull();
}

View File

@@ -67,14 +67,14 @@ public class DefaultBrowserPickerTest {
@Test
public void setDefaultAppKey_shouldUpdateDefaultBrowser() {
mPicker.setDefaultAppKey(TEST_APP_KEY);
mPicker.setDefaultKey(TEST_APP_KEY);
verify(mPackageManager)
.setDefaultBrowserPackageNameAsUser(eq(TEST_APP_KEY), anyInt());
}
@Test
public void getDefaultAppKey_shouldReturnDefaultBrowser() {
mPicker.getDefaultAppKey();
mPicker.getDefaultKey();
verify(mPackageManager)
.getDefaultBrowserPackageNameAsUser(anyInt());
}

View File

@@ -70,8 +70,8 @@ public class DefaultEmergencyPickerTest {
@Test
public void setDefaultAppKey_shouldUpdateDefault() {
assertThat(mPicker.setDefaultAppKey(TEST_APP_KEY)).isTrue();
assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
assertThat(mPicker.setDefaultKey(TEST_APP_KEY)).isTrue();
assertThat(mPicker.getDefaultKey()).isEqualTo(TEST_APP_KEY);
}
@Test
@@ -80,6 +80,6 @@ public class DefaultEmergencyPickerTest {
Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION,
TEST_APP_KEY);
assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
assertThat(mPicker.getDefaultKey()).isEqualTo(TEST_APP_KEY);
}
}

View File

@@ -72,7 +72,7 @@ public class DefaultHomePickerTest {
@Test
public void setDefaultAppKey_shouldUpdateDefault() {
assertThat(mPicker.setDefaultAppKey(TEST_APP_KEY)).isTrue();
assertThat(mPicker.setDefaultKey(TEST_APP_KEY)).isTrue();
verify(mPackageManager).replacePreferredActivity(any(IntentFilter.class),
anyInt(), any(ComponentName[].class), any(ComponentName.class));
@@ -83,7 +83,7 @@ public class DefaultHomePickerTest {
final ComponentName cn = mock(ComponentName.class);
when(mPackageManager.getHomeActivities(anyList()))
.thenReturn(cn);
mPicker.getDefaultAppKey();
mPicker.getDefaultKey();
verify(cn).flattenToString();
}

View File

@@ -70,9 +70,9 @@ public class DefaultNotificationAssistantPickerTest {
@Test
public void setDefaultAppKey_shouldUpdateDefault() {
mPicker.setDefaultAppKey(TEST_APP_KEY);
mPicker.setDefaultKey(TEST_APP_KEY);
assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
assertThat(mPicker.getDefaultKey()).isEqualTo(TEST_APP_KEY);
}
@Test
@@ -81,6 +81,6 @@ public class DefaultNotificationAssistantPickerTest {
Settings.Secure.ENABLED_NOTIFICATION_ASSISTANT,
TEST_APP_KEY);
assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
assertThat(mPicker.getDefaultKey()).isEqualTo(TEST_APP_KEY);
}
}

View File

@@ -75,14 +75,14 @@ public class DefaultPhonePickerTest {
@Test
public void getSystemDefaultPackage_shouldAskDefaultKeyUpdater() {
mPicker.getSystemDefaultAppKey();
mPicker.getSystemDefaultKey();
verify(mDefaultKeyUpdater).getSystemDialerPackage();
}
@Test
public void setDefaultAppKey_shouldUpdateDefault() {
mPicker.setDefaultAppKey(TEST_APP_KEY);
mPicker.setDefaultKey(TEST_APP_KEY);
verify(mDefaultKeyUpdater).setDefaultDialerApplication(
any(Context.class), eq(TEST_APP_KEY), anyInt());
@@ -90,7 +90,7 @@ public class DefaultPhonePickerTest {
@Test
public void getDefaultAppKey_shouldReturnDefault() {
mPicker.getDefaultAppKey();
mPicker.getDefaultKey();
verify(mDefaultKeyUpdater).getDefaultDialerApplication(any(Context.class), anyInt());
}
}

View File

@@ -73,14 +73,14 @@ public class DefaultSmsPickerTest {
@Test
public void setDefaultAppKey_shouldUpdateDefault() {
mPicker.setDefaultAppKey(TEST_APP_KEY);
mPicker.setDefaultKey(TEST_APP_KEY);
verify(mDefaultKeyUpdater).setDefaultApplication(any(Context.class), eq(TEST_APP_KEY));
}
@Test
public void getDefaultAppKey_shouldReturnDefault() {
mPicker.getDefaultAppKey();
mPicker.getDefaultKey();
verify(mDefaultKeyUpdater).getDefaultApplication(any(Context.class));
}