Commit Graph

10995 Commits

Author SHA1 Message Date
Svet Ganov
d8eb8b2690 Restricted permission mechanism - framework
This change adds a mechanism for restricting permissions (only runtime
for now), so that an app cannot hold the permission if it is not white
listed. The whitelisting can happen at install or at any later point.

There are three whitelists: system: OS managed with default grants
and role holders being on it; upgrade: only OS puts on this list
apps when upgrading from a pre to post restriction permission database
version and OS and installer on record can remove; installer: only
the installer on record can add and remove (and the system of course).

Added a permission policy service that sits on top of permissions
and app ops and is responsible to sync between permissions and app
ops when there is an interdependecy in any direction.

Added versioning to the runtime permissions database to allow operations
that need to be done once on upgrade such as adding all permissions held
by apps pre upgrade to the upgrade whitelist if the new permisison version
inctroduces a new restricted permission. The upgrade logic is in the
permission controller and we will eventually put the default grants there.

NOTE: This change is reacting to a VP feedback for how we would handle
SMS/CallLog restriction as we pivoted from role based approach to roles
for things the user would understand plus whitelist for everything else.
This would also help us roll out softly the storage permisison as there
is too much churm coming from developer feedback.

Exempt-From-Owner-Approval: trivial change due to APi adjustment

Test: atest CtsAppSecurityHostTestCases:android.appsecurity.cts.PermissionsHostTest
Test: atest CtsPermissionTestCases
Test: atest CtsPermission2TestCases
Test: atest RoleManagerTestCases

bug:124769181

Change-Id: Ic48e3c728387ecf02f89d517ba1fe785ab9c75fd
2019-04-07 22:39:54 -07:00
Yohei Yukawa
17c1af439c Fix a bug in RegisterStatusBarResult parceling
This is a follow up CL to my previous CL [1], which introduced
RegisterStatusBarResult to consolidate return values from
StatusBarManagerService#registerStatusBar().

It turns out that the following fields are not correctly unmarshalled.
 - RegisterStatusBarResult#mFullscreenStackBounds
 - RegisterStatusBarResult#mDockedStackBounds

This is because those two fields were written with
Parcel#writeParcelable() while we were reading them directly with
Rect.CREATOR#createFromParcel().  Parcel#writeParcelable() needs to be
used with Parcel#readParcelable() for null handling and custom
class-loader handling.

With this CL, we now read/write these two fields with the following
methods, which can also be used to write/read Parcelable objects in a
bit more simpler style unless as long as we can rely on the default
class-loader.
 - Parcel#writeTypedObject()
 - Parcel#readTypedObject()

This CL also adds unit tests for StatusBarIcon and
RegisterStatusBarResult to make sure that these classes can be sent
over Parcel.

 [1]: Ib1c0ae8f591ca09d0bce7a39f85ba57aad386e47
      49efa718a8

Bug: 122439339
Test: atest FrameworksCoreTests:StatusBarIconTest
Test: atest FrameworksCoreTests:RegisterStatusBarResultTest
Change-Id: I0f41cbcb4c2f1222f18e1e34e3cf40bb0dfdfdb3
2019-04-05 16:53:32 -07:00
TreeHugger Robot
5f75b42b76 Merge "Sharesheet - Content preview polish" into qt-dev 2019-04-05 19:36:23 +00:00
Matt Pietal
832cdbf374 Sharesheet - Content preview polish
1. Add ripple feedback to clipboard copy even though the sharesheet
disappears really fast and you may not see it.
2. Make sure file icon is gray and not influence by the overlay.
3. Default multiple file sharing to file preview area and not image
preview area when there are mixed file types

Bug: 129979196
Test: Visual inspection
Change-Id: Ia86d418ccaca9a122f00dbc3e9c3b30785fb2abd
2019-04-05 13:38:06 -04:00
TreeHugger Robot
7b0c0c7694 Merge "Catch ArrayIndexOutOfBoundsException in StateMachine.toString()" into qt-dev 2019-04-05 15:27:05 +00:00
Matt Pietal
4e2e36323d Sharesheet - Limit EXTRA_INITIAL_INTENTS to 2
Will eventually merge with suggested apps

Bug: 129979509
Test: ChooserActivityTest
Change-Id: I0e5f5a42155c83c77c6f6e355289218bc88033e7
2019-04-05 08:32:47 -04:00
TreeHugger Robot
9620e07e4f Merge "Sharesheet - Fix portrait -> landscape switch" into qt-dev 2019-04-05 05:33:13 +00:00
Quang Luong
abe10b3e62 Catch ArrayIndexOutOfBoundsException in StateMachine.toString()
StateMachine.toString() calls mSmHandler.getCurrentState(). In the
rare case when mStateStackTopIndex is -1 due to the StateMachine being
not yet initalized, this results in an ArrayIndexOutOfBoundsException.

Bug: 124858416
Test: none

Change-Id: Id558be95b6e12d8a923d325bca5f6f6d7f942b22
2019-04-04 13:12:26 -07:00
Matt Pietal
399e8c74ee Sharesheet - Fix portrait -> landscape switch
Calculating the reserved height was using the wrong figures. Expose
the correct reserved alwaysShow height, and use it to determine the
offset for scrolling.

Bug: 120419081
Test: manual, rotate device
Change-Id: I21fd9fa8494a258d17f6002f79967aacc0efde34
2019-04-04 15:49:48 -04:00
Yohei Yukawa
49efa718a8 Introduce a result class for IStatusBarService#registerStatusBar()
This is a preparation to fix an issue that IME cannot enable light
navigation bar on direct-reply.

The initial state of StatusBar client is provided as return values of
IStatusBarService#registerStatusBar().  However, the way for the
client to receive the return values is to rely on "out" parameters in
the Binder method as follows.

    void registerStatusBar(IStatusBar callbacks,
            out List<String> iconSlots,
            out List<StatusBarIcon> iconList,
            out int[] switches,
            out List<IBinder> binders,
            out Rect fullscreenStackBounds,
            out Rect dockedStackBounds);

The issue is that if I want to add a new parameter into
StatusBarManagerService to fix Bug 122439339, then it needs to be
notified back to the client via one of these out values, e.g. a new
element in "switches", which is hard to understand and maintain.

It'd be better to introduce a dedicated return object as follows.

    RegisterStatusBarResult registerStatusBar(IStatusBar callbacks);

This is a purely mechanical code clean-up.  Hence there should be no
behavior change.

Bug: 122439339
Test: presubmit
Change-Id: Ib1c0ae8f591ca09d0bce7a39f85ba57aad386e47
2019-04-04 11:49:02 -07:00
Jorim Jaggi
a6aabacbb5 Force app to draw navigation bar background
For gestural navigation, having a small bar drawn by SystemUI
looks really really weird. Since we force the status bar
background to be drawn in the client, we can also force the
navigation bar background without expecting any compat issues.

Bug: 129751541
Test: Open legacy app, ensure black is drawn in the client
Change-Id: I9cd4c5dd799324ff10bf9d28750e8f238ab1e459
(cherry picked from commit 461bb11371)
2019-04-04 07:27:10 +00:00
Susi Kharraz-Post
0c70be6738 Merge "Add logging for direct share target" 2019-04-04 00:03:56 +00:00
TreeHugger Robot
259c73c007 Merge "Move NetworkStatsFactory into service directory" 2019-04-03 23:44:26 +00:00
Susi Kharraz-Post
14cbfcdbd0 Add logging for direct share target
To answer the question if users share mainly with 1 or 2 direct targets
or with a multitude of contacts, we need to log the direct target +
package name. For privacy, this gets hashed with a salt that expires by
default every 7 days. The PH flag will allow us to change the expiration
time if we obtain PWG permission for that.

Bug: 126365511
Test: New test in ChooserActivityTest + manual testing of consistency
and flag rollout using adb shell device_config put systemui
hash_salt_max_days with multiple values

Change-Id: Ib4255b3eb39ca91ccb5803dc036ffe0ea83a27c9
2019-04-03 17:54:25 -04:00
Chenbo Feng
061cec7755 Move NetworkStatsFactory into service directory
In order to notify netd to swap eBPF maps before pulling the
networkStats from eBPF maps, NetworkStatsFactory need to use the
NetdServices to issue binder calls. So it need to be moved from
framework/base/core to framework/base/service since object in
framework/base/core cannot get any system services. This change is also
necessary for setting up a lock inside NetworkStatsFactory to prevent
racing between two netstats caller since the lock need to be hold before
netd trigger the map swap.

Also fix the compile problem caused by moving the NetworkStatsFactory
and the related tests. Rename the packages and the jni functions to a
more proper name.

Bug: 124764595
Bug: 128900919
Test: NetworkStatsFactoryTest
      android.app.usage.cts.NetworkUsageStatsTest
      android.net.cts.TrafficStatsTest

Change-Id: Ifcfe4df81caf8ede2e4e66a76552cb3200378fa8
2019-04-03 14:28:41 -07:00
Chris Wailes
6d482d541e Adds Zygote.initNativeState
This patch replaces three seperate native initialization functions with
a single function, reducing the number of times we need to cross the JNI
boundary.  In addition this loads an empty performance profile for the
zygote to address b/129704892.

Bug: 129704892
Test: make & boot
Test: Treehugger
Change-Id: I0413f554e0963a714e0b4de3196d31ffe6775a3a
2019-04-03 13:42:35 -07:00
Jean-Michel Trivi
c6d7460140 Merge "PlayerBase: conditional muting on OP_PLAY_AUDIO changes" 2019-04-03 19:58:59 +00:00
TreeHugger Robot
03a8c09514 Merge "Remove obscure check that was always true" 2019-04-03 18:19:02 +00:00
Misha Wagner
2d0caa4946 Change KernelCpuThreadReader frequency bucketing to work with >2 core clusters
Change-Id: I470dc055b9b1eb07913280fc269fbdadb259b4db
Test: atest KernelCpuThreadReaderTest
2019-04-03 16:24:22 +01:00
Jorim Jaggi
cd5046c382 Remove obscure check that was always true
This condition never made any sense because we checked the
systemUiVisibility field for a WindowManager flag. Instead of
trying to fix it, let's just remove the check to keep the
behavior.

Test: boots
Bug: 129751541
Change-Id: Ib0ace4d47f5623b32430a8a7e4f25f5a259451ea
2019-04-03 13:58:14 +00:00
Amith Yamasani
282420fe7b Merge "Avoid elevating apps to high proc states on binding" 2019-04-03 05:50:28 +00:00
jianjin
332d1a9e01 Logging atom TOMB_STONE_OCCURRED when a tombstone file added to dropbox.
Bug: 126127632
Change-Id: I09b8649e0b53bce13b7a42c80b06bf354196e9af
Fix: 126127632
Test: manually test by triggering tombstone and check statsd log
2019-04-02 14:27:32 -07:00
TreeHugger Robot
452d42f517 Merge "Pick the primary color as the best color to use." 2019-04-02 20:53:39 +00:00
Robert Snoeberger
a6684f6713 Pick the primary color as the best color to use.
Previously, the best color was picked by checking the colors
against the blacklist. The logic was for picking the best color
was broken When the blacklist was removed for
b/124180048.

Fixes: b129762944
Test: New test points added to TonalTest.java
Change-Id: Ie51806735910bb40e5e66d7baf545ea213e4a01e
2019-04-02 15:15:38 -04:00
jianjin
8f2dee04e2 Create and log atom SystemServerWatchdogOccurred, TombStoneOccurred.
Bug: 126127632
Change-Id: I1e78069589185a4702d65cd026bc44b374a31f0a
Fix: 126127632
Test: none
2019-04-02 11:05:45 -07:00
TreeHugger Robot
d5c80f29cd Merge "Sharesheet - Give shortcut api results priority" 2019-04-02 17:53:24 +00:00
Amith Yamasani
f235d0b53a Avoid elevating apps to high proc states on binding
For service and provider bindings from TOP and
FOREGROUND_SERVICE apps, don't elevate bound apps
to above BOUND_FOREGROUND_SERVICE.

For service bindings, it is possible to explicitly
request the binding to match the foreground app
such that the bound app can get similar privileges
of foreground permissions.

For instance, when a foreground service has a location
type, providers it binds to don't automatically get the
location privilege. On the other hand, sometimes apps
showing UI want to treat their dependencies also as if
they are showing UI.

This change does not affect the oom_adj calculation,
only the proc state calculation for bound processes.

New BIND_INCLUDE_CAPABILITIES flag can be used to restore old
behavior for bound services.

Introduces a new state PROCESS_STATE_BOUND_TOP

Bug: 128337543
Test: atest CtsAppTestCases:ActivityManagerProcessStateTest

Change-Id: I13733e7f43a78903299254bc110cd8f7a8db4c40
2019-04-02 10:27:03 -07:00
TreeHugger Robot
43aae704a4 Merge "Sharesheet - Photos -> Sharesheet in work profile crashes" 2019-04-02 16:20:23 +00:00
Matt Pietal
fbfa049856 Sharesheet - Give shortcut api results priority
Limit the direct share list to MAX_SERVICE_COUNT and discard any
results over that. Do not furthur rank results from App Prediction
Service, and also give other shortcut results priority over older
direct share targets

Bug: 126568576
Test: atest ChooserActivityTest
Change-Id: I2e2d53134273583a504c71ae4daa9f1db951b164
2019-04-02 11:07:18 -04:00
TreeHugger Robot
01f1178bab Merge "Fix sharesheet permissioned icon loading bug" 2019-04-02 14:32:11 +00:00
Matt Pietal
51ea0d68cc Sharesheet - Photos -> Sharesheet in work profile crashes
The issue stems from adding the incorrect userid when first entering
the sharesheet. The flow from Photos sendkit directly to the work
profile sharesheet was setting the incorrect userid on the content
uris. Move this logic to the correct location.

Bug: 129280812
Test: Manually retest Photos->Share->Work Profile->Chat
Change-Id: I3660684336450172852cf86bea1f3c60cf15aa87
2019-04-02 10:10:22 -04:00
Misha Wagner
ab922b13cd Merge "Add diffing to KernelCpuThreadReader" 2019-04-02 13:19:49 +00:00
Steven Moreland
0ec1b0f9de Merge "Revert "Revert "Preload non-bootclasspath Java lib ClassLoaders.""" am: 4b5ca28dfe am: 4e709ea3fd
am: 96724b57ae

Change-Id: I3de2f4b4fb092d0db5001209d68ea217e150b8da
2019-04-01 20:14:55 -07:00
Steven Moreland
96724b57ae Merge "Revert "Revert "Preload non-bootclasspath Java lib ClassLoaders.""" am: 4b5ca28dfe
am: 4e709ea3fd

Change-Id: Ia5b6280f17a67f0fa791f36544a77e2af99e7e0e
2019-04-01 19:50:13 -07:00
Steven Moreland
4e709ea3fd Merge "Revert "Revert "Preload non-bootclasspath Java lib ClassLoaders."""
am: 4b5ca28dfe

Change-Id: I63fa6d4a8671db24bf9fce898414c27068547ed2
2019-04-01 19:38:43 -07:00
Steven Moreland
4b5ca28dfe Merge "Revert "Revert "Preload non-bootclasspath Java lib ClassLoaders.""" 2019-04-02 02:19:44 +00:00
Philip P. Moltmann
129a0b0c5e Remove dual storage permission model
- Also remove typed media permissions
- Leave typed media app-ops

Bug: 129716569
Test: Used apps, looked at permissions in the UI
Change-Id: If7714fb1a6955584157e1a60ab72b09e35287827
2019-04-01 16:30:11 -07:00
Mike Digman
c0ef5542ad Fix sharesheet permissioned icon loading bug
In some cases, returned ResolveInfo may not have a set icon but
it will always have an associated ActivityInfo. Fall back to
that ActivityInfo when no icon is set. Permissioned apps now
properly have their icon fetched.

Fixes: 129460747
Fixes: 125908050
Test: manual
Change-Id: I624b1d455106c987b1e3f6623ef9e69d22882e59
2019-04-01 22:48:24 +00:00
TreeHugger Robot
833207566c Merge "Sharesheet - Make UI more responsive to touches when loading" 2019-04-01 15:26:05 +00:00
Matt Pietal
af044aefd9 Sharesheet - Make UI more responsive to touches when loading
ListView will try to prevent errant touches while data is being
loaded. With Sharesheet, this can happen quite frequently so 1:
eliminate unnecessary notifyDataSetChanged calls and 2: batch up the
remaining calls and release a single call on an interval.

Bug: 126568576
Test: atest ChooserActivityTest && atest ResolverActivityTest
Change-Id: I3207f207910a0c9223a1b562243d9db612f93b0a
2019-04-01 08:52:42 -04:00
Winson Chiu
fbe87233d5 Merge changes from topic "code-paths-and-resources-caching-fix"
* changes:
  Revert ContextImpl LoadedApk packageInfo caching workaround
  Fix AssetManager2 isUpToDate check
  Diff resource dirs when checking LoadedApk packageInfo cache in ActivityThread
  Diff overlays between PackageManagerService and OverlayManagerService
  Propagate base code path and split dir changes to Resources objects
2019-03-29 23:50:02 +00:00
Steven Moreland
bdc2702cdf Revert "Revert "Preload non-bootclasspath Java lib ClassLoaders.""
This reverts commit d3c2bc5a4e.

Reason for revert: reland fix
Bug: 128529256

Change-Id: I0647d4242406e31348a68ebba328e5f8ad750144
2019-03-29 21:52:32 +00:00
TreeHugger Robot
bc9f5a518d Merge "Show updated labels for apps and DS in Sharesheet" 2019-03-29 18:32:33 +00:00
Mike Digman
ba23268fe2 Show updated labels for apps and DS in Sharesheet
Shows activity and app label for all share targets except those
with the right permission. Shows 2 wrapping lines as a label for
all direct share targets. Brings grid item layout closer to spec.
Fixes several associated bugs.

Fixes: 125908050
Test: included label test, manual
Change-Id: I5c2cc0700b59911d79aebf2582176497c30bf85c
2019-03-29 09:06:53 -07:00
Felipe Leme
afbba9fb36 Checks package name belongs to called UID on some content capture methods.
Also refactored how the SecurityException is thrown back to the caller app.

Bug: 122959591
Test: manual verification
Test: atest CtsContentCaptureServiceTestCases # sanity check (minus usual flakiness)

Change-Id: I4d2a68e61dc1c801d80734a30f4bbe6fdae8555d
2019-03-28 19:31:52 -07:00
Felipe Leme
a8d33c24f8 Implemented ContentCaptureConditions APIs.
Test: atest ContentCaptureConditionTest \
       CustomViewActivityTest#testContentCaptureConditions \
       CustomViewActivityTest#testContentCaptureConditions_otherPackage
Test: atest CtsContentCaptureServiceTestCases # sanity check (minus usual flakiness)

Fixes: 129266058

Change-Id: I199c3ae99fa6b407da64562a71d8d7581ebf80e6
2019-03-28 18:48:31 -07:00
Varun Anand
112b8bd6c5 Merge changes from topic "vpn_data_accounting" am: 6c93e5378a
am: 09ef7691f5

Change-Id: If4fff1b4d14e80e024ce7b1aa85ebd3afcb1ecc2
2019-03-28 18:16:37 -07:00
Varun Anand
09ef7691f5 Merge changes from topic "vpn_data_accounting"
am: 6c93e5378a

Change-Id: Iaa4b2dd9be2fc6e9833c6c846b6858aab507ca8b
2019-03-28 18:06:12 -07:00
Varun Anand
6c93e5378a Merge changes from topic "vpn_data_accounting"
* changes:
  Move BatteryStats and StatsCompanionService to use NetworkStatsService.
  NetworkStatsService: Fix getDetailedUidStats to take VPNs into account.
  Take all VPN underlying networks into account when migrating traffic for VPN uid.
2019-03-29 00:40:53 +00:00
TreeHugger Robot
f83f8ee39a Merge "Fixed ContentCapture and AugmentedAutofill methods that should not hold the main lock..." 2019-03-28 17:32:49 +00:00