From 6af43b14125fabbbf0b25db836a4edbe1ca09612 Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Fri, 4 Mar 2022 17:52:36 +0800 Subject: [PATCH] Remove no reference code - Remove ControllerTask and ControllerFutureTask. - Remove ControllerTaskTest and ControllerFutureTaskTest. Fixes: 222661474 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.dashboard Change-Id: I36f4e723c40aa59ecb3b087cab11f2a744540812 --- .../dashboard/ControllerFutureTask.java | 36 ----- .../settings/dashboard/ControllerTask.java | 90 ------------- .../settings/dashboard/DashboardFragment.java | 42 +----- .../dashboard/ControllerFutureTaskTest.java | 71 ---------- .../dashboard/ControllerTaskTest.java | 124 ------------------ .../dashboard/DashboardFragmentTest.java | 9 -- 6 files changed, 1 insertion(+), 371 deletions(-) delete mode 100644 src/com/android/settings/dashboard/ControllerFutureTask.java delete mode 100644 src/com/android/settings/dashboard/ControllerTask.java delete mode 100644 tests/robotests/src/com/android/settings/dashboard/ControllerFutureTaskTest.java delete mode 100644 tests/robotests/src/com/android/settings/dashboard/ControllerTaskTest.java diff --git a/src/com/android/settings/dashboard/ControllerFutureTask.java b/src/com/android/settings/dashboard/ControllerFutureTask.java deleted file mode 100644 index 84d11fde16b..00000000000 --- a/src/com/android/settings/dashboard/ControllerFutureTask.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.settings.dashboard; - -import com.android.settingslib.core.AbstractPreferenceController; - -import java.util.concurrent.FutureTask; - -/** - * {@link FutureTask} of the Controller. - */ -public class ControllerFutureTask extends FutureTask { - private final AbstractPreferenceController mController; - - public ControllerFutureTask(ControllerTask task, Void result) { - super(task, result); - mController = task.getController(); - } - - AbstractPreferenceController getController() { - return mController; - } -} diff --git a/src/com/android/settings/dashboard/ControllerTask.java b/src/com/android/settings/dashboard/ControllerTask.java deleted file mode 100644 index c62e738e8dc..00000000000 --- a/src/com/android/settings/dashboard/ControllerTask.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.dashboard; - -import android.app.settings.SettingsEnums; -import android.os.SystemClock; -import android.text.TextUtils; -import android.util.Log; - -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; - -import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; -import com.android.settingslib.utils.ThreadUtils; - -/** - * A {@link Runnable} controller task. This task handle the visibility of the controller in the - * background. Also handle the state updating in the main thread. - */ -public class ControllerTask implements Runnable { - private static final String TAG = "ControllerTask"; - private static final int CONTROLLER_UPDATESTATE_TIME_THRESHOLD = 50; - - private final AbstractPreferenceController mController; - private final PreferenceScreen mScreen; - private final int mMetricsCategory; - private final MetricsFeatureProvider mMetricsFeature; - - public ControllerTask(AbstractPreferenceController controller, PreferenceScreen screen, - MetricsFeatureProvider metricsFeature, int metricsCategory) { - mController = controller; - mScreen = screen; - mMetricsFeature = metricsFeature; - mMetricsCategory = metricsCategory; - } - - @Override - public void run() { - if (!mController.isAvailable()) { - return; - } - - final String key = mController.getPreferenceKey(); - if (TextUtils.isEmpty(key)) { - Log.d(TAG, String.format("Preference key is %s in Controller %s", - key, mController.getClass().getSimpleName())); - return; - } - - final Preference preference = mScreen.findPreference(key); - if (preference == null) { - Log.d(TAG, String.format("Cannot find preference with key %s in Controller %s", - key, mController.getClass().getSimpleName())); - return; - } - ThreadUtils.postOnMainThread(() -> { - final long t = SystemClock.elapsedRealtime(); - mController.updateState(preference); - final int elapsedTime = (int) (SystemClock.elapsedRealtime() - t); - if (elapsedTime > CONTROLLER_UPDATESTATE_TIME_THRESHOLD) { - Log.w(TAG, "The updateState took " + elapsedTime + " ms in Controller " - + mController.getClass().getSimpleName()); - if (mMetricsFeature != null) { - mMetricsFeature.action(SettingsEnums.PAGE_UNKNOWN, - SettingsEnums.ACTION_CONTROLLER_UPDATE_STATE, mMetricsCategory, - mController.getClass().getSimpleName(), elapsedTime); - } - } - }); - } - - AbstractPreferenceController getController() { - return mController; - } -} diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index 8b1d633f322..26fe1b1381d 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -48,7 +48,6 @@ import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.ProviderTile; import com.android.settingslib.drawer.Tile; import com.android.settingslib.search.Indexable; -import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.Arrays; @@ -58,7 +57,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; -import java.util.concurrent.ExecutionException; /** * Base fragment for dashboard style UI containing a list of static and dynamic setting items. @@ -222,7 +220,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment super.onResume(); updatePreferenceStates(); writeElapsedTimeMetric(SettingsEnums.ACTION_DASHBOARD_VISIBLE_TIME, - "isParalleledControllers:" + isParalleledControllers()); + "isParalleledControllers:false"); } @Override @@ -348,14 +346,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment controller -> controller.displayPreference(screen)); } - /** - * @return {@code true} if the underlying controllers should be executed in parallel. - * Override this function to enable/disable the behavior. - */ - protected boolean isParalleledControllers() { - return false; - } - /** * Get current PreferenceController(s) */ @@ -394,36 +384,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } } - /** - * Use parallel method to update state of each preference managed by PreferenceController. - */ - @VisibleForTesting - // To use this parallel approach will cause the side effect of the UI flicker. Such as - // the thumb sliding of the toggle button. - void updatePreferenceStatesInParallel() { - final PreferenceScreen screen = getPreferenceScreen(); - final Collection> controllerLists = - mPreferenceControllers.values(); - final List taskList = new ArrayList<>(); - for (List controllerList : controllerLists) { - for (AbstractPreferenceController controller : controllerList) { - final ControllerFutureTask task = new ControllerFutureTask( - new ControllerTask(controller, screen, mMetricsFeatureProvider, - getMetricsCategory()), null /* result */); - taskList.add(task); - ThreadUtils.postOnBackgroundThread(task); - } - } - - for (ControllerFutureTask task : taskList) { - try { - task.get(); - } catch (InterruptedException | ExecutionException e) { - Log.w(TAG, task.getController().getPreferenceKey() + " " + e.getMessage()); - } - } - } - /** * Refresh all preference items, including both static prefs from xml, and dynamic items from * DashboardCategory. diff --git a/tests/robotests/src/com/android/settings/dashboard/ControllerFutureTaskTest.java b/tests/robotests/src/com/android/settings/dashboard/ControllerFutureTaskTest.java deleted file mode 100644 index c66f2b557a8..00000000000 --- a/tests/robotests/src/com/android/settings/dashboard/ControllerFutureTaskTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.settings.dashboard; - -import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; - -import static com.google.common.truth.Truth.assertThat; - -import android.content.Context; - -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceScreen; - -import com.android.settings.core.BasePreferenceController; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -@RunWith(RobolectricTestRunner.class) -public class ControllerFutureTaskTest { - private static final String KEY = "my_key"; - - private Context mContext; - private TestPreferenceController mTestController; - private PreferenceScreen mScreen; - - @Before - public void setUp() { - mContext = RuntimeEnvironment.application; - mTestController = new TestPreferenceController(mContext, KEY); - final PreferenceManager preferenceManager = new PreferenceManager(mContext); - mScreen = preferenceManager.createPreferenceScreen(mContext); - } - - @Test - public void getController_addTask_checkControllerKey() { - final ControllerFutureTask futureTask = new ControllerFutureTask( - new ControllerTask(mTestController, mScreen, null /* metricsFeature */, - METRICS_CATEGORY_UNKNOWN), null /* result */); - - assertThat(futureTask.getController().getPreferenceKey()).isEqualTo(KEY); - } - - - static class TestPreferenceController extends BasePreferenceController { - TestPreferenceController(Context context, String preferenceKey) { - super(context, preferenceKey); - } - - @Override - public int getAvailabilityStatus() { - return AVAILABLE; - } - } -} diff --git a/tests/robotests/src/com/android/settings/dashboard/ControllerTaskTest.java b/tests/robotests/src/com/android/settings/dashboard/ControllerTaskTest.java deleted file mode 100644 index 17ab79cb04d..00000000000 --- a/tests/robotests/src/com/android/settings/dashboard/ControllerTaskTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.settings.dashboard; - -import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; - -import android.content.Context; - -import androidx.preference.Preference; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceScreen; - -import com.android.settingslib.core.AbstractPreferenceController; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -@RunWith(RobolectricTestRunner.class) -public class ControllerTaskTest { - private static final String KEY = "my_key"; - - private Context mContext; - private PreferenceScreen mScreen; - private TestPreferenceController mTestController; - private ControllerTask mControllerTask; - - @Before - public void setUp() { - mContext = RuntimeEnvironment.application; - final PreferenceManager preferenceManager = new PreferenceManager(mContext); - mScreen = preferenceManager.createPreferenceScreen(mContext); - mTestController = spy(new TestPreferenceController(mContext)); - mControllerTask = new ControllerTask(mTestController, mScreen, null /* metricsFeature */, - METRICS_CATEGORY_UNKNOWN); - } - - @Test - public void doRun_controlNotAvailable_noRunUpdateState() { - mTestController.setAvailable(false); - - mControllerTask.run(); - - verify(mTestController, never()).updateState(any(Preference.class)); - } - - @Test - public void doRun_emptyKey_noRunUpdateState() { - mTestController.setKey(""); - - mControllerTask.run(); - - verify(mTestController, never()).updateState(any(Preference.class)); - } - - @Test - public void doRun_preferenceNotExist_noRunUpdateState() { - mTestController.setKey(KEY); - - mControllerTask.run(); - - verify(mTestController, never()).updateState(any(Preference.class)); - } - - @Test - public void doRun_executeUpdateState() { - mTestController.setKey(KEY); - final Preference preference = new Preference(mContext); - preference.setKey(KEY); - mScreen.addPreference(preference); - - mControllerTask.run(); - - verify(mTestController).updateState(any(Preference.class)); - } - - static class TestPreferenceController extends AbstractPreferenceController { - private boolean mAvailable; - private String mKey; - - TestPreferenceController(Context context) { - super(context); - mAvailable = true; - } - - @Override - public boolean isAvailable() { - return mAvailable; - } - - @Override - public String getPreferenceKey() { - return mKey; - } - - void setAvailable(boolean available) { - mAvailable = available; - } - - void setKey(String key) { - mKey = key; - } - } -} diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java index aa5f980f8d0..894a6c557df 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java @@ -390,7 +390,6 @@ public class DashboardFragmentTest { private final ContentResolver mContentResolver; public final PreferenceScreen mScreen; - private boolean mIsParalleled; public TestFragment(Context context) { mContext = context; @@ -398,7 +397,6 @@ public class DashboardFragmentTest { mScreen = mock(PreferenceScreen.class); mContentResolver = mock(ContentResolver.class); mControllers = new ArrayList<>(); - mIsParalleled = true; when(mPreferenceManager.getContext()).thenReturn(mContext); ReflectionHelpers.setField( @@ -445,13 +443,6 @@ public class DashboardFragmentTest { return mContentResolver; } - protected boolean isParalleledControllers() { - return mIsParalleled; - } - - void setUsingControllerEnhancement(boolean isParalleled) { - mIsParalleled = isParalleled; - } } private static class TestDynamicDataObserver extends DynamicDataObserver {