1 /**
2  * Copyright (c) 2016, The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.os;
18 
19 import android.os.IDumpstateListener;
20 import android.os.IDumpstateToken;
21 
22 /**
23   * Binder interface for the currently running dumpstate process.
24   * {@hide}
25   */
26 interface IDumpstate {
27     // TODO: remove method once startBugReport is used by Shell.
28     /*
29      * Sets the listener for this dumpstate progress.
30      *
31      * Returns a token used to monitor dumpstate death, or `nullptr` if the listener was already
32      * set (the listener behaves like a Highlander: There Can be Only One).
33      * Set {@code getSectionDetails} to true in order to receive callbacks with per section
34      * progress details
35      */
setListener(@tf8InCpp String name, IDumpstateListener listener, boolean getSectionDetails)36     IDumpstateToken setListener(@utf8InCpp String name, IDumpstateListener listener,
37                                 boolean getSectionDetails);
38 
39     // NOTE: If you add to or change these modes, please also change the corresponding enums
40     // in system server, in BugreportParams.java.
41 
42     // These modes encapsulate a set of run time options for generating bugreports.
43     // Takes a bugreport without user interference.
44     const int BUGREPORT_MODE_FULL = 0;
45 
46     // Interactive bugreport, i.e. triggered by the user.
47     const int BUGREPORT_MODE_INTERACTIVE = 1;
48 
49     // Remote bugreport triggered by DevicePolicyManager, for e.g.
50     const int BUGREPORT_MODE_REMOTE = 2;
51 
52     // Bugreport triggered on a wear device.
53     const int BUGREPORT_MODE_WEAR = 3;
54 
55     // Bugreport limited to only telephony info.
56     const int BUGREPORT_MODE_TELEPHONY = 4;
57 
58     // Bugreport limited to only wifi info.
59     const int BUGREPORT_MODE_WIFI = 5;
60 
61     // Default mode.
62     const int BUGREPORT_MODE_DEFAULT = 6;
63 
64     /*
65      * Starts a bugreport in the background.
66      *
67      *<p>Shows the user a dialog to get consent for sharing the bugreport with the calling
68      * application. If they deny {@link IDumpstateListener#onError} will be called. If they
69      * consent and bugreport generation is successful artifacts will be copied to the given fds and
70      * {@link IDumpstateListener#onFinished} will be called. If there
71      * are errors in bugreport generation {@link IDumpstateListener#onError} will be called.
72      *
73      * @param callingUid UID of the original application that requested the report.
74      * @param callingPackage package of the original application that requested the report.
75      * @param bugreportFd the file to which the zipped bugreport should be written
76      * @param screenshotFd the file to which screenshot should be written
77      * @param bugreportMode the mode that specifies other run time options; must be one of above
78      * @param listener callback for updates; optional
79      */
startBugreport(int callingUid, @utf8InCpp String callingPackage, FileDescriptor bugreportFd, FileDescriptor screenshotFd, int bugreportMode, IDumpstateListener listener)80     void startBugreport(int callingUid, @utf8InCpp String callingPackage,
81                         FileDescriptor bugreportFd, FileDescriptor screenshotFd,
82                         int bugreportMode, IDumpstateListener listener);
83 
84     /*
85      * Cancels the bugreport currently in progress.
86      */
cancelBugreport()87     void cancelBugreport();
88 }
89