Add FutureTask approach in DashboardFragment
- Use the multiple tasks to enhance the controllers loading. Bug: 137558156 Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.dashboard Change-Id: I629ff5dc81347cddf9762a87015b9b86b6a46e50
This commit is contained in:
@@ -37,6 +37,7 @@ import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.ProviderInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
@@ -45,6 +46,7 @@ import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.slices.BlockingSlicePrefController;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
@@ -333,7 +335,38 @@ public class DashboardFragmentTest {
|
||||
assertThat(pref).isInstanceOf(MasterSwitchPreference.class);
|
||||
}
|
||||
|
||||
private static class TestPreferenceController extends AbstractPreferenceController
|
||||
@Test
|
||||
public void isFeatureFlagAndIsParalleled_runParalleledUpdatePreferenceStates() {
|
||||
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONTROLLER_ENHANCEMENT, true);
|
||||
final TestFragment testFragment = spy(new TestFragment(RuntimeEnvironment.application));
|
||||
|
||||
testFragment.updatePreferenceStates();
|
||||
|
||||
verify(testFragment).updatePreferenceStatesInParallel();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void notFeatureFlagAndIsParalleled_notRunParalleledUpdatePreferenceStates() {
|
||||
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONTROLLER_ENHANCEMENT, false);
|
||||
final TestFragment testFragment = spy(new TestFragment(RuntimeEnvironment.application));
|
||||
|
||||
testFragment.updatePreferenceStates();
|
||||
|
||||
verify(testFragment, never()).updatePreferenceStatesInParallel();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isFeatureFlagAndNotParalleled_notRunParalleledUpdatePreferenceStates() {
|
||||
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONTROLLER_ENHANCEMENT, true);
|
||||
final TestFragment testFragment = spy(new TestFragment(RuntimeEnvironment.application));
|
||||
testFragment.setUsingControllerEnhancement(false);
|
||||
|
||||
testFragment.updatePreferenceStates();
|
||||
|
||||
verify(testFragment, never()).updatePreferenceStatesInParallel();
|
||||
}
|
||||
|
||||
public static class TestPreferenceController extends AbstractPreferenceController
|
||||
implements PreferenceControllerMixin {
|
||||
|
||||
private TestPreferenceController(Context context) {
|
||||
@@ -362,19 +395,21 @@ public class DashboardFragmentTest {
|
||||
|
||||
private static class TestFragment extends DashboardFragment {
|
||||
|
||||
public final PreferenceScreen mScreen;
|
||||
|
||||
private final PreferenceManager mPreferenceManager;
|
||||
private final Context mContext;
|
||||
private final List<AbstractPreferenceController> mControllers;
|
||||
private final ContentResolver mContentResolver;
|
||||
|
||||
public final PreferenceScreen mScreen;
|
||||
private boolean mIsParalleled;
|
||||
|
||||
public TestFragment(Context context) {
|
||||
mContext = context;
|
||||
mPreferenceManager = mock(PreferenceManager.class);
|
||||
mScreen = mock(PreferenceScreen.class);
|
||||
mContentResolver = mock(ContentResolver.class);
|
||||
mControllers = new ArrayList<>();
|
||||
mIsParalleled = true;
|
||||
|
||||
when(mPreferenceManager.getContext()).thenReturn(mContext);
|
||||
ReflectionHelpers.setField(
|
||||
@@ -420,6 +455,14 @@ public class DashboardFragmentTest {
|
||||
protected ContentResolver getContentResolver() {
|
||||
return mContentResolver;
|
||||
}
|
||||
|
||||
protected boolean isParalleledControllers() {
|
||||
return mIsParalleled;
|
||||
}
|
||||
|
||||
public void setUsingControllerEnhancement(boolean isParalleled) {
|
||||
mIsParalleled = isParalleled;
|
||||
}
|
||||
}
|
||||
|
||||
private static class TestDynamicDataObserver extends DynamicDataObserver {
|
||||
|
Reference in New Issue
Block a user