Apps seem to rely on this undocumented behavior so that the
threaded sync adapter doesn't crash an app. That's really
bad on the app side, but we will have to live with it.
Bug: 67986472
Bug: 70122540
Test: m
Test: Device boots
Test: m cts && cts-tradefed run commandAndExit cts-dev --module CtsContentTestCases -c android.content.cts.SharedPreferencesTest
Change-Id: I1ee4dfba4ad29c4f66fa60d3c8f8a99900b3447a
The asynchronous loading code is not safe wrt/ exceptions. Instead
of adding a tri-state for loading, move the code to use a Future
for the map. This encapsulates the required wait & synchronization,
as well as propagating any exceptions.
Bug: 67986472
Test: m
Test: Device boots
Test: m cts && cts-tradefed run commandAndExit cts-dev --module CtsContentTestCases -c android.content.cts.SharedPreferencesTest
Change-Id: I6616e8a05e64eb1cfe024cc3239a05847dfe1fab
Clean up in preparation for an implementation change. Add missing
annotations. Rename inner lock to be uniquely named. Use the local
map instead of mMap in the commit logic.
Test: m
Test: m cts && cts-tradefed run commandAndExit cts-dev --module CtsContentTestCases -c android.content.cts.SharedPreferencesTest
Change-Id: Id3a798732c83a4aa6487225e2375ade4985852e2
When two processes modify shared preferences we use the timestamp to
figure out if the file was changes underneath. Do this with the highest
precision available (instead of sec) as before.
It would be possible to make the check more reliable by writing a unique
id to the shared pref file, but this would make this check much more
expensive in the common case that nothing changed. Considering that this
has not been a problem and we don't officially give any guarantee for
this sounds like a good middle-ground.
(cherry picked from commit ffe74357ae)
Merged-In: I04c96b6a946618d5599c26410c88d7cd654d31fb
Change-Id: I04c96b6a946618d5599c26410c88d7cd654d31fb
Test: SharedPreferencesTest
Fixes: 62949739
Fix typo in Activity class in requestPermissions method
Test: Existing unit tests still pass.
Bugs: None
Change-Id: If81117a0e769bca2f303e1ebce57ecda9544e129
Signed-off-by: Ahmad Melegy <ahmad.melegy@gmail.com>
We previously used the realpath to simplify the validation and processing
in installd. However it ended up making things more complicated when
cleaning up the profiles, especially because of /data/user/0 symlinks to
/data/data/.
Instead of using the realpath of the dex file to compute the profile
location, use the file path as given. This makes things consistent with
DexManager registration and allows for easier dex file reconciliation in
the presence of symlinks.
Bug: 64460009
Test: manual
(cherry picked from commit c119c5a8c1d8e3ba6c90300a82d2086273d0d3f3)
Merged-In: I2362f32a679324d4bc1e8a0fe83b5b17ee523e7a
Change-Id: Ic9c38a920c5eef85f26ac33f2b8a37c3694bfbad
This changelist removes checks that enforce that only fullscreen,
opaque activities may request orientation changes. An application
may itself be compatible with the change and update their SDK level.
However, it is possible they use a library that has not itself been
updated and still leverages this feature for non-fullscreen
activities.
Fixes: 68684796
Test: bit FrameworksServicesTests:com.android.server.wm.AppWindowTokenTests
Change-Id: I75bbda96b132694c722b0b535e33ea5e1b9a55db
A user can manually enter time value using a keyboard.
NumberPicker then evaluates its value when focus is changed.
Currently when the dialog is closed by pressing OK, the value
from the focused NumberPicker is not taken into consideration.
To ensure retrieval of the correct value when closing the
dialog, the focus must be removed from the NumberPicker as
is done in DatePickerDialog.
Bug: 65664546
Test: Manual
1. Connect physical keyboard via OTG connector
2. Enter Settings and set time manually
3. Select keyboard entry
4. Change time and tap OK
The entered time should be applied
Change-Id: I8a77cb3aaa54acb228ec1ce0e9385e2eb5e88e9b
Record the class loader context for secondary dex loads and pass it to
dexopt during compilation.
The class loader context is passed from libcore every time a
BaseDexClassLoader is created and its recorded in the package dex usage
file.
Note that the context may be:
- unknown: if the dex file was not use after the the upgrade and its
context was not yet updated
- unsupported: if any of the class loaders from the loading context is
unsupported (only PathClassLoader and DelegateLastClassLoader are
supported).
- variable: if it changes over time, form one run to another.
In all the above cases the old compilation behavior is preserved for
now.(i.e. the dex file with be compiled with SKIP_SHARED_LIBRARY_CHECK)
(cherry picked from commit f1ff36f0f9)
Bug: 38138251
Test: runtest -x
services/tests/servicestests/src/com/android/server/pm/dex/
adb shell cmd package compile -f -m quicken ^Csecondary-dex
com.google.android.gms
(cherry picked from commit 3bec94d78b)
Merged-In: Ie8b78c7c0d5de43733b3d116f8dcb3a65324cca8
Change-Id: Ie8b78c7c0d5de43733b3d116f8dcb3a65324cca8
Move the secondary dex profiles inside the oat folder. This makes it
easier to clean them up and "protects" them against apps which may delete
unknown files from their directories (e.g. search).
(cherry picked from commit eec18f41e2)
Bug: 62336157
Test: Manual: boot the device, use the app, check the profiles are
collected in the new location.
Merged-In: I2fbce7591589d162775e4652b12e4698083adcff
Change-Id: I2fbce7591589d162775e4652b12e4698083adcff
New quota APIs are much faster than trying to measure manually, and
removing this last user of calculateDirectorySize() means we can
remove it once and for all.
(cherry picked from commit c8b29ac6f0)
Bug: 36056324
Test: builds, boots
Merged-In: Ibdf1ee4e8885680e106df6a9269b6309ddc61af8
Change-Id: Ibdf1ee4e8885680e106df6a9269b6309ddc61af8
Be more explicit about users executing processes in the time
zone updates code.The code was already running everything as the
system user but now that's more explicit / by design.
To service unit tests:
make -j30 FrameworksServicesTests
adb install -r -g "${ANDROID_PRODUCT_OUT}/data/app/FrameworksServicesTests/FrameworksServicesTests.apk"
adb shell am instrument -e package com.android.server.timezone -w com.android.frameworks.servicestests \
"com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner"
Bug: 64111659
Test: Unit tests: See above
Test: Manual testing installing updates as secondary device user
Test: PTS: run pts -m PtsTimeZoneTestCases
Change-Id: Idb754f3e1aa3830ba1ada8ef5740f9f7340f03d5
Merged-In: Idb754f3e1aa3830ba1ada8ef5740f9f7340f03d5
(cherry picked from commit 1281f39f86)
Canonicalize for backup and canonicalize and uncanonicalize for restore
(see comment).
Test: Set custom notification sound, make backup, remove notification
sound from device (from Ringtones and make sure to update media content
provider), restore => Observe default instead of random number. Do the
same without removing the sound and observe restores successfully.
Test: runtest systemui-notification
Bug: 66444697
(cherry picked from commit c27bb6ad34)
Change-Id: I32c186d0d7479b01f6cc67cce9bc5cb66264a064
I needed to make an edit in this branch to verify part of our docs
process, so I found a Javadoc typo to fix. No code error, just took
out the hyphen in "e-mail" in a Javadoc comment.
Test: make ds-docs
Bug: 67515954
Change-Id: Icb9b2a9df0d7dfd697050735886adec80bc92ff8
When an activity overrides attachBaseContext(), the attached context must share
the same AutofillCient, otherwise it will break autofill in the activity.
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.AttachedContextActivityTest
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases
Fixes: 67350639
Change-Id: I6b0c4c2fab5fa68eb6ee0714e107ca0816efb2cb
- Allow VR system application to have VR manager service bind a
compositor process so that oom scoring for the compositor process can be
adjusted.
Bug: 38390640
Test: Check that the VrCore compositor process is -700 on AIO devices with:
adb shell procrank -o
Change-Id: I7b5bce5eb87bd5ed0fdeadf4ec7bdd2b361ab875
Calling LoadedApk.getResources() instead of accessing its
mResources directly accounts for the case where this might
not have been initialized.
Bug: 67327250
Test: none
Change-Id: Iaa392a90eefb60ad479cedf8c882976dbe390387
Bug: 67049319
TransitionUtils was returning null when the View wasn't attached,
but Visibility transitions can do that intentionally. This CL
temporarily adds detached views to the view hierarchy as part of
an overlay while creating the hardware bitmap representation.
Test: ran transition CTS tests
Change-Id: Ie335619953653dce0224514f0d5c9c8eb00ee1a9
In transition animations, in order to capture the content of a view
or a drawable in a hw bitmap, a RenderNode needs to be created. The
RenderNode was previously setup with no owning view. As a result,
in cases where RenderNode animations are triggered by the draw calls
in displaylist recording, these animations would fail for lack of a
view to animate on.
This CL ensures that when RenderNodes are created for the purpose of
populating content in a hw bitmap in transitions, there's always a
view associated with each RenderNode.
BUG: 65160121
Test: Force to repro crash by changing press state during hw bitmap
creation, which triggers a ripple animation that led to the
otherwise timing dependent and hard to repro crash.
Change-Id: I2b4ba95cad25a94d50b3904e775606f737e960e3
If we update a package without restart or if an installed
package is a target of a resource overlay we update the app
info on the applicaiton side which is then used to update
the class loader and the resources the app is loading from.
To do that we send over an app info instance for the package
which was partially populated and missing the shared lib
entries resulting in apps not finding resources and classes
from the lib.
Test: manual
bug:62685545
Change-Id: Ib40b430c85a1e5d74f270a4326497ea3bd832215