SF: cleanup FlagManager
We currently use FlagManager just for boolean flags.
Remove the templated functions in favot of simpler ones.
Add macros for code reuse.
Test: presubmit
Change-Id: Iba892d981960b653466f55a52ed74a16138da75c
diff --git a/services/surfaceflinger/FlagManager.h b/services/surfaceflinger/FlagManager.h
index 8af0b4f..facf6c3 100644
--- a/services/surfaceflinger/FlagManager.h
+++ b/services/surfaceflinger/FlagManager.h
@@ -30,30 +30,30 @@
struct ConstructorTag {};
public:
- static FlagManager& getInstance();
+ static const FlagManager& getInstance();
+ static FlagManager& getMutableInstance();
FlagManager(ConstructorTag);
-
virtual ~FlagManager();
+
+ void markBootCompleted();
void dump(std::string& result) const;
- int64_t demo_flag() const;
-
+ bool test_flag() const;
bool use_adpf_cpu_hint() const;
-
bool use_skia_tracing() const;
+protected:
+ // overridden for unit tests
+ virtual std::optional<bool> getBoolProperty(const char*) const;
+ virtual bool getServerConfigurableFlag(const char*) const;
+
private:
- friend class FlagManagerTest;
+ friend class TestableFlagManager;
FlagManager(const FlagManager&) = delete;
- // Wrapper for mocking in test.
- virtual std::string getServerConfigurableFlag(const std::string& experimentFlagName) const;
-
- template <typename T>
- T getValue(const std::string& experimentFlagName, std::optional<T> systemPropertyOpt,
- T defaultValue) const;
+ std::atomic_bool mBootCompleted;
static std::unique_ptr<FlagManager> mInstance;
static std::once_flag mOnce;