1<?xml version="1.0" encoding="utf-8"?>
2<!--
3  ~ Copyright (C) 2015 The Android Open Source Project
4  ~
5  ~ Licensed under the Apache License, Version 2.0 (the "License");
6  ~ you may not use this file except in compliance with the License.
7  ~ You may obtain a copy of the License at
8  ~
9  ~      http://www.apache.org/licenses/LICENSE-2.0
10  ~
11  ~ Unless required by applicable law or agreed to in writing, software
12  ~ distributed under the License is distributed on an "AS IS" BASIS,
13  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  ~ See the License for the specific language governing permissions and
15  ~ limitations under the License
16  -->
17
18<manifest xmlns:android="http://schemas.android.com/apk/res/android"
19     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
20     package="com.android.traceur"
21     android:versionCode="2"
22     android:versionName="1.0">
23    <uses-sdk android:minSdkVersion="26"
24         android:targetSdkVersion="34"/>
25
26    <!--- Used to query for Betterbug. -->
27    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
28
29    <!--- Used to save ViewCapture data via LauncherAppsService. -->
30    <uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>
31
32    <!-- Used to trigger the trace start/stop service. -->
33    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
34
35    <!-- Used for receiving BUGREPORT_STARTED intents. -->
36    <uses-permission android:name="android.permission.DUMP"/>
37
38    <!-- Used to initialize tracing on boot. -->
39    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
40
41    <!-- Used to prevent non-system windows from displaying over Traceur. -->
42    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
43
44    <!-- Used for adding the Quick Settings tile to the status bar. -->
45    <uses-permission android:name="android.permission.STATUS_BAR"/>
46
47    <!-- Used for brief periods where the trace service is foregrounded. -->
48    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
49    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
50
51    <!-- Used to post file-sending notification. -->
52    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
53
54    <!-- Used to check that the current user is an admin user. -->
55    <uses-permission android:name="android.permission.QUERY_USERS" />
56
57    <!-- Used to control IME Winscope tracing (not yet migrated to perfetto). -->
58    <uses-permission android:name="android.permission.CONTROL_UI_TRACING" />
59
60    <!-- Used to control view capture Winscope tracing (not yet migrated to perfetto). -->
61    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
62
63    <!-- Used to get a list of apps for heap dumps. -->
64    <uses-permission android:name="android.permission.REAL_GET_TASKS" />
65
66    <!-- Declare Android TV support. -->
67    <uses-feature android:name="android.software.leanback"
68         android:required="false"/>
69
70    <!-- touch screen is not required for TV -->
71    <uses-feature android:name="android.hardware.touchscreen"
72         android:required="false"/>
73
74    <application android:label="@string/system_tracing"
75         android:banner="@drawable/banner"
76         android:icon="@drawable/ic_launcher_settings"
77         android:backupAgent="com.android.traceur.TraceurBackupAgent">
78
79        <activity android:name=".MainActivity"
80             android:description="@string/record_system_activity"
81             android:label="@string/system_tracing"
82             android:theme="@style/Theme.SubSettingsBase"
83             android:launchMode="singleTop"
84             android:exported="true">
85            <intent-filter>
86                <action android:name="android.intent.action.MAIN"/>
87                <category android:name="android.intent.category.INFO"/>
88            </intent-filter>
89            <intent-filter>
90                <action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES"/>
91            </intent-filter>
92
93            <!-- Mark this activity as a dynamic setting in the development category. -->
94            <intent-filter>
95                <action android:name="com.android.settings.action.IA_SETTINGS"/>
96            </intent-filter>
97            <meta-data android:name="com.android.settings.category"
98                 android:value="com.android.settings.category.ia.development"/>
99            <meta-data android:name="com.android.settings.summary"
100                 android:resource="@string/record_system_activity"/>
101            <meta-data android:name="com.android.settings.order"
102                 android:value="10"/>
103            <meta-data android:name="com.android.settings.profile"
104                 android:value="primary_profile_only"/>
105        </activity>
106
107        <activity android:name=".MainTvActivity"
108             android:description="@string/record_system_activity"
109             android:label="@string/system_tracing"
110             android:theme="@style/TvTheme"
111             android:launchMode="singleTop"
112             android:exported="true">
113            <intent-filter>
114                <action android:name="android.intent.action.MAIN"/>
115                <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
116                <category android:name="android.intent.category.INFO"/>
117            </intent-filter>
118        </activity>
119
120        <activity android:name=".MainWearActivity"
121                  android:description="@string/record_system_activity"
122                  android:icon="@drawable/bugfood_icon"
123                  android:label="@string/system_tracing"
124                  android:theme="@style/WearTheme"
125                  android:launchMode="singleTask"
126                  android:exported="true">
127        </activity>
128
129        <activity android:name=".UserConsentActivityDialog"
130             android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert"
131             android:finishOnCloseSystemDialogs="true"
132             android:excludeFromRecents="true"
133             android:exported="false"/>
134
135        <receiver android:name=".Receiver"
136             android:permission="android.permission.DUMP"
137             android:exported="true">
138            <intent-filter android:priority="2147483647">
139                <action android:name="android.intent.action.BOOT_COMPLETED"/>
140                <action android:name="android.intent.action.USER_FOREGROUND"/>
141                <action android:name="com.android.internal.intent.action.BUGREPORT_STARTED"/>
142            </intent-filter>
143          </receiver>
144
145        <service android:name=".StopTraceService"
146             android:exported="true"
147             android:foregroundServiceType="specialUse">
148            <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
149                 android:value="Used for ensuring that Traceur isn't killed while starting or stopping traces."/>
150        </service>
151
152        <service android:name=".BindableTraceService"
153            android:permission="android.permission.CONTROL_UI_TRACING"
154            android:exported="true"/>
155
156        <service android:name=".TraceService"
157             android:exported="false"
158             android:foregroundServiceType="specialUse">
159            <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
160                 android:value="Used for ensuring that Traceur isn't killed while starting or stopping traces."/>
161        </service>
162
163        <service android:name=".TracingQsService"
164             android:enabled="false"
165             android:icon="@drawable/bugfood_icon"
166             android:label="@string/record_trace"
167             android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
168             android:exported="true">
169            <intent-filter>
170                <action android:name="android.service.quicksettings.action.QS_TILE"/>
171            </intent-filter>
172            <meta-data android:name="android.service.quicksettings.TOGGLEABLE_TILE"
173                       android:value="true" />
174        </service>
175
176        <service android:name=".StackSamplingQsService"
177             android:enabled="false"
178             android:icon="@drawable/bugfood_icon"
179             android:label="@string/record_stack_samples"
180             android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
181             android:exported="true">
182            <intent-filter>
183                <action android:name="android.service.quicksettings.action.QS_TILE"/>
184            </intent-filter>
185            <meta-data android:name="android.service.quicksettings.TOGGLEABLE_TILE"
186                       android:value="true" />
187        </service>
188
189        <provider android:name="androidx.core.content.FileProvider"
190             android:authorities="com.android.traceur.files"
191             android:grantUriPermissions="true"
192             android:exported="false">
193            <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
194                 android:resource="@xml/file_paths"/>
195        </provider>
196
197        <provider android:name=".StorageProvider"
198             android:enabled="false"
199             android:authorities="com.android.traceur.documents"
200             android:grantUriPermissions="true"
201             android:exported="true"
202             android:permission="android.permission.MANAGE_DOCUMENTS">
203            <intent-filter>
204              <action android:name="android.content.action.DOCUMENTS_PROVIDER"/>
205            </intent-filter>
206        </provider>
207
208        <provider android:name=".SearchProvider"
209             android:authorities="com.android.traceur"
210             android:multiprocess="false"
211             android:grantUriPermissions="true"
212             android:permission="android.permission.READ_SEARCH_INDEXABLES"
213             android:exported="true">
214            <intent-filter>
215                <action android:name="android.content.action.SEARCH_INDEXABLES_PROVIDER"/>
216            </intent-filter>
217        </provider>
218    </application>
219</manifest>
220