Merge "Removing the settings-based IncidentReportArgs method." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
46c0e91b74
@@ -3769,7 +3769,6 @@ package android.os {
|
||||
|
||||
public class IncidentManager {
|
||||
method public void reportIncident(android.os.IncidentReportArgs);
|
||||
method public void reportIncident(java.lang.String, byte[]);
|
||||
}
|
||||
|
||||
public final class IncidentReportArgs implements android.os.Parcelable {
|
||||
@@ -3780,7 +3779,6 @@ package android.os {
|
||||
method public boolean containsSection(int);
|
||||
method public int describeContents();
|
||||
method public boolean isAll();
|
||||
method public static android.os.IncidentReportArgs parseSetting(java.lang.String) throws java.lang.IllegalArgumentException;
|
||||
method public void readFromParcel(android.os.Parcel);
|
||||
method public int sectionCount();
|
||||
method public void setAll(boolean);
|
||||
|
||||
@@ -473,7 +473,6 @@ package android.os {
|
||||
|
||||
public class IncidentManager {
|
||||
method public void reportIncident(android.os.IncidentReportArgs);
|
||||
method public void reportIncident(java.lang.String, byte[]);
|
||||
}
|
||||
|
||||
public final class IncidentReportArgs implements android.os.Parcelable {
|
||||
@@ -484,7 +483,6 @@ package android.os {
|
||||
method public boolean containsSection(int);
|
||||
method public int describeContents();
|
||||
method public boolean isAll();
|
||||
method public static android.os.IncidentReportArgs parseSetting(java.lang.String) throws java.lang.IllegalArgumentException;
|
||||
method public void readFromParcel(android.os.Parcel);
|
||||
method public int sectionCount();
|
||||
method public void setAll(boolean);
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.annotation.SystemApi;
|
||||
import android.annotation.SystemService;
|
||||
import android.annotation.TestApi;
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
import android.util.Slog;
|
||||
|
||||
/**
|
||||
@@ -57,47 +56,6 @@ public class IncidentManager {
|
||||
reportIncidentInternal(args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to trigger an incident report and put it in dropbox.
|
||||
* <p>
|
||||
* The fields that are reported will be looked up in the system setting named by
|
||||
* the settingName parameter. The setting must match one of these patterns:
|
||||
* The string "disabled": The report will not be taken.
|
||||
* The string "all": The report will taken with all sections.
|
||||
* The string "none": The report will taken with no sections, but with the header.
|
||||
* A comma separated list of field numbers: The report will have these fields.
|
||||
* <p>
|
||||
* The header parameter will be added as a header for the incident report. Fill in a
|
||||
* {@link android.util.proto.ProtoOutputStream ProtoOutputStream}, and then call the
|
||||
* {@link android.util.proto.ProtoOutputStream#bytes bytes()} method to retrieve
|
||||
* the encoded data for the header.
|
||||
*/
|
||||
@RequiresPermission(allOf = {
|
||||
android.Manifest.permission.DUMP,
|
||||
android.Manifest.permission.PACKAGE_USAGE_STATS
|
||||
})
|
||||
public void reportIncident(String settingName, byte[] headerProto) {
|
||||
// Sections
|
||||
String setting = Settings.Global.getString(mContext.getContentResolver(), settingName);
|
||||
IncidentReportArgs args;
|
||||
try {
|
||||
args = IncidentReportArgs.parseSetting(setting);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
Slog.w(TAG, "Bad value for incident report setting '" + settingName + "'", ex);
|
||||
return;
|
||||
}
|
||||
if (args == null) {
|
||||
Slog.i(TAG, String.format("Incident report requested but disabled with "
|
||||
+ "settings [name: %s, value: %s]", settingName, setting));
|
||||
return;
|
||||
}
|
||||
|
||||
args.addHeader(headerProto);
|
||||
|
||||
Slog.i(TAG, "Taking incident report: " + settingName);
|
||||
reportIncidentInternal(args);
|
||||
}
|
||||
|
||||
private class IncidentdDeathRecipient implements IBinder.DeathRecipient {
|
||||
@Override
|
||||
public void binderDied() {
|
||||
|
||||
@@ -188,53 +188,5 @@ public final class IncidentReportArgs implements Parcelable {
|
||||
public void addHeader(byte[] header) {
|
||||
mHeaders.add(header);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses an incident report config as described in the system setting.
|
||||
*
|
||||
* @see IncidentManager#reportIncident
|
||||
*/
|
||||
public static IncidentReportArgs parseSetting(String setting)
|
||||
throws IllegalArgumentException {
|
||||
if (setting == null || setting.length() == 0) {
|
||||
return null;
|
||||
}
|
||||
setting = setting.trim();
|
||||
if (setting.length() == 0 || "disabled".equals(setting)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final IncidentReportArgs args = new IncidentReportArgs();
|
||||
|
||||
if ("all".equals(setting)) {
|
||||
args.setAll(true);
|
||||
return args;
|
||||
} else if ("none".equals(setting)) {
|
||||
return args;
|
||||
}
|
||||
|
||||
final String[] splits = setting.split(",");
|
||||
final int N = splits.length;
|
||||
for (int i=0; i<N; i++) {
|
||||
final String str = splits[i].trim();
|
||||
if (str.length() == 0) {
|
||||
continue;
|
||||
}
|
||||
int section;
|
||||
try {
|
||||
section = Integer.parseInt(str);
|
||||
} catch (NumberFormatException ex) {
|
||||
throw new IllegalArgumentException("Malformed setting. Bad integer at section"
|
||||
+ " index " + i + ": section='" + str + "' setting='" + setting + "'");
|
||||
}
|
||||
if (section < 1) {
|
||||
throw new IllegalArgumentException("Malformed setting. Illegal section at"
|
||||
+ " index " + i + ": section='" + str + "' setting='" + setting + "'");
|
||||
}
|
||||
args.addSection(section);
|
||||
}
|
||||
|
||||
return args;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user