• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.shadows;
2 
3 import android.graphics.Canvas;
4 import android.graphics.PixelFormat;
5 import android.graphics.Rect;
6 import android.view.Surface;
7 import android.view.SurfaceHolder;
8 import android.view.SurfaceView;
9 import java.util.HashSet;
10 import java.util.Set;
11 import org.robolectric.annotation.Implementation;
12 import org.robolectric.annotation.Implements;
13 
14 @Implements(SurfaceView.class)
15 @SuppressWarnings({"UnusedDeclaration"})
16 public class ShadowSurfaceView extends ShadowView {
17   private final FakeSurfaceHolder fakeSurfaceHolder = new FakeSurfaceHolder();
18 
19   @Implementation
onAttachedToWindow()20   protected void onAttachedToWindow() {}
21 
22   @Implementation
getHolder()23   protected SurfaceHolder getHolder() {
24     return fakeSurfaceHolder;
25   }
26 
getFakeSurfaceHolder()27   public FakeSurfaceHolder getFakeSurfaceHolder() {
28     return fakeSurfaceHolder;
29   }
30 
31   /** Robolectric implementation of {@link android.view.SurfaceHolder}. */
32   public static class FakeSurfaceHolder implements SurfaceHolder {
33     private final Set<Callback> callbacks = new HashSet<>();
34     // The default format is RGB_565.
35     private int requestedFormat = PixelFormat.RGB_565;
36 
37     @Override
addCallback(Callback callback)38     public void addCallback(Callback callback) {
39       callbacks.add(callback);
40     }
41 
getCallbacks()42     public Set<Callback> getCallbacks() {
43       return callbacks;
44     }
45 
46     @Override
removeCallback(Callback callback)47     public void removeCallback(Callback callback) {
48       callbacks.remove(callback);
49     }
50 
51     @Override
isCreating()52     public boolean isCreating() {
53       return false;
54     }
55 
56     @Override
setType(int i)57     public void setType(int i) {}
58 
59     @Override
setFixedSize(int i, int i1)60     public void setFixedSize(int i, int i1) {}
61 
62     @Override
setSizeFromLayout()63     public void setSizeFromLayout() {}
64 
65     @Override
setFormat(int format)66     public void setFormat(int format) {
67       if (format == PixelFormat.OPAQUE) {
68         requestedFormat = PixelFormat.RGB_565;
69       } else {
70         requestedFormat = format;
71       }
72     }
73 
74     @Override
setKeepScreenOn(boolean b)75     public void setKeepScreenOn(boolean b) {}
76 
77     @Override
lockCanvas()78     public Canvas lockCanvas() {
79       return null;
80     }
81 
82     @Override
lockCanvas(Rect rect)83     public Canvas lockCanvas(Rect rect) {
84       return null;
85     }
86 
87     @Override
unlockCanvasAndPost(Canvas canvas)88     public void unlockCanvasAndPost(Canvas canvas) {}
89 
90     @Override
getSurfaceFrame()91     public Rect getSurfaceFrame() {
92       return null;
93     }
94 
95     @Override
getSurface()96     public Surface getSurface() {
97       return null;
98     }
99 
100     /**
101      * Retrieve the requested format by the developers or by Android Frameworks internal logic.
102      *
103      * @return The requested format, and the default value is {@link PixelFormat#RGB_565}.
104      * @see PixelFormat
105      */
getRequestedFormat()106     public int getRequestedFormat() {
107       return requestedFormat;
108     }
109   }
110 }
111