Refactor HandlerInjector to SettingsLib

- Plan to share the HandlerInjector class to System UI.

Bug: 194186477
Test: manual test
atest InternetResetHelperTest

Change-Id: I4b1b72ac7742bcfdd89ae61d9f88df1c64224f1f
This commit is contained in:
Weng Su
2021-07-20 23:40:43 +08:00
parent d8762def2c
commit 3563baee28
2 changed files with 8 additions and 26 deletions

View File

@@ -21,7 +21,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.Process; import android.os.Process;
import android.text.TextUtils; import android.text.TextUtils;
@@ -37,6 +36,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceCategory;
import com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager; import com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager;
import com.android.settingslib.utils.HandlerInjector;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -86,7 +86,7 @@ public class InternetResetHelper implements LifecycleObserver,
public InternetResetHelper(Context context, Lifecycle lifecycle) { public InternetResetHelper(Context context, Lifecycle lifecycle) {
mContext = context; mContext = context;
mHandlerInjector = new HandlerInjector(context); mHandlerInjector = new HandlerInjector(context.getMainThreadHandler());
mWifiManager = mContext.getSystemService(WifiManager.class); mWifiManager = mContext.getSystemService(WifiManager.class);
mWifiStateFilter = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION); mWifiStateFilter = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION);
@@ -239,24 +239,4 @@ public class InternetResetHelper implements LifecycleObserver,
mHandlerInjector.postDelayed(mTimeoutRunnable, RESTART_TIMEOUT_MS); mHandlerInjector.postDelayed(mTimeoutRunnable, RESTART_TIMEOUT_MS);
mConnectivitySubsystemsRecoveryManager.triggerSubsystemRestart(null /* reason */, this); mConnectivitySubsystemsRecoveryManager.triggerSubsystemRestart(null /* reason */, this);
} }
/**
* Wrapper for testing compatibility.
*/
@VisibleForTesting
static class HandlerInjector {
protected final Handler mHandler;
HandlerInjector(Context context) {
mHandler = context.getMainThreadHandler();
}
public void postDelayed(Runnable runnable, long delayMillis) {
mHandler.postDelayed(runnable, delayMillis);
}
public void removeCallbacks(Runnable runnable) {
mHandler.removeCallbacks(runnable);
}
}
} }

View File

@@ -29,6 +29,7 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
@@ -39,6 +40,7 @@ import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager; import com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager;
import com.android.settingslib.utils.HandlerInjector;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
@@ -71,12 +73,12 @@ public class InternetResetHelperTest {
private FakeHandlerInjector mFakeHandlerInjector; private FakeHandlerInjector mFakeHandlerInjector;
private static class FakeHandlerInjector extends InternetResetHelper.HandlerInjector { private static class FakeHandlerInjector extends HandlerInjector {
private Runnable mRunnable; private Runnable mRunnable;
FakeHandlerInjector(Context context) { FakeHandlerInjector(Handler handler) {
super(context); super(handler);
} }
@Override @Override
@@ -104,7 +106,7 @@ public class InternetResetHelperTest {
final Lifecycle lifecycle = mock(Lifecycle.class); final Lifecycle lifecycle = mock(Lifecycle.class);
mInternetResetHelper = new InternetResetHelper(mContext, lifecycle); mInternetResetHelper = new InternetResetHelper(mContext, lifecycle);
mInternetResetHelper.mWorkerThread = mWorkerThread; mInternetResetHelper.mWorkerThread = mWorkerThread;
mFakeHandlerInjector = new FakeHandlerInjector(mContext); mFakeHandlerInjector = new FakeHandlerInjector(mContext.getMainThreadHandler());
mInternetResetHelper.mHandlerInjector = mFakeHandlerInjector; mInternetResetHelper.mHandlerInjector = mFakeHandlerInjector;
mInternetResetHelper.mConnectivitySubsystemsRecoveryManager = mInternetResetHelper.mConnectivitySubsystemsRecoveryManager =
mConnectivitySubsystemsRecoveryManager; mConnectivitySubsystemsRecoveryManager;