This is a follow up CL to my previous CL [1], which caused an unexpected
side effect that leads the current IME to crash due to a too strict
requiremnt.
It turns out that it was too early for us to start requiring non-null
StartInputToken in InputMethodManagerService#setImeWindowStatus()
because in many places we have assumed that an IME can show/hide its
software keyboard even before an IME target window is associated with
the IME.
There are two major cases that we missed:
- InputMethodManager#showSoftInputFromInputMethod(IBinder, int):
This method does not require that the calling IME is already bound
to an IME target window.
- InputMethodManager#showSoftInputUnchecked(int ,ResultReceiver):
This @hide method allows the caller application to let current IME
show the software keyboard with bypassing all the normal focus
management tasks in InputMethodManager. We should seriously
consider to deprecate this @hide method, but to do that we have to
clean up some internal components and SearchView in the support
library that still rely on this method.
Bug 35395372 is triggered by the second scenario, but until we sort out
all the possible corner cases, we should allow null startInputToken as a
valid request, like we had have done so before the CL [1] introduced
such a validation.
[1]: I9921b381e02106dbffff5e0b3d13f0a1245ce807
6db3bfe33d92127d203ec872a0b353585a99f256
Test: Made sure Bug 35395372 is no longer reproducible, that is,
1. Flash a new image and complete the setup wizard on a
direct-boot unaware device.
2. Set a device password and require it upon each device boot.
3. adb reboot
4. Observe the default IME does not crash because of
InvalidParameterException thrown by IMMS.
Test: Made sure IMM#showSoftInputFromInputMethod(IBinder, int) does
not throw an InvalidParameterException even in an extreme case.
1. Rebuild LatinIME with the following code in LatinIME.java
@Override
public AbstractInputMethodImpl onCreateInputMethodInterface() {
return new InputMethodService.InputMethodImpl() {
@Override
public void attachToken(IBinder token) {
super.attachToken(token);
final InputMethodManager imm =
getSystemService(InputMethodManager.class);
final IBinder imeToken =
getWindow().getWindow().getAttributes().token;
imm.showSoftInputFromInputMethod(imeToken, 0);
}
};
}
2. adb install -r LatinIME.apk
3. adb shell ime enable com.android.inputmethod.latin/.LatinIME
4. adb shell ime set com.android.inputmethod.latin/.LatinIME
5. Tap any text field.
4. Observe LatinIME does not crash because of
InvalidParameterException thrown by IMMS.
Bug: 34628091
Bug: 35079353
Fixes: 35395372
Change-Id: Ib9448c551d9a30776a999c27a5ff20f1a095633a
The new RIL request for powering up/down the SIM card.
Test: Telephony sanity tests
bug: 32224755
Merged-In: Ia20f824eb9a0bf6d5f63f782a8d42a22a0355938
Change-Id: Ia20f824eb9a0bf6d5f63f782a8d42a22a0355938
Companion apps can declare they want background access and
background execution exceptions via dedicated permissions
in their manifest. If such a permission is requested we
auto-grant the corresponding exception after the user has
chosen a device from the companion UI. These permissions
are appop ones allowing us to use the app ops for gauging
whether the user has made a change after we auto-granted
the permission since we would like to revoke these special
privileges when the app disassociates itself from the
companion device if the user did not make an excplicit
choice otherwise.
While at this auto-grant fixed location permission to the
companion device discovery service.
Test: manual
Change-Id: I46ee4291e5e5a8f7613f0dd75eb61d6b9341f306
The captive portal detection logic treats empty http responses with a
Content-Length of 0 as not coming from a portal.
However when the Content-Length is missing from the response header, the
empty response is not detected as such and is classified as a captive
portal answer.
When this happens for the http probe, the portal detection logic will
short circuit the detection and wrongly report a portal. The system
validates the network in such conditions only if the https probe
returns a successful connection faster than the http probe.
This patch attempts to better detect empty responses by trying to read
the first byte from the response body when the Content-Length is missing
for 200 responses.
Test: build, flashed + manual tests.
Bug: 33498325
(cherry picked from commit cb4aa4d412c7940386df9b8dd681e0d2efebfd1d)
Change-Id: Ibb9914cba72a4dab3ae76746d8889bbf083be812
We will log which evaluator was used to provide the event,
and whether or not the recommendation resulted in a successful
connection.
Bug: 34384405
Test: NA
Change-Id: I091c4d7f81c5c612248374817cb5c107b6aa20e2
The URL will be typically used by views rendering HTML pages (like WebView),
and used in 2 cases
- Root node (containing the URL of the HTML page)
- Child nodes that represent hyperlinks (contains the hyperlink URL).
Fixes: 20902429
Test: manual verification
Test: android.assist.cts.WebViewTest verifies it
Change-Id: Ic49472f1fca89047369b7187176f54efd277e204