diff options
author | 2016-04-12 17:56:00 +0000 | |
---|---|---|
committer | 2016-04-12 17:56:01 +0000 | |
commit | e1b1ce77da273da6fc89d04a9c8ec09d0d8adca1 (patch) | |
tree | c72d5e920b9952d4fa23d5a223d2c71b0a73297f | |
parent | 143a9333dc5779d062a9af615774c6f332e6dbca (diff) | |
parent | abeab723d10b56302b86b1929ea994cf4a861fd0 (diff) |
Merge "Minor improvements useful for debugging." into nyc-dev
-rw-r--r-- | packages/Shell/src/com/android/shell/BugreportProgressService.java | 67 | ||||
-rw-r--r-- | packages/Shell/src/com/android/shell/BugreportReceiver.java | 3 |
2 files changed, 67 insertions, 3 deletions
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java index 7ca76141a84c..796dff52304d 100644 --- a/packages/Shell/src/com/android/shell/BugreportProgressService.java +++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java @@ -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); diff --git a/packages/Shell/src/com/android/shell/BugreportReceiver.java b/packages/Shell/src/com/android/shell/BugreportReceiver.java index cbd17bfa3971..f6e558f73459 100644 --- a/packages/Shell/src/com/android/shell/BugreportReceiver.java +++ b/packages/Shell/src/com/android/shell/BugreportReceiver.java @@ -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); |