Merge "Remove Dep.get(MAIN_HANDLER) from TileQueryHelper"

This commit is contained in:
TreeHugger Robot
2019-11-22 20:14:30 +00:00
committed by Android (Google) Code Review
3 changed files with 34 additions and 18 deletions

View File

@@ -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);

View File

@@ -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;
});
}

View File

@@ -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();