Loading libs/gui/include/gui/ISurfaceComposer.h +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public: // (sf vsync offset - debug.sf.early_phase_offset_ns). SurfaceFlinger will continue to be // in the early configuration until it receives eEarlyWakeupEnd. These flags are // expected to be used by WindowManager only and are guarded by // android.permission.ACCESS_SURFACE_FLINGER // android.permission.WAKEUP_SURFACE_FLINGER eEarlyWakeupStart = 0x08, eEarlyWakeupEnd = 0x10, eOneWay = 0x20 Loading services/surfaceflinger/SurfaceFlinger.cpp +14 −16 Original line number Diff line number Diff line Loading @@ -299,6 +299,7 @@ const String16 sControlDisplayBrightness("android.permission.CONTROL_DISPLAY_BRI const String16 sDump("android.permission.DUMP"); const String16 sCaptureBlackoutContent("android.permission.CAPTURE_BLACKOUT_CONTENT"); const String16 sInternalSystemWindow("android.permission.INTERNAL_SYSTEM_WINDOW"); const String16 sWakeupSurfaceFlinger("android.permission.WAKEUP_SURFACE_FLINGER"); const char* KERNEL_IDLE_TIMER_PROP = "graphics.display.kernel_idle_timer.enabled"; Loading Loading @@ -332,20 +333,12 @@ std::string decodeDisplayColorSetting(DisplayColorSetting displayColorSetting) { } } bool callingThreadHasRotateSurfaceFlingerAccess() { bool callingThreadHasPermission(const String16& permission) { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); const int uid = ipc->getCallingUid(); return uid == AID_GRAPHICS || uid == AID_SYSTEM || PermissionCache::checkPermission(sRotateSurfaceFlinger, pid, uid); } bool callingThreadHasInternalSystemWindowAccess() { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); const int uid = ipc->getCallingUid(); return uid == AID_GRAPHICS || uid == AID_SYSTEM || PermissionCache::checkPermission(sInternalSystemWindow, pid, uid); PermissionCache::checkPermission(permission, pid, uid); } SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag) Loading Loading @@ -3989,19 +3982,24 @@ status_t SurfaceFlinger::setTransactionState( // Avoid checking for rotation permissions if the caller already has ACCESS_SURFACE_FLINGER // permissions. if ((permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER) || callingThreadHasRotateSurfaceFlingerAccess()) { callingThreadHasPermission(sRotateSurfaceFlinger)) { permissions |= layer_state_t::Permission::ROTATE_SURFACE_FLINGER; } if (callingThreadHasInternalSystemWindowAccess()) { if (callingThreadHasPermission(sInternalSystemWindow)) { permissions |= layer_state_t::Permission::INTERNAL_SYSTEM_WINDOW; } if (!(permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER) && (flags & (eEarlyWakeupStart | eEarlyWakeupEnd))) { ALOGE("Only WindowManager is allowed to use eEarlyWakeup[Start|End] flags"); if (flags & (eEarlyWakeupStart | eEarlyWakeupEnd)) { const bool hasPermission = (permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER) || callingThreadHasPermission(sWakeupSurfaceFlinger); if (!hasPermission) { ALOGE("Caller needs permission android.permission.WAKEUP_SURFACE_FLINGER to use " "eEarlyWakeup[Start|End] flags"); flags &= ~(eEarlyWakeupStart | eEarlyWakeupEnd); } } const int64_t postTime = systemTime(); Loading Loading
libs/gui/include/gui/ISurfaceComposer.h +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public: // (sf vsync offset - debug.sf.early_phase_offset_ns). SurfaceFlinger will continue to be // in the early configuration until it receives eEarlyWakeupEnd. These flags are // expected to be used by WindowManager only and are guarded by // android.permission.ACCESS_SURFACE_FLINGER // android.permission.WAKEUP_SURFACE_FLINGER eEarlyWakeupStart = 0x08, eEarlyWakeupEnd = 0x10, eOneWay = 0x20 Loading
services/surfaceflinger/SurfaceFlinger.cpp +14 −16 Original line number Diff line number Diff line Loading @@ -299,6 +299,7 @@ const String16 sControlDisplayBrightness("android.permission.CONTROL_DISPLAY_BRI const String16 sDump("android.permission.DUMP"); const String16 sCaptureBlackoutContent("android.permission.CAPTURE_BLACKOUT_CONTENT"); const String16 sInternalSystemWindow("android.permission.INTERNAL_SYSTEM_WINDOW"); const String16 sWakeupSurfaceFlinger("android.permission.WAKEUP_SURFACE_FLINGER"); const char* KERNEL_IDLE_TIMER_PROP = "graphics.display.kernel_idle_timer.enabled"; Loading Loading @@ -332,20 +333,12 @@ std::string decodeDisplayColorSetting(DisplayColorSetting displayColorSetting) { } } bool callingThreadHasRotateSurfaceFlingerAccess() { bool callingThreadHasPermission(const String16& permission) { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); const int uid = ipc->getCallingUid(); return uid == AID_GRAPHICS || uid == AID_SYSTEM || PermissionCache::checkPermission(sRotateSurfaceFlinger, pid, uid); } bool callingThreadHasInternalSystemWindowAccess() { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); const int uid = ipc->getCallingUid(); return uid == AID_GRAPHICS || uid == AID_SYSTEM || PermissionCache::checkPermission(sInternalSystemWindow, pid, uid); PermissionCache::checkPermission(permission, pid, uid); } SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag) Loading Loading @@ -3989,19 +3982,24 @@ status_t SurfaceFlinger::setTransactionState( // Avoid checking for rotation permissions if the caller already has ACCESS_SURFACE_FLINGER // permissions. if ((permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER) || callingThreadHasRotateSurfaceFlingerAccess()) { callingThreadHasPermission(sRotateSurfaceFlinger)) { permissions |= layer_state_t::Permission::ROTATE_SURFACE_FLINGER; } if (callingThreadHasInternalSystemWindowAccess()) { if (callingThreadHasPermission(sInternalSystemWindow)) { permissions |= layer_state_t::Permission::INTERNAL_SYSTEM_WINDOW; } if (!(permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER) && (flags & (eEarlyWakeupStart | eEarlyWakeupEnd))) { ALOGE("Only WindowManager is allowed to use eEarlyWakeup[Start|End] flags"); if (flags & (eEarlyWakeupStart | eEarlyWakeupEnd)) { const bool hasPermission = (permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER) || callingThreadHasPermission(sWakeupSurfaceFlinger); if (!hasPermission) { ALOGE("Caller needs permission android.permission.WAKEUP_SURFACE_FLINGER to use " "eEarlyWakeup[Start|End] flags"); flags &= ~(eEarlyWakeupStart | eEarlyWakeupEnd); } } const int64_t postTime = systemTime(); Loading