Merge "Minor improvements useful for debugging." into nyc-dev

This commit is contained in:
Felipe Leme
2016-04-12 17:56:00 +00:00
committed by Android (Google) Code Review
2 changed files with 67 additions and 3 deletions

View File

@@ -220,6 +220,7 @@ public class BugreportProgressService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.v(TAG, "onStartCommand(): " + dumpIntent(intent));
if (intent != null) {
// Handle it in a separate thread.
final Message msg = mMainHandler.obtainMessage();
@@ -297,6 +298,7 @@ public class BugreportProgressService extends Service {
return;
}
final Parcelable parcel = ((Intent) msg.obj).getParcelableExtra(EXTRA_ORIGINAL_INTENT);
Log.v(TAG, "handleMessage(): " + dumpIntent((Intent) parcel));
final Intent intent;
if (parcel instanceof Intent) {
// The real intent was passed to BugreportReceiver, which delegated to the service.
@@ -707,7 +709,8 @@ public class BugreportProgressService extends Service {
for (int i = 0; i < mProcesses.size(); i++) {
final BugreportInfo info = mProcesses.valueAt(i);
if (info.finished) {
Log.d(TAG, "Not updating progress because share notification was already sent");
Log.d(TAG, "Not updating progress for " + info.id + " while taking screenshot"
+ " because share notification was already sent");
continue;
}
updateProgress(info);
@@ -846,7 +849,15 @@ public class BugreportProgressService extends Service {
private static Intent buildSendIntent(Context context, BugreportInfo info) {
// Files are kept on private storage, so turn into Uris that we can
// grant temporary permissions for.
final Uri bugreportUri = getUri(context, info.bugreportFile);
final Uri bugreportUri;
try {
bugreportUri = getUri(context, info.bugreportFile);
} catch (IllegalArgumentException e) {
// Should not happen on production, but happens when a Shell is sideloaded and
// FileProvider cannot find a configured root for it.
Log.wtf(TAG, "Could not get URI for " + info.bugreportFile, e);
return null;
}
final Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
final String mimeType = "application/vnd.android.bugreport";
@@ -907,6 +918,12 @@ public class BugreportProgressService extends Service {
addDetailsToZipFile(mContext, info);
final Intent sendIntent = buildSendIntent(mContext, info);
if (sendIntent == null) {
Log.w(TAG, "Stopping progres on ID " + id + " because share intent could not be built");
stopProgress(id);
return;
}
final Intent notifIntent;
// Send through warning dialog by default
@@ -1165,6 +1182,52 @@ public class BugreportProgressService extends Service {
}
}
/**
* Dumps an intent, extracting the relevant extras.
*/
static String dumpIntent(Intent intent) {
if (intent == null) {
return "NO INTENT";
}
String action = intent.getAction();
if (action == null) {
// Happens when BugreportReceiver calls startService...
action = "no action";
}
final StringBuilder buffer = new StringBuilder(action).append(" extras: ");
addExtra(buffer, intent, EXTRA_ID);
addExtra(buffer, intent, EXTRA_PID);
addExtra(buffer, intent, EXTRA_MAX);
addExtra(buffer, intent, EXTRA_NAME);
addExtra(buffer, intent, EXTRA_DESCRIPTION);
addExtra(buffer, intent, EXTRA_BUGREPORT);
addExtra(buffer, intent, EXTRA_SCREENSHOT);
addExtra(buffer, intent, EXTRA_INFO);
if (intent.hasExtra(EXTRA_ORIGINAL_INTENT)) {
buffer.append(SHORT_EXTRA_ORIGINAL_INTENT).append(": ");
final Intent originalIntent = intent.getParcelableExtra(EXTRA_ORIGINAL_INTENT);
buffer.append(dumpIntent(originalIntent));
} else {
buffer.append("no ").append(SHORT_EXTRA_ORIGINAL_INTENT);
}
return buffer.toString();
}
private static final String SHORT_EXTRA_ORIGINAL_INTENT =
EXTRA_ORIGINAL_INTENT.substring(EXTRA_ORIGINAL_INTENT.lastIndexOf('.') + 1);
private static void addExtra(StringBuilder buffer, Intent intent, String name) {
final String shortName = name.substring(name.lastIndexOf('.') + 1);
if (intent.hasExtra(name)) {
buffer.append(shortName).append('=').append(intent.getExtra(name));
} else {
buffer.append("no ").append(shortName);
}
buffer.append(", ");
}
private static boolean setSystemProperty(String key, String value) {
try {
if (DEBUG) Log.v(TAG, "Setting system property " + key + " to " + value);

View File

@@ -20,6 +20,7 @@ import static com.android.shell.BugreportProgressService.EXTRA_BUGREPORT;
import static com.android.shell.BugreportProgressService.EXTRA_ORIGINAL_INTENT;
import static com.android.shell.BugreportProgressService.INTENT_BUGREPORT_FINISHED;
import static com.android.shell.BugreportProgressService.getFileExtra;
import static com.android.shell.BugreportProgressService.dumpIntent;
import java.io.File;
@@ -51,7 +52,7 @@ public class BugreportReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive: " + intent);
Log.d(TAG, "onReceive(): " + dumpIntent(intent));
// Clean up older bugreports in background
cleanupOldFiles(this, intent, INTENT_BUGREPORT_FINISHED, MIN_KEEP_COUNT, MIN_KEEP_AGE);