Remove setHandler in NetworkStatsService

Currently, internal handler is set by setHandler after
constructing NSS object. This was introduced in ag/866187 to
access the handler in the unit test.

However, the design put NSS in a bad situation where all classes
that need handler or executor could not be final and need to be
dynamically allocated in order to get a valid handler.

Thus, since the usage of handler is removed in previous patch,
this change eliminate setHandler by initializing the handler in
the constructor.

Test: atest FrameworksNetTests
Bug: 150664039

Change-Id: I794a24d00b0ca9fdc78091e7b9ab7307e0f034b7
This commit is contained in:
junyulai
2020-03-03 15:53:56 +08:00
parent 3123092fd5
commit c05d1359b4

View File

@@ -64,6 +64,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.annotation.NonNull;
import android.app.AlarmManager; import android.app.AlarmManager;
import android.app.usage.NetworkStatsManager; import android.app.usage.NetworkStatsManager;
import android.content.Context; import android.content.Context;
@@ -191,15 +192,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
PowerManager.WakeLock wakeLock = PowerManager.WakeLock wakeLock =
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
mService = new NetworkStatsService(
mServiceContext, mNetManager, mAlarmManager, wakeLock, mClock,
mServiceContext.getSystemService(TelephonyManager.class), mSettings,
mStatsFactory, new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir));
mHandlerThread = new HandlerThread("HandlerThread"); mHandlerThread = new HandlerThread("HandlerThread");
mHandlerThread.start(); final NetworkStatsService.Dependencies deps = makeDependencies();
Handler.Callback callback = new NetworkStatsService.HandlerCallback(mService); mService = new NetworkStatsService(mServiceContext, mNetManager, mAlarmManager, wakeLock,
final Handler handler = new Handler(mHandlerThread.getLooper(), callback); mClock, mServiceContext.getSystemService(TelephonyManager.class), mSettings,
mService.setHandler(handler, callback); mStatsFactory, new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir), deps);
mElapsedRealtime = 0L; mElapsedRealtime = 0L;
@@ -221,6 +218,16 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
mNetworkObserver = networkObserver.getValue(); mNetworkObserver = networkObserver.getValue();
} }
@NonNull
private NetworkStatsService.Dependencies makeDependencies() {
return new NetworkStatsService.Dependencies() {
@Override
public HandlerThread makeHandlerThread() {
return mHandlerThread;
}
};
}
@After @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
IoUtils.deleteContents(mStatsDir); IoUtils.deleteContents(mStatsDir);
@@ -233,6 +240,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
mSession.close(); mSession.close();
mService = null; mService = null;
mHandlerThread.quitSafely();
} }
@Test @Test