Historically, InputMethodService (IMS) has relied on
InputMethodManager's hidden methods to communicate with
InputMethodManagerService (IMMS). Because of this, InputMethodManager
(IMM) has ended up being a mixture of IPC endpoint for both IME
clients and IME itself.
There are multiple problems.
* IMM is instantiated in almost all user mode processes. This means
that unnecessary IPC endpoints have been accessible to them via
reflection. Even though those endpoints refuses request without a
valid IME window token, and even though we have tighten up use of
private APIs in the runtime level, exposing unnecessary IPC
endpoints is still questionable.
* Mixing multiple responsibilities has been caused unnecessary
complexity in IMM. In Bug 70282603, we have moved some APIs from
IMM to IMS to sort out this complexity that are surfaced in API
boundary, but in the implementation level everything remained to be
the same.
Now that Bug 70282603 is fixed, the natural next step is to start
implementing actual an IPC connection from IMS to IMMS without relying
on IMM.
Here is the new diagram that describes (most of) IPC interfaces around
IMEs.
APP---(1)---IMMS
\ |
\ |
\ |
\ |
\ |
(2) (3)
\ |
\ |
\ |
\ |
\|
IME
(1): IInputMethodManager.aidl: send requests from APP to IMMS
IInputMethodClient.aidl: send requests from IMMS to APP
(2): IInputMethodSession.aidl: send requests from APP to IME
IInputContext.aidl: send requests from IME to APP
-> this is the actual interface behind InputConnection
(3): IInputMethod.aidl: send requests from IMMS to IME
IInputMethodPrivilegedOperations.aidl:
send requests from IME to IMMS
IInputMethodPrivilegedOperations.aidl is what this CL is adding.
With that, this CL moves 5 IPC methods
from IInputMethodManager.aidl (1)
to IInputMethodPrivilegedOperations.aidl (3).
There remain some IPC methods that are intended to be used only from
IMEs in IInputMethodManager.aidl because those methods have been
unfortunately exposed via public APIs in InputMethodmanager.
Although all of those public APIs were deprecated in Android P as part
of Bug 70282603, we still need to keep maintaining those APIs until
(most of) IMEs migrate to APIs that are newly introduced in
InputMethodService. It would take several years.
IInputMethodManager#getInputMethodWindowVisibleHeight() is another
method that we cannot migrate right now because some apps have already
relied on its corresponding hidden method in IMM, as discussed in Bug
113914148.
Fix: 113177698
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: I2f3ec3c5de546fb3603275a4b64000ed3f863b65
Introduce AlternativeNetworkAccess APIs
Bug: 113106744
Test: Verified using test app to make api calls
Change-Id: I7f470cd6028a12cc66a660d58720f803271d38eb
The processor outputs unsupportedappusage_index.csv, containing source
position info for every@UnsupportedAppUsage annotation processed. It is a
mapping of dex signature to the source postion of the annotation on that
signature. It is used as input for scripts which update the annotations.
We include a META-INF file which causes the compiler to automatically
pick up the annotation processor. Otherwise we would need to explicitly
specify the processor with a -processor flag to javac.
We create a new build target for just the @UnsupportedAppUsage annotation
and the @IntDef annotation (which it depends on) so that the processor can
also depend on that directly.
The processor only runs on a new build target framework-annotation-proc
so that it is not invoked as part of a regular build. This is done so
that we don't slow down peoples builds: Soong does not support annotation
processors when javac sharding is in use. This workaround can be removed
once b/77284273 is fixed.
Test: m framework-annotation-proc
Bug: 113853502
Change-Id: Ie9cd5a90ddf7a51f6035e849703fc39ad9127557
The list of events in this file is meant to be used with Generic Atom
defined in atoms.proto in statsd. Instead of unique int, we would like
to log it with an enum that shows semantic meaning of events. Also, this
change re-sorts imports and removes unused imports and remove the
previous logging line to test GenericAtom.
Test: statsd_test
Change-Id: Ia9335e48ada68bee6d716ad4d7ac50238932da95
- Provide a Call Redirection API Surface
- Provide a key "KEY_CALL_REDIRECTION_SERVICE_COMPONENT_NAME_STRING"
in the CarrierConfigManager
- Create .aidl interfaces for Call Redirection
(CallRedirectionService.aidl, CallRedirectionAdapter.aidl)
Bug: 64959558
Test: Compile
Change-Id: Ic119fa445e66f1275eabf944c77fdc981bc9a2a7
Merged-In: Ic119fa445e66f1275eabf944c77fdc981bc9a2a7
(cherry picked from commit ea8970cd55fa561dbad9579925fee4db469a539b)
The change introduces the following:
- BiometricPrompt communicatates with BiometricPromptService (new)
system service. The service does the decision making for which
biometric modality to use.
- As a result, a lot of logic is moved from <Biometric>Manager
to BiometricPrompt. FingerprintManager now does not care about
BiometricPrompt logic anymore (reverts several P changes).
Face, and all future <Biometric>Service interfaces must be protected by
the signature-only MANAGE_BIOMETRIC permission. Settings, SystemUI, and
BiometricPromptService are their only clients.
Bug: 72825012
Test: BiometricPromptDemo works
Test: Keyguard works
Test: Settings works
Change-Id: I2b7d6eff81bc07950202c50e592d733032523bf0
android.test.* are built with java_sdk_library and api files are added
by running "make update-api".
android.test.base_static is created for allowing to use
android.test.base as a static library.
Bug:77577799
Test: make -j
Test: make checkapi
Test: make checkapi fails with a random change in the txt file
Test: adb shell cmd package list libraries |\
grep android.test.*
And check the android.test.* libraries
Merged-In: Ia27612657532e50b077a9c55dbef59ee3ec04b8a
Change-Id: Ia27612657532e50b077a9c55dbef59ee3ec04b8a
(cherry picked from commit f24779c8c7a3f647f65944e02425b751e580b393)
This blocks how we try java9 for droiddoc since "hiddenapi-lists-docs"
targets depends on libcore sources. So migrate this target to Metalava.
Test: m -j hiddenapi-lists-docs
Bug: b/78245848
Change-Id: Iae47d351d974e33490c3a1e9bb9f0f5d15eedfaf
Merged-In: Iae47d351d974e33490c3a1e9bb9f0f5d15eedfaf
This blocks how we try java9 for droiddoc since "hiddenapi-lists-docs"
targets depends on libcore sources. So migrate this target to Metalava.
Test: m -j hiddenapi-lists-docs
Bug: b/78245848
Change-Id: Iae47d351d974e33490c3a1e9bb9f0f5d15eedfaf
Added the qualified networks service, which is a base
class for vendor's qualified network service to extend.
The service is to update frameworks the available
networks for data setup for each APN type.
Test: Manual
Bug: 73659459
Change-Id: I7238aeac8e48be2a17245de77239b242703bcb7e
These sources contain the result of applying the annotations from
ojluni.jaif to the ojluni sources. Now that ojluni.jaif is empty, this
is a noop, so this change switches back to reading the original
sources.
Bug: 111639530
Test: `make docs` is not affected
Change-Id: Idb98aa4f054a11bfcbcb8a84dd6f357a0a025c49
Use check_api section to put the target files which need to be updated.
But check_api doesn't do actually checking work.
Bug: b/112668343
Test: m -j api-stubs-docs-update-current-api
Change-Id: I0f28e6e480413e0ac5cdff51bc4b2df478a867f6
Use last released API file for annotations reference in master branch
(non-releasing branch).
Test: manual
Bug: b/78245848
Change-Id: I0520231619001032c00d98fdc8cd86aa41f4fa14
android.test.* are built with java_sdk_library and api files are added
by running "make update-api".
android.test.base_static is created for allowing to use
android.test.base as a static library.
Bug:77577799
Test: make -j
Test: make checkapi
Test: make checkapi fails with a random change in the txt file
Test: adb shell cmd package list libraries |\
grep android.test.*
And check the android.test.* libraries
Change-Id: Ia27612657532e50b077a9c55dbef59ee3ec04b8a
Since api-stubs-docs will be replaced by Metalava.
Test: m -j checkbuild
Bug: b/70351683 b/78245848
Change-Id: I3d2091afb0b5d93250573076d4dc95b47c634f2d
Merged-In: I3d2091afb0b5d93250573076d4dc95b47c634f2d
This change implements the equivalent of the C++ native_handle_t type in
Java. Similar to the C++ type, the NativeHandle class wraps an arraylist
of FileDescriptor objects, along with a raw data stream (integer array).
Bug: 35098567
Test: Ran m, hidl_test (C++ and Java). Functionality tests are included
in a separate CL.
Change-Id: Ic53f9a49ae17ce5708577a586230126ab0e222c7
If one sets a sufficiently long OUT_DIR to build into the
//frameworks/base:framework-javastream-protos generate target will
fail due to trying to run a too-long command. This works around that
problem by making the command being run much smaller.
Test: Build
Bug: 70221552
Change-Id: I0134ccfc83469826d3ea8679e1c52b9b52c6d2e0
Since api-stubs-docs will be replaced by Metalava.
Test: m -j checkbuild
Bug: b/70351683 b/78245848
Change-Id: I3d2091afb0b5d93250573076d4dc95b47c634f2d
This adds the new annotations (in Java stub format) to the list that
metalava will merge when building stubs.
Bug: 111639530
Test: `make metalava-api-stubs-docs`
Change-Id: I5e73d1276f0602bd14a41f7a64659b1a7b1347cf