diff --git a/utils/EdidWrapper.h b/utils/EdidWrapper.h
index 3552001..867d1a0 100644
--- a/utils/EdidWrapper.h
+++ b/utils/EdidWrapper.h
@@ -24,6 +24,8 @@
 }
 #endif
 
+#include <ui/GraphicTypes.h>
+
 #include "drm/DrmUnique.h"
 #include "utils/log.h"
 
@@ -35,6 +37,16 @@
   EdidWrapper() = default;
   EdidWrapper(const EdidWrapper &) = delete;
   virtual ~EdidWrapper() = default;
+
+  virtual void GetSupportedHdrTypes(std::vector<ui::Hdr> &types) {
+    types.clear();
+  };
+  virtual void GetHdrCapabilities(std::vector<ui::Hdr> &types,
+                                  const float * /*max_luminance*/,
+                                  const float * /*max_average_luminance*/,
+                                  const float * /*min_luminance*/) {
+    GetSupportedHdrTypes(types);
+  };
 };
 
 #if HAS_LIBDISPLAY_INFO
@@ -42,26 +54,23 @@
 class LibdisplayEdidWrapper final : public EdidWrapper {
  public:
   LibdisplayEdidWrapper() = delete;
-  LibdisplayEdidWrapper(di_info *info) : info_(info) {
-  }
   ~LibdisplayEdidWrapper() override {
     di_info_destroy(info_);
   }
   static auto Create(DrmModePropertyBlobUnique blob)
-      -> std::unique_ptr<LibdisplayEdidWrapper> {
-    if (!blob)
-      return nullptr;
+      -> std::unique_ptr<LibdisplayEdidWrapper>;
 
-    auto *info = di_info_parse_edid(blob->data, blob->length);
-    if (!info) {
-      ALOGW("Failed to parse edid blob.");
-      return nullptr;
-    }
+  void GetSupportedHdrTypes(std::vector<ui::Hdr> &types) override;
 
-    return std::make_unique<LibdisplayEdidWrapper>(std::move(info));
-  }
+  void GetHdrCapabilities(std::vector<ui::Hdr> &types,
+                          const float *max_luminance,
+                          const float *max_average_luminance,
+                          const float *min_luminance) override;
 
  private:
+  LibdisplayEdidWrapper(di_info *info) : info_(std::move(info)) {
+  }
+
   di_info *info_{};
 };
 #endif
