Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit adcee7d8 authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Automerger Merge Worker
Browse files

Fix loopers in TileServices am: 49ffa7e3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17124901

Change-Id: I9cdfb51c3e30a1176fa30fa3057af732873d09c2
parents 89319dc2 49ffa7e3
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.graphics.drawable.Icon;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.os.UserHandle;
import android.service.quicksettings.IQSService;
@@ -51,6 +50,7 @@ import java.util.Comparator;
import java.util.Objects;

import javax.inject.Inject;
import javax.inject.Provider;

/**
 * Runs the day-to-day operations of which tiles should be bound and when.
@@ -64,8 +64,8 @@ public class TileServices extends IQSService.Stub {
    private final ArrayMap<ComponentName, CustomTile> mTiles = new ArrayMap<>();
    private final ArrayMap<IBinder, CustomTile> mTokenMap = new ArrayMap<>();
    private final Context mContext;
    private final Handler mHandler;
    private final Handler mMainHandler;
    private final Provider<Handler> mHandlerProvider;
    private final QSTileHost mHost;
    private final KeyguardStateController mKeyguardStateController;
    private final BroadcastDispatcher mBroadcastDispatcher;
@@ -76,7 +76,7 @@ public class TileServices extends IQSService.Stub {
    @Inject
    public TileServices(
            QSTileHost host,
            @Main Looper looper,
            @Main Provider<Handler> handlerProvider,
            BroadcastDispatcher broadcastDispatcher,
            UserTracker userTracker,
            KeyguardStateController keyguardStateController) {
@@ -84,8 +84,8 @@ public class TileServices extends IQSService.Stub {
        mKeyguardStateController = keyguardStateController;
        mContext = mHost.getContext();
        mBroadcastDispatcher = broadcastDispatcher;
        mHandler = new Handler(looper);
        mMainHandler = new Handler(Looper.getMainLooper());
        mHandlerProvider = handlerProvider;
        mMainHandler = mHandlerProvider.get();
        mUserTracker = userTracker;
        mBroadcastDispatcher.registerReceiver(
                mRequestListeningReceiver,
@@ -118,7 +118,7 @@ public class TileServices extends IQSService.Stub {

    protected TileServiceManager onCreateTileService(ComponentName component,
            BroadcastDispatcher broadcastDispatcher) {
        return new TileServiceManager(this, mHandler, component,
        return new TileServiceManager(this, mHandlerProvider.get(), component,
                broadcastDispatcher, mUserTracker);
    }

+11 −6
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import android.content.ComponentName;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.service.quicksettings.TileService;
import android.test.suitebuilder.annotation.SmallTest;
@@ -68,6 +67,8 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Optional;

import javax.inject.Provider;

@SmallTest
@RunWith(AndroidTestingRunner.class)
@RunWithLooper
@@ -75,6 +76,7 @@ public class TileServicesTest extends SysuiTestCase {
    private static int NUM_FAKES = TileServices.DEFAULT_MAX_BOUND * 2;

    private TileServices mTileService;
    private TestableLooper mTestableLooper;
    private ArrayList<TileServiceManager> mManagers;
    @Mock
    private BroadcastDispatcher mBroadcastDispatcher;
@@ -116,17 +118,20 @@ public class TileServicesTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);
        mDependency.injectMockDependency(BluetoothController.class);
        mManagers = new ArrayList<>();
        mTestableLooper = TestableLooper.get(this);

        when(mTileServiceRequestControllerBuilder.create(any()))
                .thenReturn(mTileServiceRequestController);
        when(mTileLifecycleManagerFactory.create(any(Intent.class), any(UserHandle.class)))
                .thenReturn(mTileLifecycleManager);

        Provider<Handler> provider = () -> new Handler(mTestableLooper.getLooper());

        QSTileHost host = new QSTileHost(mContext,
                mStatusBarIconController,
                mQSFactory,
                new Handler(),
                Looper.myLooper(),
                provider.get(),
                mTestableLooper.getLooper(),
                mPluginManager,
                mTunerService,
                () -> mAutoTileManager,
@@ -140,7 +145,7 @@ public class TileServicesTest extends SysuiTestCase {
                mock(CustomTileStatePersister.class),
                mTileServiceRequestControllerBuilder,
                mTileLifecycleManagerFactory);
        mTileService = new TestTileServices(host, Looper.getMainLooper(), mBroadcastDispatcher,
        mTileService = new TestTileServices(host, provider, mBroadcastDispatcher,
                mUserTracker, mKeyguardStateController);
    }

@@ -226,10 +231,10 @@ public class TileServicesTest extends SysuiTestCase {
    }

    private class TestTileServices extends TileServices {
        TestTileServices(QSTileHost host, Looper looper,
        TestTileServices(QSTileHost host, Provider<Handler> handlerProvider,
                BroadcastDispatcher broadcastDispatcher, UserTracker userTracker,
                KeyguardStateController keyguardStateController) {
            super(host, looper, broadcastDispatcher, userTracker, keyguardStateController);
            super(host, handlerProvider, broadcastDispatcher, userTracker, keyguardStateController);
        }

        @Override