Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad5ae5bc authored by Gil Dekel's avatar Gil Dekel Committed by Android (Google) Code Review
Browse files

Merge changes from topic "make-displayid-opaque" into main

* changes:
  libs/ui: Remove getManufacturerId() from DisplayId
  libs/ui: Remove isStable() flag from DisplayId
parents ca8bfa35 ba6afd88
Loading
Loading
Loading
Loading
+0 −4
Original line number Original line Diff line number Diff line
@@ -392,10 +392,6 @@ std::optional<PnpId> getPnpId(uint16_t manufacturerId) {
    return a && b && c ? std::make_optional(PnpId{a, b, c}) : std::nullopt;
    return a && b && c ? std::make_optional(PnpId{a, b, c}) : std::nullopt;
}
}


std::optional<PnpId> getPnpId(PhysicalDisplayId displayId) {
    return getPnpId(displayId.getManufacturerId());
}

std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData(
std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData(
        uint8_t port, const DisplayIdentificationData& data) {
        uint8_t port, const DisplayIdentificationData& data) {
    if (data.empty()) {
    if (data.empty()) {
+3 −17
Original line number Original line Diff line number Diff line
@@ -20,7 +20,6 @@
#include <ostream>
#include <ostream>
#include <string>
#include <string>


#include <ftl/hash.h>
#include <ftl/optional.h>
#include <ftl/optional.h>


namespace android {
namespace android {
@@ -31,16 +30,12 @@ struct DisplayId {
    // Flag indicating that the display is virtual.
    // Flag indicating that the display is virtual.
    static constexpr uint64_t FLAG_VIRTUAL = 1ULL << 63;
    static constexpr uint64_t FLAG_VIRTUAL = 1ULL << 63;


    // Flag indicating that the ID is stable across reboots.
    static constexpr uint64_t FLAG_STABLE = 1ULL << 62;

    // TODO(b/162612135) Remove default constructor
    // TODO(b/162612135) Remove default constructor
    DisplayId() = default;
    DisplayId() = default;
    constexpr DisplayId(const DisplayId&) = default;
    constexpr DisplayId(const DisplayId&) = default;
    DisplayId& operator=(const DisplayId&) = default;
    DisplayId& operator=(const DisplayId&) = default;


    constexpr bool isVirtual() const { return value & FLAG_VIRTUAL; }
    constexpr bool isVirtual() const { return value & FLAG_VIRTUAL; }
    constexpr bool isStable() const { return value & FLAG_STABLE; }


    uint64_t value;
    uint64_t value;


@@ -102,10 +97,12 @@ struct PhysicalDisplayId : DisplayId {
    // TODO(b/162612135) Remove default constructor
    // TODO(b/162612135) Remove default constructor
    PhysicalDisplayId() = default;
    PhysicalDisplayId() = default;


    constexpr uint16_t getManufacturerId() const { return static_cast<uint16_t>(value >> 40); }
    constexpr uint8_t getPort() const { return static_cast<uint8_t>(value); }
    constexpr uint8_t getPort() const { return static_cast<uint8_t>(value); }


private:
private:
    // Flag indicating that the ID is stable across reboots.
    static constexpr uint64_t FLAG_STABLE = 1ULL << 62;

    constexpr PhysicalDisplayId(uint64_t flags, uint8_t port, uint16_t manufacturerId,
    constexpr PhysicalDisplayId(uint64_t flags, uint8_t port, uint16_t manufacturerId,
                                uint32_t modelHash)
                                uint32_t modelHash)
          : DisplayId(flags | (static_cast<uint64_t>(manufacturerId) << 40) |
          : DisplayId(flags | (static_cast<uint64_t>(manufacturerId) << 40) |
@@ -149,13 +146,6 @@ private:
struct GpuVirtualDisplayId : VirtualDisplayId {
struct GpuVirtualDisplayId : VirtualDisplayId {
    explicit constexpr GpuVirtualDisplayId(BaseId baseId) : VirtualDisplayId(FLAG_GPU | baseId) {}
    explicit constexpr GpuVirtualDisplayId(BaseId baseId) : VirtualDisplayId(FLAG_GPU | baseId) {}


    static constexpr std::optional<GpuVirtualDisplayId> fromUniqueId(const std::string& uniqueId) {
        if (const auto hashOpt = ftl::stable_hash(uniqueId)) {
            return GpuVirtualDisplayId(HashTag{}, *hashOpt);
        }
        return {};
    }

    static constexpr std::optional<GpuVirtualDisplayId> tryCast(DisplayId id) {
    static constexpr std::optional<GpuVirtualDisplayId> tryCast(DisplayId id) {
        if (id.isVirtual() && (id.value & FLAG_GPU)) {
        if (id.isVirtual() && (id.value & FLAG_GPU)) {
            return GpuVirtualDisplayId(id);
            return GpuVirtualDisplayId(id);
@@ -164,10 +154,6 @@ struct GpuVirtualDisplayId : VirtualDisplayId {
    }
    }


private:
private:
    struct HashTag {}; // Disambiguate with BaseId constructor.
    constexpr GpuVirtualDisplayId(HashTag, uint64_t hash)
          : VirtualDisplayId(FLAG_STABLE | FLAG_GPU | hash) {}

    explicit constexpr GpuVirtualDisplayId(DisplayId other) : VirtualDisplayId(other) {}
    explicit constexpr GpuVirtualDisplayId(DisplayId other) : VirtualDisplayId(other) {}
};
};


+0 −1
Original line number Original line Diff line number Diff line
@@ -85,7 +85,6 @@ struct Edid {
bool isEdid(const DisplayIdentificationData&);
bool isEdid(const DisplayIdentificationData&);
std::optional<Edid> parseEdid(const DisplayIdentificationData&);
std::optional<Edid> parseEdid(const DisplayIdentificationData&);
std::optional<PnpId> getPnpId(uint16_t manufacturerId);
std::optional<PnpId> getPnpId(uint16_t manufacturerId);
std::optional<PnpId> getPnpId(PhysicalDisplayId);


std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData(
std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData(
        uint8_t port, const DisplayIdentificationData&);
        uint8_t port, const DisplayIdentificationData&);
+0 −16
Original line number Original line Diff line number Diff line
@@ -26,7 +26,6 @@ TEST(DisplayIdTest, createPhysicalIdFromEdid) {
    constexpr uint32_t modelHash = 42;
    constexpr uint32_t modelHash = 42;
    const PhysicalDisplayId id = PhysicalDisplayId::fromEdid(port, manufacturerId, modelHash);
    const PhysicalDisplayId id = PhysicalDisplayId::fromEdid(port, manufacturerId, modelHash);
    EXPECT_EQ(port, id.getPort());
    EXPECT_EQ(port, id.getPort());
    EXPECT_EQ(manufacturerId, id.getManufacturerId());
    EXPECT_FALSE(VirtualDisplayId::tryCast(id));
    EXPECT_FALSE(VirtualDisplayId::tryCast(id));
    EXPECT_FALSE(HalVirtualDisplayId::tryCast(id));
    EXPECT_FALSE(HalVirtualDisplayId::tryCast(id));
    EXPECT_FALSE(GpuVirtualDisplayId::tryCast(id));
    EXPECT_FALSE(GpuVirtualDisplayId::tryCast(id));
@@ -75,21 +74,6 @@ TEST(DisplayIdTest, createVirtualIdFromGpuVirtualId) {
    EXPECT_EQ((id.isVirtual() && isGpuVirtualId), GpuVirtualDisplayId::tryCast(id).has_value());
    EXPECT_EQ((id.isVirtual() && isGpuVirtualId), GpuVirtualDisplayId::tryCast(id).has_value());
}
}


TEST(DisplayIdTest, createGpuVirtualIdFromUniqueId) {
    static const std::string kUniqueId("virtual:ui:DisplayId_test");
    const auto idOpt = GpuVirtualDisplayId::fromUniqueId(kUniqueId);
    ASSERT_TRUE(idOpt.has_value());
    const GpuVirtualDisplayId id = idOpt.value();
    EXPECT_TRUE(VirtualDisplayId::tryCast(id));
    EXPECT_TRUE(GpuVirtualDisplayId::tryCast(id));
    EXPECT_FALSE(HalVirtualDisplayId::tryCast(id));
    EXPECT_FALSE(PhysicalDisplayId::tryCast(id));
    EXPECT_FALSE(HalDisplayId::tryCast(id));

    EXPECT_EQ(id, DisplayId::fromValue(id.value));
    EXPECT_EQ(id, DisplayId::fromValue<GpuVirtualDisplayId>(id.value));
}

TEST(DisplayIdTest, createHalVirtualId) {
TEST(DisplayIdTest, createHalVirtualId) {
    const HalVirtualDisplayId id(42);
    const HalVirtualDisplayId id(42);
    EXPECT_TRUE(VirtualDisplayId::tryCast(id));
    EXPECT_TRUE(VirtualDisplayId::tryCast(id));
+0 −12
Original line number Original line Diff line number Diff line
@@ -462,18 +462,6 @@ TEST(DisplayIdentificationTest, deviceProductInfo) {
    }
    }
}
}


TEST(DisplayIdentificationTest, fromPort) {
    // Manufacturer ID should be invalid.
    ASSERT_FALSE(getPnpId(PhysicalDisplayId::fromPort(0)));
    ASSERT_FALSE(getPnpId(PhysicalDisplayId::fromPort(0xffu)));
}

TEST(DisplayIdentificationTest, getVirtualDisplayId) {
    // Manufacturer ID should be invalid.
    ASSERT_FALSE(getPnpId(getVirtualDisplayId(0)));
    ASSERT_FALSE(getPnpId(getVirtualDisplayId(0xffff'ffffu)));
}

} // namespace android
} // namespace android


// TODO(b/129481165): remove the #pragma below and fix conversion issues
// TODO(b/129481165): remove the #pragma below and fix conversion issues