Commit Graph

20911 Commits

Author SHA1 Message Date
TreeHugger Robot
a3bbe5e654 Merge "Handle exact alarm permission state changes" into sc-dev am: cd140900ed
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14922432

Change-Id: I2addb59237d412f31c66ad1f3006d83784b8c71e
2021-06-14 21:54:16 +00:00
TreeHugger Robot
d68e4d13d9 Merge "Register the DexLoadReporter before creating the main class loader" into sc-dev am: c03205e2dc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14966790

Change-Id: I7c81c6696c01714be0ac7a22d3300921058731a5
2021-06-14 21:52:57 +00:00
TreeHugger Robot
cd140900ed Merge "Handle exact alarm permission state changes" into sc-dev 2021-06-14 21:43:49 +00:00
Calin Juravle
60f7b38892 Register the DexLoadReporter before creating the main class loader
We used to register the DexLoadReporter after the main class loader
was created. That was done to avoid superfluous reports of the app's
primary apks (since we already know about them).

However that also means that if the app would start as an isolated
process we would miss this signal in the DexManager.

Make sure we get signals for isolated processes by registering the
reporter before we create the main class loader.

Test: manual, using chrome and maps go
adb shell cmd package compile -m speed-profile com.android.chrome
adb shell am start -n \
com.google.android.apps.mapslite/com.google.maps.lite.twa.MapsLiteTwaLauncherActivity
adb shell dumpsys package dexopt
(confirm that chrome is used by an isolated process)
adb shell cmd package compile -m speed-profile com.android.chrome
(confirm that chrome is speed compiled - or verify, based on the device
setting)

Bug: 163018062
Merged-In: I5d683ae85b3973cc2011dd33b4cb14837b18005f
Change-Id: I5d683ae85b3973cc2011dd33b4cb14837b18005f
(cherry picked from commit 875888eff3)
2021-06-14 16:51:39 +00:00
Kholoud Mohamed
4dd90319ad Merge "Fix security vulnerability in DPMS" into sc-dev am: 58d0a17836
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14919135

Change-Id: I177845b6dbdde307752cd0af5b84bfc1b5a5e768
2021-06-14 09:29:46 +00:00
Kholoud Mohamed
58d0a17836 Merge "Fix security vulnerability in DPMS" into sc-dev 2021-06-14 09:11:57 +00:00
Suprabh Shukla
c3f067c103 Handle exact alarm permission state changes
The permission SCHEDULE_EXACT_ALARM state changes at the following
boundaries:
 1. App-op: This gets toggled by the user via Settings.
 2. Deny-list: Packages can be added to the deny list via DeviceConfig
 APIs.
 3. Package changes: A package's manifest may changes when it gets
 updated.

In both cases 1 and 2, if alarm manager detects a permission change
from revoked to granted, it sends the
ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED broadcast to the
app.
If it detects a permission change from granted to revoked, it kills
all the processes within the hosting uid.
In all three cases, when the permssion changes from granted to revoked,
all the exact alarms scheduled by the relevant package are removed.
Package updates are treated differently as they require processes to
restart anyway. The broadcast is not needed in this case as there
are no alarms expected to have been lost by a previous revocation, and
apps can always use ACTION_MY_PACKAGE_REPLACED for post-update setup as
usual.

All this only applies to packages that have the change
REQUIRE_EXACT_ALARM_PERMISSION enabled.

Also changed canScheduleExactAlarms to return false if the change is not
enabled for the calling package.

Test: atest FrameworksMockingServicesTests:AlarmManagerServiceTest
atest CtsAlarmManagerTestCases

Bug: 179541791
Bug: 187206399
Change-Id: Icd68275701f2804be65b3a10a7dd81bbf6e2a0bb
2021-06-13 16:55:21 -07:00
Erik Wolsheimer
b6467b2670 Merge "Store whether attribution tag is valid separate from bypass" into sc-dev am: 6d3212e617
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14955197

Change-Id: I76343eccc841fe097596ab14d02a39b487658704
2021-06-13 03:29:09 +00:00
Erik Wolsheimer
947cb752b8 Store whether attribution tag is valid separate from bypass
Bug: 189484870
Bug: 190073375
Test: Manual
Change-Id: Iccc0e887d28c837a8ef4099af611794590af25c5
2021-06-12 16:36:57 -07:00
Ryan Mitchell
7feeebf128 Merge "Fix RRO handleConfigurationChanged race condition" into sc-dev am: 55128109d9
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14923667

Change-Id: Ic3d6aee13bdf09cbff6bb74bab70071268fdbe50
2021-06-10 19:52:55 +00:00
Ryan Mitchell
55128109d9 Merge "Fix RRO handleConfigurationChanged race condition" into sc-dev 2021-06-10 19:49:40 +00:00
Pavel Grafov
b45b862d36 Merge "Don't reset user VPN without reason" into sc-dev am: c0115519f6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14717702

Change-Id: Ic2ebf54458f7f5cf5e500093e150756231073a11
2021-06-10 15:45:18 +00:00
Ryan Mitchell
119a7f5591 Fix RRO handleConfigurationChanged race condition
Retrieval of the system and system UI themes should be done with the
ResourcesManager lock held to ensure the theme retrieved has the new
overlays applied.

Bug: 189100984
Test: manual
Change-Id: Ibe27ec745ea5a914d3d05e393598a336d96a55e6
2021-06-10 08:41:17 -07:00
Pavel Grafov
c0115519f6 Merge "Don't reset user VPN without reason" into sc-dev 2021-06-10 15:31:04 +00:00
kholoud mohamed
342fd83483 Fix security vulnerability in DPMS
Changed DPMS#isPackageAllowedToAccessCalendarForUser to always require
INTERACT_ACROSS_USERS/_FULL permission if called for a different uid
than the calling uid.

Test: atest com.android.server.devicepolicy.DevicePolicyManagerTest
Bug: 187043716
Change-Id: I230bbffbdf97c251c8a40add097b3b4254d39452
2021-06-10 13:49:25 +00:00
James O'Leary
4084659caf Merge changes from topics "quantizer_improved_logic", "reintroduce_scaling_fixes" into sc-dev am: e0970984c8
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14802974

Change-Id: I99e2facf17062876ac1501384ddb9dbbd26a3ef8
2021-06-09 22:30:49 +00:00
James O'Leary
e0970984c8 Merge changes from topics "quantizer_improved_logic", "reintroduce_scaling_fixes" into sc-dev
* changes:
  Quantize image to 128 colors instead of 5
  Quantizer improvements
  Sort colors from high count => low count
  Don't interpolate image input to quantizer
  Cache set wallpaper as PNG instead of JPEG
  Only rescale wallpaper if its > display height
2021-06-09 22:23:24 +00:00
Julia Reynolds
8c497473a0 Merge "Update logic about parent and convo channels" into sc-dev am: b87598c3cc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14907947

Change-Id: Idb384f25f51a07c352b3c77df43edd20c20868bb
2021-06-09 18:04:04 +00:00
James O'Leary
bf1b65be0e Quantize image to 128 colors instead of 5
Quantizing an image to five colors results in an extreme amount of
averaging of colors, leading to low chroma colors and erasing colors
from the image that the eye gravitates towards.

Coupled with a change to ensure there's still a broadly accurate signal
of a given cluster's population of the image, via summing the population
of all the clusters close to the hue of the cluster, and with proof that
having this many data points doesn't lead to instability in results,
we gain access to a much larger variety of colors. This gives room to
add heuristics to avoid 'bad' colors, as well as increase the
number of colorful colors we offer.

Bug: 189931209
Test: Test tons and tons of wallpapers over a couple days.
Change-Id: Ifc2d9393039194c151920536b9217ae9636ff0d6
2021-06-09 13:33:41 -04:00
James O'Leary
d1bc261d8d Quantizer improvements
The original versions of these quantizers landed a couple months back,
and they were fine. Since then, we've had several opportunities to
iterate on them. This change lands improvements from those iterations.
TL;DR: 18% faster, big bug fix to WSMeans, code is cleaner (hopefully)

- QuantizerMap indexes an image's pixels, 'unique-ing' them by reducing
the pixel array to a map with keys of colors, and values of population.
This allows other quantizers to operate much more quickly: instead of
working on each pixel individually, they're able to operate in bulk.
- QuantizerWu uses flat arrays instead of 3D arrays and is more
understandable IMHO.
- QuantizerWsmeans has speed improvements, most importantly, it has a
big bug fix. When a Kmeans-based quantizer algo starts, it must first
assign the pixels to any one of the starting clusters. The original
implementation decided what cluster to assign a pixel to by finding the
cluster closest to the pixel. However, the algo terminates if no pixels
moved after one iteration of the algorithm, and since the pixels were
already in the cluster closest to them, the algo would immediately
terminate before it actually figured out where the cluster moved to
after pixels were assigned to it, and had a chance to move pixels around
based on that.
- Funnily enough, even though this _should_ mean Wsmeans got a lot
slower since it has to do more iterations, it is actually 16% faster

Additionally, during review of this CL:
An accidental dependency on iteration order of a Set was introduced,
causing inconsistent initialization of the mPoints array, creating
inconsistent results from the quantizer.

Removing the dependency on hashes of float[], and avoiding Maps
altogether, removes a dependency on hash codes of pointers that existed
during review, making it easier to have verifiable consistency across
iterations. This also improves speed slightly, from 55 ms to 39 ms
(tested on sunfish, first 9 wallpapers in Landscapes, City Scapes, and
Art categories, and averaged)

Bug: 189931209
Test: ran performance tests with VariationalKMeansQuantizer,
the previous Celebi = Wu + Wsmeans quantizer, and the new Celebi =
new Wu + new Wsmeans quantizers, over 100 iterations. Wu speed is
roughly the same, Wsmeans is 18%. Verified quantizer output is stable
for the same input pixels, run 100,000 times for each of two wallpapers.
Change-Id: I3324d29860c098ea1fd602b8d4197837e732f4f1
2021-06-09 13:33:41 -04:00
Julia Reynolds
b87598c3cc Merge "Update logic about parent and convo channels" into sc-dev 2021-06-09 17:33:23 +00:00
Rubin Xu
3221b1b8d2 Merge "Allow any apps to call DPM.isUsbDataSignalingEnabled()" into sc-dev am: b9be267361
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14807577

Change-Id: I68969e2b7b7131dd35474d2f4a9dae4164d8461a
2021-06-09 16:15:20 +00:00
Rubin Xu
b9be267361 Merge "Allow any apps to call DPM.isUsbDataSignalingEnabled()" into sc-dev 2021-06-09 15:54:21 +00:00
James O'Leary
70cfb49c65 Sort colors from high count => low count
The colors were being sorted by population ascending, sorting by
population descending fixes a long-standing flaky test that became
a 100% reproducible failure once scaling fixes were introduced.

The test failure that caught this is CTS' WallpaperManagerTest's method
wallpaperColors_secondary. It creates a bitmap that is mostly red, with
a smaller area of blue.

Before the set of 4 CLs in this topic, when the wallpaper was downscaled
by WallpaperManager, it introduced new colors to the wallpaper due to
bilinear filtering and JPEG compression. With the new colors introduced
by scaling, the least popular color was blue enough to pass
WallpaperManagerTest's wallpaperColors_primary method, and the 2nd least
popular color was red enough to pass wallpaperColors_secondary.

With CLs for consistent image input to quantizers, namely 2 CLs, cache
wallpaper as PNG instead of JPEG, and only rescale the wallpaper if it
is greater than the display height, the scaling/JPEG artifacts are not
introduced, which then exposes the bug that primary/secondary were the
least popular/2nd least popular colors in the image, instead of the
most popular/2nd most popular, as intended.

Bug: 188373181
Test: atest CtsAppTestCases:android.app.cts.WallpaperManagerTest
#wallpaperColors_secondary --, use helper methods to store
the bitmap after downscaling to confirm introduction of new colors
before other CLs in this topic, use go/monetstudio to confirm
quantization results from that downscaled image. Check test against
all 4 CLs, confirm test starts failing once "Only rescale wallpaper if
its > display height" CL is introduced.

Change-Id: I143f824fbd961b81604d427a0570b3a171bdeb79
2021-06-09 11:31:57 -04:00
James O'Leary
87c669d959 Don't interpolate image input to quantizer
With `false`, nearest neighbor is used during scaling, with `true`,
bilinear interpolation is used. Bilinear interpolation can introduce
colors that weren't in the original image (ex. overemphasizing red/brown
highlights in a mostly B+W image of the Mandolorian). Better to avoid
that.

Bug: 189931209
Test: Test tons and tons of wallpapers over a couple days.
Change-Id: I425f95793ca593dbbc5008ef59f4baedaea318a6
2021-06-09 11:31:57 -04:00
Julia Reynolds
99a5975af8 Update logic about parent and convo channels
To handle the case where an app sends a notification directly
to a custom channel, and to properly show priority markings
on conversation tiles

Test: atest; manually ensure convo tiles are marked as priority
Fixes: 184709662
Change-Id: I8f9b6169943da5670bc09fd16bbe692fd43d2cf6
2021-06-09 14:28:17 +00:00
Pavel Grafov
d406212ac2 Don't reset user VPN without reason
When DPM.setAlwaysOnVpn is called with package=null, it resets
any VPN configured by the user. With this change it won't happen
anymore: it will only reset VPN configuration if it was previously
configured by the admin.

If an admin actually wants to remove any user configured VPN, they
can enforce DISALLOW_CONFIG_VPN restriction which will remove any
user VPNs and will prevent the user from configuring a new one.

+ Also make sure that when the DPC removes an always-on VPN
configuration, the package loses ability to start VPN until the
user authorizes it again.

Bug: 139823667
Test: atest com.android.server.devicepolicy.DevicePolicyManagerTest
Change-Id: Ia703015b4e8d7eaf156358d7eb000d6f58d32238
2021-06-09 14:22:01 +01:00
Rubin Xu
4d68ae240b Allow any apps to call DPM.isUsbDataSignalingEnabled()
This is to allow 3p apps to query the state of the policy so they
can show appropriate UX to the user in case the app's interaction
with the plugged-in USB devices is  disrupted by the admin policy.

Bug: 190024751
Test: atest FrameworksServicesTests:DevicePolicyManagerTest
Change-Id: I829ff84256e0288b88c11add53da312ee2bc2558
2021-06-09 10:13:21 +01:00
Tom Natan
68fe52d5de Merge "Rename PlatformCompat#setOverridesOnReleaseBuilds to putOverridesOnReleaseBuilds." into sc-dev am: 5977f60c19
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14424456

Change-Id: I01263c401fd743cd13d54a1b946dc36ad0833dce
2021-06-08 18:35:34 +00:00
TreeHugger Robot
e89022ba88 Merge "Preventing component spoofing during getShortcutIntent" into sc-dev am: f59889a08f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14669179

Change-Id: I8620425f62db19ca748202903a64883734932925
2021-06-08 18:35:16 +00:00
Tom Natan
5977f60c19 Merge "Rename PlatformCompat#setOverridesOnReleaseBuilds to putOverridesOnReleaseBuilds." into sc-dev 2021-06-08 18:23:42 +00:00
TreeHugger Robot
f59889a08f Merge "Preventing component spoofing during getShortcutIntent" into sc-dev 2021-06-08 18:21:21 +00:00
tomnatan
1752194766 Rename PlatformCompat#setOverridesOnReleaseBuilds to putOverridesOnReleaseBuilds.
Bug: 190495884
Test: atest FrameworksServicesTests:PlatformCompatTest
Change-Id: I0b84732b5639b199f11b50b993ed3da4b3df1eda
2021-06-08 15:45:16 +00:00
Kholoud Mohamed
f0f3ab11ea Merge "Fix security vulnerability in DPMS" into sc-dev am: 209f21d2ae
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14881810

Change-Id: Icd65a15266764566d6c6b869b665b4cd4eea6e5d
2021-06-08 13:27:12 +00:00
Kholoud Mohamed
209f21d2ae Merge "Fix security vulnerability in DPMS" into sc-dev 2021-06-08 13:17:37 +00:00
Wei Sheng Shih
e80879f307 Merge "Introduce setSplashscreenStyle to specify splash screen style." into sc-dev am: 6b0741b3fe
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14609925

Change-Id: I4fb4f4a78d02a77ee6df4450dfc84366c1eb513e
2021-06-08 12:29:50 +00:00
Wei Sheng Shih
6b0741b3fe Merge "Introduce setSplashscreenStyle to specify splash screen style." into sc-dev 2021-06-08 12:16:24 +00:00
wilsonshih
72a03ff774 Introduce setSplashscreenStyle to specify splash screen style.
Provide a method ActivityOptions#setSplashscreenStyle to specify
splash screen style if needed.

If not set, the default option will be empty-style splash screen, so
without any other change, the activity launched from systemui with
ActivityOptions will become empty style splash screen.

Bug: 188023621
Bug: 189293785

Test: manual test start application from Launcher and Notification.

Change-Id: I299320db8f32fbd835c7ec0acaad3df3486a13f5
2021-06-08 12:21:27 +08:00
Chris Tate
44fcdcf67c Merge "Improve test flakiness around FGS notifications" into sc-dev am: 86ed597d51
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14829740

Change-Id: I2066658d9c502aea0357653240ae5c62e558ba4a
2021-06-07 18:19:40 +00:00
kholoud mohamed
54dc06ab99 Fix security vulnerability in DPMS
Changed DPMS#getCrossProfileCalendarPackagesForUser to always require
INTERACT_ACROSS_USERS or INTERACT_ACROSS_USERS_FULL.

Bug: 187043444
Test: N/A
Change-Id: I53300bfe2e0481df0d473cc73a85857b5603a45e
2021-06-07 16:05:20 +01:00
Christopher Tate
9396c029ac Improve test flakiness around FGS notifications
Make sure that even transient package-associated state is cleared when
the package is uninstalled, and provide a testing hook for instrumenting
global rate limits appropriately to high-rate test sequences.

Bug: 190019349
Test: atest CtsAppTestCases:android.app.cts.ServiceTest
Test: atest CtsAppTestCases:android.app.cts.NotificationManagerTest
Change-Id: Ic38157c6f21bcf09bcf74de591e41dc64f7bf0f7
2021-06-03 16:34:26 -07:00
Chris Tate
93ea932a79 Merge "Fix FGS enter/exit statslog semantics" into sc-dev am: d3a0befee4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14823656

Change-Id: If1732896ca228b9417b1b186b9e3dd445194b7dd
2021-06-03 22:32:48 +00:00
Chris Tate
d3a0befee4 Merge "Fix FGS enter/exit statslog semantics" into sc-dev 2021-06-03 22:19:23 +00:00
Jeff DeCew
00a5a9773e Merge "Fix background color (again)" into sc-dev am: 7b96af705c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14805377

Change-Id: I34f0ec1c0cd8e172ad717f64d8af57004e957e33
2021-06-03 19:38:41 +00:00
Jeff DeCew
7b96af705c Merge "Fix background color (again)" into sc-dev 2021-06-03 19:32:50 +00:00
Jeff DeCew
d64a7d3594 Merge "Notification layout fixes:" into sc-dev am: 10de71a380
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14805134

Change-Id: I216b323adfc4c470a0aaf9f1690a6a1da6467314
2021-06-03 16:34:17 +00:00
Christopher Tate
29f1852efd Fix FGS enter/exit statslog semantics
Logging wasn't quite right in the case of deferred FGS notification in
various ordering scenarios.

Bug: 189926836
Test: atest CtsStatsdAtomHostTestCases:android.cts.statsdatom.statsd.UidAtomTests#testForegroundServiceState
Change-Id: I650730db9e01faa90a36a73b486464ab5b179fc6
2021-06-03 09:28:07 -07:00
Jeff DeCew
10de71a380 Merge "Notification layout fixes:" into sc-dev 2021-06-03 16:16:25 +00:00
Jeff DeCew
ea4b3a56b4 Fix background color (again)
* originally fixed in ag/14189045
* regressed in ag/14140988

Bug: 185920837
Test: post conversation notifications, and look at badge or face pile background; should match notification background
Change-Id: I8ef77901ed9d43eccf89dcc1f3905f0dbb38851f
2021-06-03 11:18:35 -04:00
Svetoslav Ganov
0f79c4da88 Merge "Switch media fw permissions checks to AttributionSource" into sc-dev am: 1028eb2f62
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14664152

Change-Id: I7f3c14e427b1ef0cb0232c0f0194bfbaa23b7706
2021-06-03 07:17:56 +00:00