1 package org.robolectric.shadows; 2 3 import static android.os.Build.VERSION_CODES.R; 4 import static org.robolectric.util.reflector.Reflector.reflector; 5 6 import android.app.ApplicationExitInfo; 7 import java.io.InputStream; 8 import org.robolectric.annotation.Implementation; 9 import org.robolectric.annotation.Implements; 10 import org.robolectric.annotation.RealObject; 11 import org.robolectric.util.reflector.Direct; 12 import org.robolectric.util.reflector.ForType; 13 14 /** Shadow for {@link android.app.ApplicationExitInfo} */ 15 @Implements(value = ApplicationExitInfo.class, minSdk = R, isInAndroidSdk = false) 16 public class ShadowApplicationExitInfo { 17 18 @RealObject ApplicationExitInfo applicationExitInfo; 19 private InputStream traceInputStream = null; 20 21 @Implementation getTraceInputStream()22 protected InputStream getTraceInputStream() { 23 if (this.traceInputStream == null) { 24 return reflector(ApplicationExitInfoReflector.class, applicationExitInfo) 25 .getTraceInputStream(); 26 } 27 return this.traceInputStream; 28 } 29 30 /** 31 * When called with a non-null InputStream, Overrides the stream returned by {@link 32 * ApplicationExitInfo#getTraceInputStream()} 33 */ setTraceInputStream(InputStream in)34 public void setTraceInputStream(InputStream in) { 35 this.traceInputStream = in; 36 } 37 38 @ForType(ApplicationExitInfo.class) 39 private interface ApplicationExitInfoReflector { 40 @Direct getTraceInputStream()41 InputStream getTraceInputStream(); 42 } 43 } 44