OSDN Git Service

Use Google Feedback CrashBuilder API to make reports easier to consume.
authorSascha Haeberling <haeberling@google.com>
Fri, 29 May 2015 23:20:28 +0000 (16:20 -0700)
committerSascha Haeberling <haeberling@google.com>
Fri, 29 May 2015 23:22:39 +0000 (16:22 -0700)
Manual Cherry-Pick Part 1 of http://ag/699672

Currently, Feedback reports don't include a stacktrace. You have to
download
a system log file to find it. This tweak allows us to see the stacktrace
on the Report page itself.

Example old report:
https://feedback.corp.google.com/product/102042/crash?lView=rd&lCategory=8590053278&lRSort=1&lROrder=2&lRFilter=1&lReport=5517267704
Example new report:
https://feedback.corp.google.com/product/102042/crash?lView=rd&lCategory=8590053278&lRSort=1&lROrder=2&lRFilter=1&lReport=5517601160

Change-Id: If5f0ed6c69e96fe5f3661af913ae1525f8594b75

src/com/android/camera/FatalErrorHandlerImpl.java
src/com/android/camera/util/CameraUtil.java
src_pd/com/android/camera/util/GoogleHelpHelper.java

index a8bf69d..802abc6 100644 (file)
@@ -34,8 +34,9 @@ public final class FatalErrorHandlerImpl implements FatalErrorHandler {
 
     @Override
     public void onMediaStorageFailure() {
+        Exception ex = new Exception();
         // Log a stack trace to be sure we can track the source.
-        Log.e(TAG, "Handling Media Storage Failure:", new Exception());
+        Log.e(TAG, "Handling Media Storage Failure:", ex);
 
         // Log the error
         UsageStatistics.instance().storageWarning(Storage.ACCESS_FAILURE);
@@ -43,13 +44,14 @@ public final class FatalErrorHandlerImpl implements FatalErrorHandler {
         Reason reason = Reason.MEDIA_STORAGE_FAILURE;
         boolean finishActivity = reason.doesFinishActivity();
         CameraUtil.showError(mActivity, reason.getDialogMsgId(), reason.getFeedbackMsgId(),
-                finishActivity);
+                finishActivity, ex);
     }
 
     @Override
     public void onCameraOpenFailure() {
+        Exception ex = new Exception();
         // Log a stack trace to be sure we can track the source.
-        Log.e(TAG, "Handling Camera Open Failure:", new Exception());
+        Log.e(TAG, "Handling Camera Open Failure:", ex);
 
         UsageStatistics.instance().cameraFailure(
                 eventprotos.CameraFailure.FailureReason.OPEN_FAILURE, null,
@@ -58,13 +60,14 @@ public final class FatalErrorHandlerImpl implements FatalErrorHandler {
         Reason reason = Reason.CANNOT_CONNECT_TO_CAMERA;
         boolean finishActivity = reason.doesFinishActivity();
         CameraUtil.showError(mActivity, reason.getDialogMsgId(), reason.getFeedbackMsgId(),
-                finishActivity);
+                finishActivity, ex);
     }
 
     @Override
     public void onCameraReconnectFailure() {
+        Exception ex = new Exception();
         // Log a stack trace to be sure we can track the source.
-        Log.e(TAG, "Handling Camera Reconnect Failure:", new Exception());
+        Log.e(TAG, "Handling Camera Reconnect Failure:", ex);
 
         UsageStatistics.instance().cameraFailure(
                 eventprotos.CameraFailure.FailureReason.RECONNECT_FAILURE, null,
@@ -73,13 +76,14 @@ public final class FatalErrorHandlerImpl implements FatalErrorHandler {
         Reason reason = Reason.CANNOT_CONNECT_TO_CAMERA;
         boolean finishActivity = reason.doesFinishActivity();
         CameraUtil.showError(mActivity, reason.getDialogMsgId(), reason.getFeedbackMsgId(),
-                finishActivity);
+                finishActivity, ex);
     }
 
     @Override
     public void onGenericCameraAccessFailure() {
+        Exception ex = new Exception();
         // Log a stack trace to be sure we can track the source.
-        Log.e(TAG, "Handling Camera Access Failure:", new Exception());
+        Log.e(TAG, "Handling Camera Access Failure:", ex);
 
         UsageStatistics.instance().cameraFailure(
                 eventprotos.CameraFailure.FailureReason.UNKNOWN_REASON, null,
@@ -88,13 +92,14 @@ public final class FatalErrorHandlerImpl implements FatalErrorHandler {
         Reason reason = Reason.CANNOT_CONNECT_TO_CAMERA;
         boolean finishActivity = reason.doesFinishActivity();
         CameraUtil.showError(mActivity, reason.getDialogMsgId(), reason.getFeedbackMsgId(),
-                finishActivity);
+                finishActivity, ex);
     }
 
     @Override
     public void onCameraDisabledFailure() {
+        Exception ex = new Exception();
         // Log a stack trace to be sure we can track the source.
-        Log.e(TAG, "Handling Camera Disabled Failure:", new Exception());
+        Log.e(TAG, "Handling Camera Disabled Failure:", ex);
 
         // Log the error
         UsageStatistics.instance().cameraFailure(
@@ -104,16 +109,17 @@ public final class FatalErrorHandlerImpl implements FatalErrorHandler {
         Reason reason = Reason.CAMERA_DISABLED_BY_SECURITY_POLICY;
         boolean finishActivity = reason.doesFinishActivity();
         CameraUtil.showError(mActivity, reason.getDialogMsgId(), reason.getFeedbackMsgId(),
-                finishActivity);
+                finishActivity, ex);
     }
 
     @Override
     public void handleFatalError(Reason reason) {
+        Exception ex = new Exception();
         // Log a stack trace to be sure we can track the source.
-        Log.e(TAG, "Handling Fatal Error:", new Exception());
+        Log.e(TAG, "Handling Fatal Error:", ex);
 
         boolean finishActivity = reason.doesFinishActivity();
         CameraUtil.showError(mActivity, reason.getDialogMsgId(), reason.getFeedbackMsgId(),
-                finishActivity);
+                finishActivity, ex);
     }
 }
index a2a5a7d..639e635 100644 (file)
@@ -289,7 +289,7 @@ public class CameraUtil {
      */
     @Deprecated
     public static void showError(final Activity activity, final int dialogMsgId, final int feedbackMsgId,
-                                 final boolean finishActivity) {
+                                 final boolean finishActivity, final Exception ex) {
         final DialogInterface.OnClickListener buttonListener =
                 new DialogInterface.OnClickListener() {
                     @Override
@@ -304,7 +304,7 @@ public class CameraUtil {
                 new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
-                        new GoogleHelpHelper(activity).sendGoogleFeedback(feedbackMsgId);
+                        new GoogleHelpHelper(activity).sendGoogleFeedback(feedbackMsgId, ex);
                         if (finishActivity) {
                             activity.finish();
                         }
index c59b50a..ac876ad 100644 (file)
@@ -32,5 +32,5 @@ public class GoogleHelpHelper {
     public void launchGoogleHelp() {
     }
 
-    public void sendGoogleFeedback(int category) {}
+    public void sendGoogleFeedback(int category, Exception ex) {}
 }