It is possible that a window will relayout while it's being hidden,
but after the Configuration has changed. In this case, the window can
receive an updated Configuration incompatible with its settings.
Additionally, an Activity's window may relayout and receive a
Configuration during resume after its visibility has changed but
before the Configuration has been updated based on the current
AppWindowTokens.
This changelist addresses these issues by first only sending an
updated Configuration to the client if the associated AppWindowToken
is not requested to be hidden. In this case, the last reported
Configuration is returned instead. For the resume issue, we
address the race condition by making setting the visibility and
updating the configuration synchronized.
Fixes: 64916689
Test: go/wm-smoke
Test: place clock widget on launcher, launch landscape only activity,
return to launcher, verify layout.
Change-Id: Ie07068be64120c2fdbe380d58af330372df6a1ab
Only those that are on the notification/ringer stream.
Change-Id: Id99c613a6de42ac8ed1d674b4c6e05067d9cf52c
Fixes: 65815310
Test: runtest systemui-notification
We consider an activity resizable if the root activity of the its
parent task is resizable. This changelist adds this condition to
consideration.
Change-Id: I4162ff7eb6cad3f4a3f9fdf35ccc0b0d2383ff15
Fixes: 65668913
Test: bit FrameworksServicesTests:com.android.server.am.ActivityRecordTests#testCanBeLaunchedOnDisplay
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.ActivityManagerDisplayTests#testLaunchNonResizeableActivityFromSecondaryDisplaySameTask
Bug: 64458884
Test: runtest -c com.android.server.NightDisplayServiceTest \
frameworks-services and manually tested Hawaii and London
Change-Id: I052034a4c64eb73c42672215e8847c11e00efeb5
Fix reliability triggering in the time zone update
feature. The reliability triggering is there to
resume an update check when things go wrong. For
example, if the device is turned off after a
time zone data app is updated but before the time
zone update process has finished pulling the data
out and installing it in /data. The reliability
trigger happens when the device is idle and will
complete the work.
The idle triggering currently doesn't work as it
was implemented incorrectly.
The code has been changed to use the
JobScheduler to trigger on idle and scheduling
has been made explicit.
Unit tests run with:
make -j30 FrameworksServicesTests
adb install -r -g \
"out/target/product/marlin/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"
Test: See above
Test: Manual testing: adb shell am idle-maintenance, adb logcat/adb shell dumpsys timezone
Test: PTS: run pts -m PtsTimeZoneTestCases
Bug: 65657543
Change-Id: Ibb2c537955d09a5d538c50490dae94a518522f19
Merged-In: Ibb2c537955d09a5d538c50490dae94a518522f19
(cherry picked from commit cd1a109b87)
Being in VR was preventing sleep and doze functionalities to function.
Sleep and doze is what commonly happens when the user hits power button
and without this fix hitting the power button resulted in PowerManager
not turning off the display.
Bug: 65635259
Test: Manual. Ensure that hitting power button while in 2D-in-VR turns
screen off on smartphones.
Test: runtest --path
frameworks/base/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
Change-Id: If3a14a5a423b0394926b323b97ed11b98177e43b
Treat a stageUninstall() doing nothing as a success, not a
failure. This prevents the system retrying the uninstall
later.
Unit tests run with:
make -j30 FrameworksServicesTests
adb install -r -g \
"out/target/product/marlin/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"
Test: See above
Test: Manual testing, adb dumpsys timezone
Test: PTS: run pts -m PtsTimeZoneTestCases
Bug: 65657176
Merged-in: Ifd205da90e848552711ac3f4207cd22ad2c2747b
Change-Id: Ifd205da90e848552711ac3f4207cd22ad2c2747b
(cherry picked from commit 8e27c9226b)
For system apps, we pass '&' for CLC.
The method was treating this as a path as a result we were getting
wrong encoding for CLC.
This was causing dexopt failures for A/B OTA.
Removed the secondary dex file dexopt till we fixed it.
Bug: 65067046
Test: runtest.py -x \
frameworks/base/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java
(cherry-picked from commit 557c054935)
Change-Id: I9aa440750c811676c86d8c6d0d451077d0edf5a0
Configuration splits have no dependencies which can lead to exceptions
when computing their class loader context.
In general, we do not need to compute the class loader context for apks
without code.
This CL addresses the issue by ignoring "code" paths with no actual code.
Bug: 65159159
Test: adb install-multiple config_splits
runtest -x
services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java
Change-Id: Ida1eb901eecba4a4266de73022f6ee4659367873
It is used to serialize access to app restrictions state and reduce
contention on PM lock.
Bug: 65096648
Test: com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testApplicationRestrictions
Change-Id: I87c364e641e511f6cbe1e55f4fa3aa12c453c08f
1. Fix system server crash when resetPasswordWithToken is called before use
unlock, due to DPMS enforces user is unlocked when calculating password
sufficiency.
2. Propogate new password metric from LockSettingsService to DPMS after a
password reset with token, and fix a bug where stale quality was used.
Bug: 64923343
Bug: 64928518
Bug: 65286643
Test: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.ManagedProfileTest#testResetPasswordWithTokenBeforeUnlock
Test: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testResetPasswordWithToken
Test: runtest frameworks-services -p com.android.server.locksettings
Test: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceAdminHostSideTestApi24#testRunDeviceOwnerPasswordTest
Test: runtest frameworks-core -c android.app.admin.PasswordMetricsTest
Test: runtest frameworks-services -c com.android.server.devicepolicy.DevicePolicyManagerTest
Change-Id: Ibb3736547b3b36da4a8a67af711e08a38427aa56
An overlay should not be considered the top activity in a task when
considering a task when launching an activity. Doing so will alter
the behavior of launch modes, such as singleTop and singleTask. In
these cases, the developer has chosen such mode with the expectation
that their task will not have activities from other tasks placed on
top, which is the case for features such as locking a work profile.
This changelist addresses the issue by not considering an overlay to
be the top activity when finding a task based on ActivityRecord.
Fixes: 64839155
Test: bit FrameworksServicesTests:com.android.server.am.ActivityStackTests#testFindTaskWithOverlay
Change-Id: I2684baf6929e5af321404e2eef597f456ff87ee8
- If a PiP enter animation callback is interrupted, the activity is never
actually put into PiP mode, and will never receive
onPictureInPictureModeChanged(false) even if enterPictureInPictureMode()
returns true due to the change being deduped (it was never in that mode).
In this specific case, force a callback to be made to the app so that it
has a signal that it is no longer in PiP mode.
Bug: 63749396
Test: bit FrameworksServicesTests:com.android.server.wm.BoundsAnimationControllerTests
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testEnterPipInterruptedCallbacks
Change-Id: I301c70e4fb0f2175dd6d7b5feae065b41df2878d
These services run on the parent profile and act on
both. Also cean up approval lists on user removal.
Test: manual, runtest systemui-notification
Bug: 64073967
Change-Id: If3d2b36d57e98358bcaf80e7a8885ee7d25c2a4b
Added a test to write and load only low resolution task snapshots if the
snapshot's flag of reducedResolution is set to true. Then verify only
the low resolution bitmap is saved and not the full sized. This is for
the change ag/2579729.
Test: runtest frameworks-services -c
com.android.server.wm.TaskSnapshotPersisterLoaderTest
Bug: 63940837
Change-Id: I685046bdac0cddb9e24271152c91e7912c595e7f
In several places we compute the sha256 of the app's signing certificate
(instant cookie storage, backup account permission grants, static shared
lib matching). It is possible that an app is singed with multiple certs
which unfortunately can appear in a random order. We were using only the
first certificate to compute the hash which may be problematic for apps
signed with multiple certs which are later reordered. If an app update's
certs are reordered for cookie storage the app would not be able to
access the cookie, for account grants the app would not get the grant,
and for shared libs the app would fail to install due to a missing lib.
Test: all cookie CTS tests pass
all static shared lib CTS tests pass
added test that cookie data not lost on sha256 computation change
added test that lib install works when specifying
multiple certs
bug:64270295
Change-Id: Ib6b55f25da735ff5c2762faf6e9b5888e749041d
Flip the return value for ActivityStack.goToSleepIfPossible from true if
something needs to be done to true if the stack successfully went to
sleep. An incorrect check in ActivityStack.checkReadyForSleep was
causing ActivityStackSupervisor to sometimes not get notified when a
stack finished stopping during shutdown. Also, no-delay calls to
ActivityStackSupervisor#checkReadyForSleepLocked would fail to put
activities to sleep.
BUG: 64756886
Test: go/run-boottest
Change-Id: Icec590ed9a0e0f035881b7eb03a280787dcfced1
Now we reject unsigned apps, either source or target. Also
added javadoc.
Bug: 37977154
Test: runtest -p com.android.server.backup frameworks-services
Change-Id: I44df43d5322ae64d97f8b19c20db508033301f91
The top fullscreen window of an app token is the one we use for
determining SystemUI flags normally. Thus, when showing the
snapshot, we need to inherit the flags from the same window.
Test: Open event in Calendar, go home, reopen Calendar app,
observe no status bar icon color change.
Test: go/wm-smoke
Change-Id: I96678000339617c8fc51e72c0f6e2e167f542491
Fixes: 62871307
Previously we were waiting for the activity to become visible before
removing from this list. This can lead to a race condition where the
activity is resumed and the stopping activities are cleaned up. If
the activity has not become visible, the resumed activity will be
stopped.
This CL addresses the issue by removing the activity from the
stopping activities list once resume has completed.
Change-Id: Ic33906327e538920961e60064a6ae976864509be
Fixes: 63804822
Test: bit FrameworksServicesTests:com.android.server.am.ActivityStackSupervisorTests#testStoppingActivityRemovedWhenResumed
- Set parole duration to 0 so that it won't affect app standby test.
- Use a bound service to send commands to test app instead of broadcasts.
- Remove code to install/delete test app as it will be done as part of tests
initialization.
Bug: 38432755
Test: forrest --extra_args='--class com.android.server.net.ConnOnActivityStartTest' \
test FrameworksServicesTests
Change-Id: Ic6cd574a60c4449195f2c8cd4e04b9cb47f225c8
Merged-In: Ic6cd574a60c4449195f2c8cd4e04b9cb47f225c8
- Make activity sleep state independent of power manager wakefulness
state. The state is now entirely dependent on sleep tokens (and the
voice interactor).
- Make sleep tokens operate on a per-display basis (and convert the
keyguard to a sleep token).
- Make ActivityStackSupervisor acquire/release sleep tokens for
non-default displays when the displays are turned on/off.
- Make WindowManagerService.okToDisplay operate on a per-display basis.
Bug: 34280365
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testExternalDisplayActivityTurnPrimaryOff
Test: #testLaunchExternalDisplayActivityWhilePrimaryOff
Test: #testExternalDisplayToggleState
Change-Id: I92086d7006a67b4b4f320c9bb3aa606954f85012
(cherry picked from commit 9440dc87a6)
If the backup comes from a pre O device, don't wipe
preexisting managed service grants (which were introduced
in O).
Test: runtest systemui-notification
Change-Id: Ie569972dc0d076718a3a9c59e1ebd942c5bfa987
Fixes: 64232609
Using final variables when possible, also testing if
overlaping invalidation requests will be posted to
the handler.
Bug: 63585249
Test: runtest -x services/tests/servicestests/src/com/android/server/wallpaper/WallpaperServiceTests.java
Change-Id: I01cdbdfd5313e55d7a58c77f705aea0f6f817518