Merge "Minor improvements useful for debugging." into nyc-dev
This commit is contained in:
@@ -220,6 +220,7 @@ public class BugreportProgressService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||||
|
Log.v(TAG, "onStartCommand(): " + dumpIntent(intent));
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
// Handle it in a separate thread.
|
// Handle it in a separate thread.
|
||||||
final Message msg = mMainHandler.obtainMessage();
|
final Message msg = mMainHandler.obtainMessage();
|
||||||
@@ -297,6 +298,7 @@ public class BugreportProgressService extends Service {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Parcelable parcel = ((Intent) msg.obj).getParcelableExtra(EXTRA_ORIGINAL_INTENT);
|
final Parcelable parcel = ((Intent) msg.obj).getParcelableExtra(EXTRA_ORIGINAL_INTENT);
|
||||||
|
Log.v(TAG, "handleMessage(): " + dumpIntent((Intent) parcel));
|
||||||
final Intent intent;
|
final Intent intent;
|
||||||
if (parcel instanceof Intent) {
|
if (parcel instanceof Intent) {
|
||||||
// The real intent was passed to BugreportReceiver, which delegated to the service.
|
// 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++) {
|
for (int i = 0; i < mProcesses.size(); i++) {
|
||||||
final BugreportInfo info = mProcesses.valueAt(i);
|
final BugreportInfo info = mProcesses.valueAt(i);
|
||||||
if (info.finished) {
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
updateProgress(info);
|
updateProgress(info);
|
||||||
@@ -846,7 +849,15 @@ public class BugreportProgressService extends Service {
|
|||||||
private static Intent buildSendIntent(Context context, BugreportInfo info) {
|
private static Intent buildSendIntent(Context context, BugreportInfo info) {
|
||||||
// Files are kept on private storage, so turn into Uris that we can
|
// Files are kept on private storage, so turn into Uris that we can
|
||||||
// grant temporary permissions for.
|
// 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 Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
|
||||||
final String mimeType = "application/vnd.android.bugreport";
|
final String mimeType = "application/vnd.android.bugreport";
|
||||||
@@ -907,6 +918,12 @@ public class BugreportProgressService extends Service {
|
|||||||
addDetailsToZipFile(mContext, info);
|
addDetailsToZipFile(mContext, info);
|
||||||
|
|
||||||
final Intent sendIntent = buildSendIntent(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;
|
final Intent notifIntent;
|
||||||
|
|
||||||
// Send through warning dialog by default
|
// 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) {
|
private static boolean setSystemProperty(String key, String value) {
|
||||||
try {
|
try {
|
||||||
if (DEBUG) Log.v(TAG, "Setting system property " + key + " to " + value);
|
if (DEBUG) Log.v(TAG, "Setting system property " + key + " to " + value);
|
||||||
|
|||||||
@@ -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.EXTRA_ORIGINAL_INTENT;
|
||||||
import static com.android.shell.BugreportProgressService.INTENT_BUGREPORT_FINISHED;
|
import static com.android.shell.BugreportProgressService.INTENT_BUGREPORT_FINISHED;
|
||||||
import static com.android.shell.BugreportProgressService.getFileExtra;
|
import static com.android.shell.BugreportProgressService.getFileExtra;
|
||||||
|
import static com.android.shell.BugreportProgressService.dumpIntent;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@@ -51,7 +52,7 @@ public class BugreportReceiver extends BroadcastReceiver {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
Log.d(TAG, "onReceive: " + intent);
|
Log.d(TAG, "onReceive(): " + dumpIntent(intent));
|
||||||
// Clean up older bugreports in background
|
// Clean up older bugreports in background
|
||||||
cleanupOldFiles(this, intent, INTENT_BUGREPORT_FINISHED, MIN_KEEP_COUNT, MIN_KEEP_AGE);
|
cleanupOldFiles(this, intent, INTENT_BUGREPORT_FINISHED, MIN_KEEP_COUNT, MIN_KEEP_AGE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user