Merge "Remove Dep.get(MAIN_HANDLER) from TileQueryHelper"
This commit is contained in:
committed by
Android (Google) Code Review
commit
d9f8512fe8
@@ -90,7 +90,8 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
|
||||
public QSCustomizer(Context context, AttributeSet attrs,
|
||||
LightBarController lightBarController,
|
||||
KeyguardStateController keyguardStateController,
|
||||
ScreenLifecycle screenLifecycle) {
|
||||
ScreenLifecycle screenLifecycle,
|
||||
TileQueryHelper tileQueryHelper) {
|
||||
super(new ContextThemeWrapper(context, R.style.edit_theme), attrs);
|
||||
|
||||
LayoutInflater.from(getContext()).inflate(R.layout.qs_customize_panel_content, this);
|
||||
@@ -113,7 +114,8 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
|
||||
mRecyclerView = findViewById(android.R.id.list);
|
||||
mTransparentView = findViewById(R.id.customizer_transparent_view);
|
||||
mTileAdapter = new TileAdapter(getContext());
|
||||
mTileQueryHelper = new TileQueryHelper(context, mTileAdapter);
|
||||
mTileQueryHelper = tileQueryHelper;
|
||||
mTileQueryHelper.setListener(mTileAdapter);
|
||||
mRecyclerView.setAdapter(mTileAdapter);
|
||||
mTileAdapter.getItemTouchHelper().attachToRecyclerView(mRecyclerView);
|
||||
GridLayoutManager layout = new GridLayoutManager(getContext(), 3);
|
||||
|
||||
@@ -33,8 +33,9 @@ import android.text.TextUtils;
|
||||
import android.util.ArraySet;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dagger.qualifiers.BgHandler;
|
||||
import com.android.systemui.dagger.qualifiers.MainHandler;
|
||||
import com.android.systemui.plugins.qs.QSTile;
|
||||
import com.android.systemui.plugins.qs.QSTile.State;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
@@ -47,6 +48,8 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class TileQueryHelper {
|
||||
private static final String TAG = "TileQueryHelper";
|
||||
|
||||
@@ -55,15 +58,20 @@ public class TileQueryHelper {
|
||||
private final Handler mBgHandler;
|
||||
private final Handler mMainHandler;
|
||||
private final Context mContext;
|
||||
private final TileStateListener mListener;
|
||||
private TileStateListener mListener;
|
||||
|
||||
private boolean mFinished;
|
||||
|
||||
public TileQueryHelper(Context context, TileStateListener listener) {
|
||||
@Inject
|
||||
public TileQueryHelper(Context context,
|
||||
@MainHandler Handler mainHandler, @BgHandler Handler bgHandler) {
|
||||
mContext = context;
|
||||
mMainHandler = mainHandler;
|
||||
mBgHandler = bgHandler;
|
||||
}
|
||||
|
||||
public void setListener(TileStateListener listener) {
|
||||
mListener = listener;
|
||||
mBgHandler = new Handler(Dependency.get(Dependency.BG_LOOPER));
|
||||
mMainHandler = Dependency.get(Dependency.MAIN_HANDLER);
|
||||
}
|
||||
|
||||
public void queryTiles(QSTileHost host) {
|
||||
@@ -178,7 +186,9 @@ public class TileQueryHelper {
|
||||
private void notifyTilesChanged(final boolean finished) {
|
||||
final ArrayList<TileInfo> tilesToReturn = new ArrayList<>(mTiles);
|
||||
mMainHandler.post(() -> {
|
||||
mListener.onTilesChanged(tilesToReturn);
|
||||
if (mListener != null) {
|
||||
mListener.onTilesChanged(tilesToReturn);
|
||||
}
|
||||
mFinished = finished;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -36,6 +36,8 @@ import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.provider.Settings;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
@@ -46,7 +48,6 @@ import android.util.ArraySet;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.plugins.qs.QSTile;
|
||||
@@ -99,12 +100,12 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
private QSTile.State mState;
|
||||
private TestableLooper mBGLooper;
|
||||
private TileQueryHelper mTileQueryHelper;
|
||||
private Handler mMainHandler;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mBGLooper = TestableLooper.get(this);
|
||||
mDependency.injectTestDependency(Dependency.BG_LOOPER, mBGLooper.getLooper());
|
||||
mContext.setMockPackageManager(mPackageManager);
|
||||
|
||||
mState = new QSTile.State();
|
||||
@@ -122,7 +123,10 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
}
|
||||
).when(mQSTileHost).createTile(anyString());
|
||||
|
||||
mTileQueryHelper = new TileQueryHelper(mContext, mListener);
|
||||
mMainHandler = new Handler(Looper.getMainLooper());
|
||||
mTileQueryHelper = new TileQueryHelper(mContext, mMainHandler,
|
||||
new Handler(mBGLooper.getLooper()));
|
||||
mTileQueryHelper.setListener(mListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -135,7 +139,7 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
mTileQueryHelper.queryTiles(mQSTileHost);
|
||||
|
||||
mBGLooper.processAllMessages();
|
||||
waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER));
|
||||
waitForIdleSync(mMainHandler);
|
||||
|
||||
assertTrue(mTileQueryHelper.isFinished());
|
||||
}
|
||||
@@ -145,7 +149,7 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
mTileQueryHelper.queryTiles(mQSTileHost);
|
||||
|
||||
mBGLooper.processAllMessages();
|
||||
waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER));
|
||||
waitForIdleSync(mMainHandler);
|
||||
|
||||
verify(mListener, times(2)).onTilesChanged(any());
|
||||
}
|
||||
@@ -160,7 +164,7 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
mTileQueryHelper.queryTiles(mQSTileHost);
|
||||
|
||||
mBGLooper.processAllMessages();
|
||||
waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER));
|
||||
waitForIdleSync(mMainHandler);
|
||||
|
||||
assertTrue(mTileQueryHelper.isFinished());
|
||||
}
|
||||
@@ -175,7 +179,7 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
mTileQueryHelper.queryTiles(mQSTileHost);
|
||||
|
||||
mBGLooper.processAllMessages();
|
||||
waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER));
|
||||
waitForIdleSync(mMainHandler);
|
||||
|
||||
verify(mListener, atLeastOnce()).onTilesChanged(mCaptor.capture());
|
||||
List<String> specs = new ArrayList<>();
|
||||
@@ -196,7 +200,7 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
mTileQueryHelper.queryTiles(mQSTileHost);
|
||||
|
||||
mBGLooper.processAllMessages();
|
||||
waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER));
|
||||
waitForIdleSync(mMainHandler);
|
||||
|
||||
verify(mListener, atLeastOnce()).onTilesChanged(mCaptor.capture());
|
||||
List<String> specs = new ArrayList<>();
|
||||
@@ -217,7 +221,7 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
mTileQueryHelper.queryTiles(mQSTileHost);
|
||||
|
||||
mBGLooper.processAllMessages();
|
||||
waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER));
|
||||
waitForIdleSync(mMainHandler);
|
||||
|
||||
verify(mListener, atLeastOnce()).onTilesChanged(mCaptor.capture());
|
||||
List<String> specs = new ArrayList<>();
|
||||
@@ -248,7 +252,7 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
|
||||
mTileQueryHelper.queryTiles(mQSTileHost);
|
||||
mBGLooper.processAllMessages();
|
||||
waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER));
|
||||
waitForIdleSync(mMainHandler);
|
||||
|
||||
verify(mListener, atLeastOnce()).onTilesChanged(mCaptor.capture());
|
||||
List<TileQueryHelper.TileInfo> tileInfos = mCaptor.getValue();
|
||||
|
||||
Reference in New Issue
Block a user