QS: Fix brightness/edit disappearing with too few tiles

- Make sure the tile layout doesn't have negative height

Test: runtest systemui
Fixes: 34593873
Change-Id: I392aa925cde1b2147a86cda63cd9e84cd3026a90
This commit is contained in:
Jason Monk
2017-02-06 14:37:29 -08:00
parent 0355dccc85
commit cedcb945f7
4 changed files with 13 additions and 22 deletions

View File

@@ -99,8 +99,9 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
record.tileView.measure(exactly(mCellWidth), exactly(mCellHeight));
previousView = record.tileView.updateAccessibilityOrder(previousView);
}
setMeasuredDimension(width,
(mCellHeight + mCellMargin) * rows + (mCellMarginTop - mCellMargin));
int height = (mCellHeight + mCellMargin) * rows + (mCellMarginTop - mCellMargin);
if (height < 0) height = 0;
setMeasuredDimension(width, height);
}
private static int exactly(int size) {

View File

@@ -15,11 +15,6 @@
package com.android.systemui.qs;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.os.Handler;
import android.os.Looper;
import android.support.test.runner.AndroidJUnit4;
import com.android.systemui.Dependency;
import com.android.systemui.FragmentTestCase;
@@ -27,28 +22,16 @@ import com.android.systemui.R;
import com.android.systemui.statusbar.phone.QSTileHost;
import com.android.systemui.statusbar.phone.QuickStatusBarHeader;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NextAlarmController;
import com.android.systemui.statusbar.policy.RotationLockController;
import com.android.systemui.statusbar.policy.SecurityController;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.utils.leaks.LeakCheckedTest;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import android.os.Handler;
import android.os.Looper;
import android.support.test.runner.AndroidJUnit4;
@RunWith(AndroidJUnit4.class)
public class QSFragmentTest extends FragmentTestCase {

View File

@@ -161,4 +161,10 @@ public class TileLayoutTest extends SysuiTestCase {
assertEquals(top1.getValue().intValue(), top2.getValue().intValue());
assertEquals(bottom1.getValue().intValue(), bottom2.getValue().intValue());
}
@Test
public void testEmptyHeight() {
mTileLayout.measure(mLayoutSizeForOneTile, mLayoutSizeForOneTile);
assertEquals(0, mTileLayout.getMeasuredHeight());
}
}

View File

@@ -25,6 +25,7 @@ public class FakeTunerService extends TunerService {
public FakeTunerService(Context context, LeakCheckedTest test) {
super(context);
mBaseLeakChecker = new BaseLeakChecker<>(test, "tunable");
destroy();
}
@Override