Merge "Move bouncer to bottom of screen when in one handed mode." into sc-dev

This commit is contained in:
Jamie Garside
2021-04-27 14:55:50 +00:00
committed by Android (Google) Code Review
3 changed files with 67 additions and 5 deletions

View File

@@ -20,4 +20,11 @@
0x50 = bottom, 0x01 = center_horizontal -->
<integer name="keyguard_host_view_gravity">0x51</integer>
<!-- Gravity for the keyguard when it is in one-handed mode. This is ignored unless
can_use_one_handed_bouncer is true, _and_ the one handed bouncer is enabled in the device
config (com.android.internal.R.bool.config_enableOneHandedKeyguard)
0x50 = bottom, 0x01 = center_horizontal -->
<integer name="keyguard_host_view_one_handed_gravity">0x51</integer>
</resources>

View File

@@ -475,7 +475,18 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView>
* configuration.
*/
public void updateResources() {
int gravity = mView.getResources().getInteger(R.integer.keyguard_host_view_gravity);
int gravity;
Resources resources = mView.getResources();
if (resources.getBoolean(R.bool.can_use_one_handed_bouncer)
&& resources.getBoolean(
com.android.internal.R.bool.config_enableOneHandedKeyguard)) {
gravity = resources.getInteger(
R.integer.keyguard_host_view_one_handed_gravity);
} else {
gravity = resources.getInteger(R.integer.keyguard_host_view_gravity);
}
// Android SysUI uses a FrameLayout as the top-level, but Auto uses RelativeLayout.
// We're just changing the gravity here though (which can't be applied to RelativeLayout),

View File

@@ -29,6 +29,7 @@ import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableResources;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@@ -49,7 +50,6 @@ import org.mockito.junit.MockitoRule;
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class KeyguardHostViewControllerTest extends SysuiTestCase {
@Mock
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@@ -68,14 +68,21 @@ public class KeyguardHostViewControllerTest extends SysuiTestCase {
@Rule
public MockitoRule mMockitoRule = MockitoJUnit.rule();
private TestableResources mTestableResources;
private KeyguardHostViewController mKeyguardHostViewController;
@Before
public void setup() {
mContext.ensureTestableResources();
mTestableResources = mContext.getOrCreateTestableResources();
mKeyguardHostView = new KeyguardHostView(mContext);
// Explicitly disable one handed keyguard.
mTestableResources.addOverride(
R.bool.can_use_one_handed_bouncer, false);
mTestableResources.addOverride(
com.android.internal.R.bool.config_enableOneHandedKeyguard, false);
when(mKeyguardSecurityContainerControllerFactory.create(any(
KeyguardSecurityContainer.SecurityCallback.class)))
.thenReturn(mKeyguardSecurityContainerController);
@@ -106,7 +113,7 @@ public class KeyguardHostViewControllerTest extends SysuiTestCase {
mKeyguardHostView.setLayoutParams(lp);
// Set initial gravity
mContext.getOrCreateTestableResources().addOverride(R.integer.keyguard_host_view_gravity,
mTestableResources.addOverride(R.integer.keyguard_host_view_gravity,
Gravity.CENTER);
// Kick off the initial pass...
@@ -116,7 +123,7 @@ public class KeyguardHostViewControllerTest extends SysuiTestCase {
Gravity.CENTER);
// Now simulate a config change
mContext.getOrCreateTestableResources().addOverride(R.integer.keyguard_host_view_gravity,
mTestableResources.addOverride(R.integer.keyguard_host_view_gravity,
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
mKeyguardHostViewController.updateResources();
@@ -125,6 +132,43 @@ public class KeyguardHostViewControllerTest extends SysuiTestCase {
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
}
@Test
public void testGravityUsesOneHandGravityWhenApplicable() {
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
mKeyguardHostView.setLayoutParams(lp);
mTestableResources.addOverride(
R.integer.keyguard_host_view_gravity,
Gravity.CENTER);
mTestableResources.addOverride(
R.integer.keyguard_host_view_one_handed_gravity,
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
// Start disabled.
mTestableResources.addOverride(
R.bool.can_use_one_handed_bouncer, false);
mTestableResources.addOverride(
com.android.internal.R.bool.config_enableOneHandedKeyguard, false);
mKeyguardHostViewController.init();
assertEquals(
((FrameLayout.LayoutParams) mKeyguardHostView.getLayoutParams()).gravity,
Gravity.CENTER);
// And enable
mTestableResources.addOverride(
R.bool.can_use_one_handed_bouncer, true);
mTestableResources.addOverride(
com.android.internal.R.bool.config_enableOneHandedKeyguard, true);
mKeyguardHostViewController.updateResources();
assertEquals(
((FrameLayout.LayoutParams) mKeyguardHostView.getLayoutParams()).gravity,
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
}
@Test
public void testUpdateKeyguardPositionDelegatesToSecurityContainer() {
mKeyguardHostViewController.updateKeyguardPosition(1.0f);