auto import from //depot/cupcake/@135843
diff --git a/test-runner/android/test/BundlePrinter.java b/test-runner/android/test/BundlePrinter.java
new file mode 100644
index 0000000..96213e7
--- /dev/null
+++ b/test-runner/android/test/BundlePrinter.java
@@ -0,0 +1,63 @@
+package android.test;
+
+import java.io.PrintStream;
+
+import android.os.Bundle;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.runner.BaseTestRunner;
+import junit.textui.ResultPrinter;
+
+
+/**
+ * Subclass of ResultPrinter that adds test case results to a bundle.
+ *
+ * {@hide} - This class is deprecated, and will be going away. Please don't use it.
+ */
+public class BundlePrinter extends ResultPrinter {
+
+ private Bundle mResults;
+ private boolean mFailure;
+ private boolean mError;
+
+ public BundlePrinter(PrintStream writer, Bundle result) {
+ super(writer);
+ mResults = result;
+ }
+
+ @Override
+ public void addError(Test test, Throwable t) {
+ mResults.putString(getComboName(test), BaseTestRunner.getFilteredTrace(t));
+ mFailure = true;
+ super.addError(test, t);
+ }
+
+ @Override
+ public void addFailure(Test test, AssertionFailedError t) {
+ mResults.putString(getComboName(test), BaseTestRunner.getFilteredTrace(t));
+ mError = true;
+ super.addFailure(test, t);
+ }
+
+ @Override
+ public void endTest(Test test) {
+ if (!mFailure && !mError) {
+ mResults.putString(getComboName(test), "passed");
+ }
+ super.endTest(test);
+ }
+
+ @Override
+ public void startTest(Test test) {
+ mFailure = false;
+ mError = false;
+ super.startTest(test);
+ }
+
+ private String getComboName(Test test) {
+ return test.getClass().getName() + ":" + ((TestCase) test).getName();
+ }
+
+}