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