If a system component calls to a remote provider, and that provider hangs, we end up burning that Binder thread until the remote process is killed for some unrelated reason. This change adds an API to detect these hangs, and kill the remote process after a specific timeout, but only when the caller holds a permission that lets them kill other apps. Bug: 117635768 Test: atest android.content.cts.ContentResolverTest Change-Id: I81b0d993d9d585cdeb5e2559c68052ba6cbbced9
217 lines
13 KiB
XML
217 lines
13 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
/*
|
|
* Copyright (C) 2015 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
-->
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
package="com.android.shell"
|
|
coreApp="true"
|
|
android:sharedUserId="android.uid.shell"
|
|
>
|
|
|
|
<!-- Standard permissions granted to the shell. -->
|
|
<uses-permission android:name="android.permission.SEND_SMS" />
|
|
<uses-permission android:name="android.permission.READ_SMS" />
|
|
<uses-permission android:name="android.permission.CALL_PHONE" />
|
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
|
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
|
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
|
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
|
|
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
|
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
|
|
<uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
|
|
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
|
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
|
<uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS" />
|
|
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
|
|
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
|
|
<uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
|
|
<uses-permission android:name="android.permission.MANAGE_USB" />
|
|
<uses-permission android:name="android.permission.USE_RESERVED_DISK" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
|
<!-- System tool permissions granted to the shell. -->
|
|
<uses-permission android:name="android.permission.REAL_GET_TASKS" />
|
|
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
|
|
<uses-permission android:name="android.permission.REORDER_TASKS" />
|
|
<uses-permission android:name="android.permission.REMOVE_TASKS" />
|
|
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
|
|
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
|
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
|
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
|
|
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
|
<uses-permission android:name="android.permission.MANAGE_ACCESSIBILITY" />
|
|
<!-- Development tool permissions granted to the shell. -->
|
|
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
|
|
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
|
|
<uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
|
|
<uses-permission android:name="android.permission.DUMP" />
|
|
<uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES" />
|
|
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
|
<!-- Internal permissions granted to the shell. -->
|
|
<uses-permission android:name="android.permission.FORCE_BACK" />
|
|
<uses-permission android:name="android.permission.BATTERY_STATS" />
|
|
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
|
|
<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
|
|
<uses-permission android:name="android.permission.INJECT_EVENTS" />
|
|
<uses-permission android:name="android.permission.RETRIEVE_WINDOW_CONTENT" />
|
|
<uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER" />
|
|
<uses-permission android:name="android.permission.READ_INPUT_STATE" />
|
|
<uses-permission android:name="android.permission.SET_ORIENTATION" />
|
|
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
|
<uses-permission android:name="android.permission.MOVE_PACKAGE" />
|
|
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
|
|
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
|
|
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
|
|
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
|
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
|
|
<uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
|
|
<uses-permission android:name="android.permission.DEVICE_POWER" />
|
|
<uses-permission android:name="android.permission.POWER_SAVER" />
|
|
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
|
|
<uses-permission android:name="android.permission.BACKUP" />
|
|
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />
|
|
<uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
|
|
<uses-permission android:name="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" />
|
|
<uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" />
|
|
<uses-permission android:name="android.permission.REVOKE_RUNTIME_PERMISSIONS" />
|
|
<uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" />
|
|
<uses-permission android:name="android.permission.SET_KEYBOARD_LAYOUT" />
|
|
<uses-permission android:name="android.permission.GET_DETAILED_TASKS" />
|
|
<uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" />
|
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
|
|
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
|
|
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
|
|
<uses-permission android:name="android.permission.CREATE_USERS" />
|
|
<uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />
|
|
<uses-permission android:name="android.permission.ACCESS_LOWPAN_STATE"/>
|
|
<uses-permission android:name="android.permission.CHANGE_LOWPAN_STATE"/>
|
|
<uses-permission android:name="android.permission.READ_LOWPAN_CREDENTIAL"/>
|
|
<uses-permission android:name="android.permission.BLUETOOTH_STACK" />
|
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
|
<uses-permission android:name="android.permission.RETRIEVE_WINDOW_TOKEN" />
|
|
<uses-permission android:name="android.permission.FRAME_STATS" />
|
|
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
|
|
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
|
|
<uses-permission android:name="android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS"/>
|
|
<uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" />
|
|
<uses-permission android:name="android.permission.CHANGE_APP_IDLE_STATE" />
|
|
<uses-permission android:name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" />
|
|
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
|
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
|
|
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
|
|
<uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
|
|
<uses-permission android:name="android.permission.REGISTER_CONNECTION_MANAGER" />
|
|
<uses-permission android:name="android.permission.REGISTER_SIM_SUBSCRIPTION" />
|
|
<uses-permission android:name="android.permission.GET_APP_OPS_STATS" />
|
|
<uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
|
|
<uses-permission android:name="android.permission.VIBRATE" />
|
|
<uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
|
|
<uses-permission android:name="android.permission.START_TASKS_FROM_RECENTS" />
|
|
<uses-permission android:name="android.permission.ACTIVITY_EMBEDDING" />
|
|
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
|
|
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
|
|
<uses-permission android:name="android.permission.MANAGE_AUTO_FILL" />
|
|
<uses-permission android:name="android.permission.MANAGE_CONTENT_CAPTURE" />
|
|
<uses-permission android:name="android.permission.NETWORK_SETTINGS" />
|
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
|
<uses-permission android:name="android.permission.SET_TIME" />
|
|
<uses-permission android:name="android.permission.SET_TIME_ZONE" />
|
|
<uses-permission android:name="android.permission.DISABLE_HIDDEN_API_CHECKS" />
|
|
<uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS" />
|
|
<!-- Permission needed to rename bugreport notifications (so they're not shown as Shell) -->
|
|
<uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
|
|
<!-- Permission needed to hold a wakelock in dumpstate.cpp (drop_root_user()) -->
|
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
<!-- Permission needed to enable/disable overlays -->
|
|
<uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES" />
|
|
<!-- Permission needed to access privileged VR APIs -->
|
|
<uses-permission android:name="android.permission.RESTRICTED_VR_ACCESS" />
|
|
<uses-permission android:name="android.permission.MANAGE_BIND_INSTANT_SERVICE" />
|
|
<uses-permission android:name="android.permission.SET_HARMFUL_APP_WARNINGS" />
|
|
<uses-permission android:name="android.permission.MANAGE_SENSORS" />
|
|
<uses-permission android:name="android.permission.MANAGE_AUDIO_POLICY" />
|
|
<uses-permission android:name="android.permission.MANAGE_CAMERA" />
|
|
<!-- Permission needed to enable/disable Bluetooth/Wifi -->
|
|
<uses-permission android:name="android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED" />
|
|
<uses-permission android:name="android.permission.MANAGE_WIFI_WHEN_WIRELESS_CONSENT_REQUIRED" />
|
|
<uses-permission android:name="android.permission.WATCH_APPOPS" />
|
|
|
|
<uses-permission android:name="android.permission.CONTROL_KEYGUARD" />
|
|
<uses-permission android:name="android.permission.SUSPEND_APPS" />
|
|
<uses-permission android:name="android.permission.READ_CLIPBOARD_IN_BACKGROUND" />
|
|
|
|
<application android:label="@string/app_label"
|
|
android:defaultToDeviceProtectedStorage="true"
|
|
android:directBootAware="true">
|
|
<provider
|
|
android:name="androidx.core.content.FileProvider"
|
|
android:authorities="com.android.shell"
|
|
android:grantUriPermissions="true"
|
|
android:exported="false">
|
|
<meta-data
|
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
|
android:resource="@xml/file_provider_paths" />
|
|
</provider>
|
|
|
|
<provider
|
|
android:name=".BugreportStorageProvider"
|
|
android:authorities="com.android.shell.documents"
|
|
android:grantUriPermissions="true"
|
|
android:exported="true"
|
|
android:permission="android.permission.MANAGE_DOCUMENTS"
|
|
android:enabled="false">
|
|
<intent-filter>
|
|
<action android:name="android.content.action.DOCUMENTS_PROVIDER" />
|
|
</intent-filter>
|
|
</provider>
|
|
|
|
<activity
|
|
android:name=".BugreportWarningActivity"
|
|
android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert"
|
|
android:finishOnCloseSystemDialogs="true"
|
|
android:excludeFromRecents="true"
|
|
android:exported="false" />
|
|
|
|
<receiver
|
|
android:name=".BugreportReceiver"
|
|
android:permission="android.permission.DUMP">
|
|
<intent-filter>
|
|
<action android:name="com.android.internal.intent.action.BUGREPORT_STARTED" />
|
|
<action android:name="com.android.internal.intent.action.BUGREPORT_FINISHED" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<receiver
|
|
android:name=".RemoteBugreportReceiver"
|
|
android:permission="android.permission.DUMP">
|
|
<intent-filter>
|
|
<action android:name="com.android.internal.intent.action.REMOTE_BUGREPORT_FINISHED" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<service
|
|
android:name=".BugreportProgressService"
|
|
android:exported="false"/>
|
|
</application>
|
|
</manifest>
|