Apps handling the PRE_BOOT_COMPLETED broadcast expect the user to be
fully unlocked and working. Most system internals are using the
SystemServer interface, and we dispatch the unlocked event through
them before starting the PRE_BOOT process.
However, there are still some system internals that haven't been
converted to SystemServer, so we need to also send USER_UNLOCKED
for them to pick up before starting PRE_BOOT work.
Bug: 28086245
Change-Id: Ie847b463ea55a6dddcc49d243ef8fb308e5179a7
BackgroundDexOptimizer (BDOS) keeps a list of packages it attempted
to compile but dexopt failed. Once such a package is put on the list,
it is never removed from it until reboot.
This CL modifies BDOS to accept notificiations from
PackageManagerService on recently installed packages and removes
their names from the list.
Bug: 28082762
Change-Id: I0c3d3f657bd3ff5f0a61dfeef1d8174ed7be0b74
BackgroundDexOptService keeps a list of packages which failed to
compile so that they are not revisited. If compilation takes so long
that the background job is killed, the offending package is not
recorded.
This patch records the package before dexopt is called and removes it
from the list if dexopt succeeds.
Bug: 28082762
Change-Id: If7388e159b999287b60f19dc99cf4dde61ec64c8
PackageDexOptimizer.performDexOpt would return DEX_OPT_PERFORMED if
dexopt succeeded on the package and DEX_OPT_SKIPPED otherwise, even
if dexopt failed. This patch fixes that and cleans up the code.
PackageManagerService.performDexOpt* would return true only if
PackageDexOptimizer.performDexOpt returned DEX_OPT_PERFORMED.
Consequently, it would return false when dexopt was not needed. This
patch refactors the code to return true unless PackageDexOptimizer
returns DEX_OPT_FAILED and documents the behaviour.
Bug: 28082762
Change-Id: Ica73e67ab02025ef5619746bb8c465c96b72846b
Adds a post-boot job which scans all optimizable packages and updates
those whose OAT files are out of date. This is meant to offset the
fact that on OTA we only update the most used packages.
Bug: 27901338
Change-Id: Ia4d4362ecead1ca63d08d62c6814dad4b810f7cc
It turns out that IME subtypes specified to
InputMethodManager#setAdditionalInputMethodSubtypes() are stored in the
presistent storate without subtype IDs. As a result, when the system is
rebooted, the system would no longer consider those additional subtypes
as enabled due to subtype ID mismatch, until the IME re-adds those
additional subtypes again with the original subtype IDs.
Bug: 28104337
Change-Id: I1445213e0b83d76631a839b974ec1ab9b28ad7d2
1. Deduplicate the Tethering message numbers, and use MessageUtils
to convert them to strings.
2. Add a warning to NativeDaemonConnector when an unsolicited
event is more than 500ms late or takes more than 500ms to
process.
Bug: 27857665
Change-Id: I379aef9257027d1ccf30906e79c6389ef1f95420
Certain operations, such as clearing/destroying app data, or just
counting on-disk size, require us to know the CE storage directory
of a particular app. To facilitate these operations, offer a method
to get the inode of a CE directory, and accept that inode number
for later operations. Collect and store the inode number in
PackageUserState for future use when that user's CE storage is
still locked. This design means it's safe to clear/destroy app
data in both CE/DE storage at the same time.
Move most installd-related methods to a uniform calling convention
that accepts a single parent PackageParser.Package, and internally
fans out to handle all "leaf" packages under that parent.
In previous releases, we started installing apps using a new
directory-based layout, where all app code, unpacked native libraries,
and optimized code is bundled together. So now we only have a single
path to measure for code size. This fixes several outstanding bugs
that were causing sizes to be miscounted for apps supporting multiple
architectures.
Fix a subtle bug in PackageSettings that would cause "notLaunched"
to be parsed incorrectly.
Bug: 27828915, 27197819
Change-Id: Ia582cf3550553292bde4bb4313367111332913ec
This is a follow up CL to my previous CL [1], which added a new key
binding Meta+Space to rotate enabled IME subtypes. With this CL,
Shift+Meta+Space starts reverse-rotating enabled IME subtypes as
originally planed.
[1]: I4005692215edfcf8bed3e86b1e07000148f986f5
ae61f7118a92e097e854c840d5726c0920f5db0e
Bug: 25753404
Bug: 28103839
Change-Id: I3694edd80be6dfe18b90360e24ae4d451b331928
We're still hearing rare reports of apps running while the system
is trying to do surgery on app code/data. To fix this once and for
all, start guarding all PackageManager critical sections by freezing
and then killing the app before doing surgery.
This is done by introducing a new PackageFreezer class which can be
used in try-with-resources blocks. It also handles child packages
uniformly, and it uses CloseGuard to defensively un-freeze packages
if a caller leaks without closing.
The set of frozen packages is now maintained outside of PackageSetting
to support newly installed packages. Add docs for the various locks
and method syntax conventions, including the new "LIF" syntax which
indicates the caller is responsible for freezing the package being
worked on.
Bug: 27698554
Change-Id: I64c4c48123060ccb4d4c50c2fbf3ef223c01e659
These are permissions that were mapped to gids but we need
to keep them listed event though they are no longer mapped
to gis until an upgrade from L to the current version is to
be supported. These permissions are built-in and in L were
not stored in packages.xml as a result if they are not defined
in the platform.xml while parsing packages.xml we would
ignore these permissions being granted to apps and not
propagate the granted state. From N we are storing the built-in
permissions in packages.xml as the saved storage is negligible
(one tag with the permission) compared to the fragility as one
can remove a built-in permission which no longer needs to be
mapped to gids and break grant propagation.
bug:27185272
Change-Id: I440f6ceb7bc4710dece1a2fadabc995b18fc2a83
- Make minimal task size 220dp.
- Disable upper and lower targets if they result in less
than 220dp task size.
- If even the middle target doesn't allow 220dp task size,
disable entering split screen altogether.
Bug: 26451260
Change-Id: I06e358c9b3da0172c5def75cdadf975f87f9fa57
Since forcing it all the time has the potential of breaking
compatibility with apps, we don't want to do this.
Instead, we only force it if the app targets >= N.
We communicate this to window manager with
PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND.
We introduced this for 2-up split-screen. If we have an app
that doesn't draw the status bar background by itself, we
just force the whole bar to be black.
The same applies for windows that used translucent status
bar - we also force the whole bar to be black
Bug: 27285627
Change-Id: I7f1ceaa364f8a4e851935f77aa5e8d913bf11791
- If stack doesn't have focus, we execute TASK_TO_FRONT transition.
Set the correct animation for this transition type.
- Make sure to execute app transition when we are finishing an
activity that isn't resumed.
- Correctly set mAnimatingExit for the case if the activity is
already paused.
Bug: 27327287
Bug: 27154882
Change-Id: I253938727ba0eea76ebadba242315bd2d305d0b4