Files
app_Settings/res/layout/crypt_keeper_password_field.xml
Yohei Yukawa 4ae46cd1ad Make IME handling deterministic in CryptKeeper
We have been receiving more and more strange bug reports regarding
the initial IME visibility on CryptKeeper (Bug 31915865, Bug 35198715,
and Bug 36148078).  Most likely we have introduced more bugs before
fixing previous bugs.

As the first step to disentangle multiple problems, this CL addresses
a long standing issue that CryptKeeper relies on @hide internal API
InputMethodManager#showSoftInputUnchecked().  As explained in
Bug 36015425, IMM#showSoftInputUnchecked() is considered harmful in
terms of bypassing standard IME focus handling flows, which prevents
us from taking advantage of historical debugging mechanism that we
have added recently in Bug 35079353.

Test: Manually verified that Bug 31915865 is still broken but this CL
      does not make it worse.
      1. Flash an image into a non direct-boot device.
      2. Set up a device boot password.
      3. adb reboot
      After the step 3, the software keyboard shows up automatically
      then suddenly disappears (Bug 35198715).
Bug: 36015425
Change-Id: I3cffeec286d9372ff05e85a49b82287cb1add8a2
2017-03-13 22:00:15 +00:00

37 lines
1.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
**
** Copyright 2014, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License")
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- Contents of the password entry field for CryptKeeper. Comes with an IME
switcher, if necessary. Assumed to be in a horizontal LinearLayout. -->
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.settings.widget.ImeAwareEditText android:id="@+id/passwordEntry"
android:layout_height="wrap_content"
android:layout_width="0dip"
android:layout_weight="1"
android:inputType="textPassword"
android:textSize="16sp"
android:padding="10sp"
android:maxLength="500"
style="@style/TextAppearance.CryptKeeper_PasswordEntry" />
<include layout="@layout/crypt_keeper_switch_input_method" />
</merge>