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();
+    }
+    
+}