SurfaceFlinger: add support for secure displays
This change adds support for displays that are not allowed to display surfaces
with the eSecure flag set. All non-virtual displays are considered secure,
while virtual displays have their secure-ness specified at creation time.
Bug: 7368436
Change-Id: I81ad535d2d1e5a7ff78269017e85b111f0098500
diff --git a/services/surfaceflinger/DisplayDevice.h b/services/surfaceflinger/DisplayDevice.h
index 058680b..d6da422 100644
--- a/services/surfaceflinger/DisplayDevice.h
+++ b/services/surfaceflinger/DisplayDevice.h
@@ -67,7 +67,9 @@
DisplayDevice(
const sp<SurfaceFlinger>& flinger,
- DisplayType type, const wp<IBinder>& displayToken,
+ DisplayType type,
+ bool isSecure,
+ const wp<IBinder>& displayToken,
const sp<ANativeWindow>& nativeWindow,
const sp<FramebufferSurface>& framebufferSurface,
EGLConfig config);
@@ -78,6 +80,10 @@
// when an non existing id is requested
bool isValid() const;
+ // isSecure indicates whether this display can be trusted to display
+ // secure surfaces.
+ bool isSecure() const { return mIsSecure; }
+
// Flip the front and back buffers if the back buffer is "dirty". Might
// be instantaneous, might involve copying the frame buffer around.
void flip(const Region& dirty) const;
@@ -167,6 +173,7 @@
uint32_t mFlags;
mutable uint32_t mPageFlipCount;
String8 mDisplayName;
+ bool mIsSecure;
/*
* Can only accessed from the main thread, these members