Re-compile on userfaultfd phenotype flag change.
After this change, odrefresh re-compiles everything when the phenotype
flag `runtime_native_boot.enable_uffd_gc` changes. It writes the value
of the flag to cache-info.xml for change detection.
According to go/platform-experiment-namespaces#namespace-types, the
phenotype flag is back by a persistent system property. Therefore, we
can directly read the flag from the system property instead of depending
on the `server_configurable_flags` library. This behavior is consistent
with the existing ART code (particularly, `art::Flag`), which reads
other phenotype flags.
Bug: 231298279
Test: atest odsign_e2e_tests_full
Change-Id: I02b70569ecd96d4ded6d2d3be22c34b2c6a4c5b4
Merged-In: I02b70569ecd96d4ded6d2d3be22c34b2c6a4c5b4
(cherry picked from commit 45d0881f7444307955b51db5be88c5f890647c5e)
diff --git a/odrefresh/odrefresh.h b/odrefresh/odrefresh.h
index 58da57a..9dd4009 100644
--- a/odrefresh/odrefresh.h
+++ b/odrefresh/odrefresh.h
@@ -140,6 +140,25 @@
/*out*/ std::set<std::string>* jars_missing_artifacts,
/*out*/ std::vector<std::string>* checked_artifacts = nullptr) const;
+ // Returns true if all of the system properties listed in `kSystemProperties` are set to the
+ // default values.
+ WARN_UNUSED bool CheckSystemPropertiesAreDefault() const;
+
+ // Returns true if none of the system properties listed in `kSystemProperties` has changed since
+ // the last compilation.
+ WARN_UNUSED bool CheckSystemPropertiesHaveNotChanged(
+ const com::android::art::CacheInfo& cache_info) const;
+
+ // Returns true if boot classpath artifacts on /system are usable if they exist. Note that this
+ // function does not check file existence.
+ WARN_UNUSED bool BootClasspathArtifactsOnSystemUsable(
+ const com::android::apex::ApexInfo& art_apex_info) const;
+
+ // Returns true if system_server artifacts on /system are usable if they exist. Note that this
+ // function does not check file existence.
+ WARN_UNUSED bool SystemServerArtifactsOnSystemUsable(
+ const std::vector<com::android::apex::ApexInfo>& apex_info_list) const;
+
// Checks whether all boot classpath artifacts are up to date. Returns true if all are present,
// false otherwise.
// If `checked_artifacts` is present, adds checked artifacts to `checked_artifacts`.