1 #pragma once 2 3 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS 4 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS(FLAG) ANDROID_UPROBESTATS_MAINLINE_FLAGS_##FLAG 5 #endif 6 7 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS_ENABLE_UPROBESTATS 8 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS_ENABLE_UPROBESTATS false 9 #endif 10 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS_EXECUTABLE_METHOD_FILE_OFFSETS 11 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS_EXECUTABLE_METHOD_FILE_OFFSETS false 12 #endif 13 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS_UPROBESTATS_SUPPORT_UPDATE_DEVICE_IDLE_TEMP_ALLOWLIST 14 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS_UPROBESTATS_SUPPORT_UPDATE_DEVICE_IDLE_TEMP_ALLOWLIST false 15 #endif 16 17 #ifdef __cplusplus 18 19 #include <memory> 20 21 namespace android::uprobestats::mainline::flags { 22 23 class flag_provider_interface { 24 public: 25 virtual ~flag_provider_interface() = default; 26 virtual bool enable_uprobestats() = 0; 27 virtual bool executable_method_file_offsets() = 0; 28 virtual bool uprobestats_support_update_device_idle_temp_allowlist() = 0; 29 }; 30 31 extern std::unique_ptr<flag_provider_interface> provider_; 32 33 enable_uprobestats()34inline bool enable_uprobestats() { 35 return ANDROID_UPROBESTATS_MAINLINE_FLAGS_ENABLE_UPROBESTATS; 36 } executable_method_file_offsets()37inline bool executable_method_file_offsets() { 38 return ANDROID_UPROBESTATS_MAINLINE_FLAGS_EXECUTABLE_METHOD_FILE_OFFSETS; 39 } uprobestats_support_update_device_idle_temp_allowlist()40inline bool uprobestats_support_update_device_idle_temp_allowlist() { 41 return ANDROID_UPROBESTATS_MAINLINE_FLAGS_UPROBESTATS_SUPPORT_UPDATE_DEVICE_IDLE_TEMP_ALLOWLIST; 42 } 43 44 } 45 46 extern "C" { 47 #endif // __cplusplus 48 49 50 bool android_uprobestats_mainline_flags_enable_uprobestats(); 51 bool android_uprobestats_mainline_flags_executable_method_file_offsets(); 52 bool android_uprobestats_mainline_flags_uprobestats_support_update_device_idle_temp_allowlist(); 53 54 #ifdef __cplusplus 55 } // extern "C" 56 #endif 57 58