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

Commit 4830ff59 authored by Bill Yi's avatar Bill Yi
Browse files

Merge stage-aosp-master to aosp-master - DO NOT MERGE

Change-Id: I9d95b05d452a6d29dfec014a1d272db3beddeae6
parents 2225653f fbcf4ca0
Loading
Loading
Loading
Loading
+23 −3
Original line number Original line Diff line number Diff line
@@ -61,7 +61,7 @@ struct VmsLayer {


struct VmsLayerAndPublisher {
struct VmsLayerAndPublisher {
    VmsLayerAndPublisher(VmsLayer layer, int publisher_id)
    VmsLayerAndPublisher(VmsLayer layer, int publisher_id)
        : layer(layer), publisher_id(publisher_id) {}
        : layer(std::move(layer)), publisher_id(publisher_id) {}
    VmsLayer layer;
    VmsLayer layer;
    int publisher_id;
    int publisher_id;
};
};
@@ -69,6 +69,8 @@ struct VmsLayerAndPublisher {
// A VmsAssociatedLayer is used by subscribers to specify which publisher IDs
// A VmsAssociatedLayer is used by subscribers to specify which publisher IDs
// are acceptable for a given layer.
// are acceptable for a given layer.
struct VmsAssociatedLayer {
struct VmsAssociatedLayer {
    VmsAssociatedLayer(VmsLayer layer, std::vector<int> publisher_ids)
        : layer(std::move(layer)), publisher_ids(std::move(publisher_ids)) {}
    VmsLayer layer;
    VmsLayer layer;
    std::vector<int> publisher_ids;
    std::vector<int> publisher_ids;
};
};
@@ -77,7 +79,7 @@ struct VmsAssociatedLayer {
// its dependencies. Dependencies can be empty.
// its dependencies. Dependencies can be empty.
struct VmsLayerOffering {
struct VmsLayerOffering {
    VmsLayerOffering(VmsLayer layer, std::vector<VmsLayer> dependencies)
    VmsLayerOffering(VmsLayer layer, std::vector<VmsLayer> dependencies)
        : layer(layer), dependencies(dependencies) {}
        : layer(std::move(layer)), dependencies(std::move(dependencies)) {}
    VmsLayerOffering(VmsLayer layer) : layer(layer), dependencies() {}
    VmsLayerOffering(VmsLayer layer) : layer(layer), dependencies() {}
    VmsLayer layer;
    VmsLayer layer;
    std::vector<VmsLayer> dependencies;
    std::vector<VmsLayer> dependencies;
@@ -87,7 +89,7 @@ struct VmsLayerOffering {
// with the specified publisher ID.
// with the specified publisher ID.
struct VmsOffers {
struct VmsOffers {
    VmsOffers(int publisher_id, std::vector<VmsLayerOffering> offerings)
    VmsOffers(int publisher_id, std::vector<VmsLayerOffering> offerings)
        : publisher_id(publisher_id), offerings(offerings) {}
        : publisher_id(publisher_id), offerings(std::move(offerings)) {}
    int publisher_id;
    int publisher_id;
    std::vector<VmsLayerOffering> offerings;
    std::vector<VmsLayerOffering> offerings;
};
};
@@ -231,6 +233,24 @@ VmsSessionStatus parseStartSessionMessage(const VehiclePropValue& start_session,
                                          const int current_service_id, const int current_client_id,
                                          const int current_service_id, const int current_client_id,
                                          int* new_service_id);
                                          int* new_service_id);


// Returns true if the new sequence number of the availability state message is greater than
// the last seen availability sequence number.
bool isAvailabilitySequenceNumberNewer(const VehiclePropValue& availability_state,
                                       const int last_seen_availability_sequence_number);

// Returns sequence number of the availability state message.
int32_t getSequenceNumberForAvailabilityState(const VehiclePropValue& availability_state);

// Takes a availability state message and returns the associated layers that are
// available to publish data.
//
// A subscriber can use this function when receiving an availability response or availability
// change message to determine which associated layers are ready to publish data.
// The caller of this function can optionally decide to not consume these layers
// if the availability change has the sequence number less than the last seen
// sequence number.
std::vector<VmsAssociatedLayer> getAvailableLayers(const VehiclePropValue& availability_state);

}  // namespace vms
}  // namespace vms
}  // namespace V2_0
}  // namespace V2_0
}  // namespace vehicle
}  // namespace vehicle
+94 −20
Original line number Original line Diff line number Diff line
@@ -219,12 +219,9 @@ std::vector<VmsLayer> getSubscribedLayers(const VehiclePropValue& subscriptions_
    if (isValidVmsMessage(subscriptions_state) &&
    if (isValidVmsMessage(subscriptions_state) &&
        (parseMessageType(subscriptions_state) == VmsMessageType::SUBSCRIPTIONS_CHANGE ||
        (parseMessageType(subscriptions_state) == VmsMessageType::SUBSCRIPTIONS_CHANGE ||
         parseMessageType(subscriptions_state) == VmsMessageType::SUBSCRIPTIONS_RESPONSE) &&
         parseMessageType(subscriptions_state) == VmsMessageType::SUBSCRIPTIONS_RESPONSE) &&
        subscriptions_state.value.int32Values.size() > kSubscriptionStateSequenceNumberIndex) {
        subscriptions_state.value.int32Values.size() >
        const int32_t num_of_layers = subscriptions_state.value.int32Values[toInt(
                toInt(VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_LAYERS)) {
                VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_LAYERS)];
        int subscriptions_state_int_size = subscriptions_state.value.int32Values.size();
        const int32_t num_of_associated_layers = subscriptions_state.value.int32Values[toInt(
                VmsSubscriptionsStateIntegerValuesIndex ::NUMBER_OF_ASSOCIATED_LAYERS)];

        std::unordered_set<VmsLayer, VmsLayer::VmsLayerHashFunction> offered_layers;
        std::unordered_set<VmsLayer, VmsLayer::VmsLayerHashFunction> offered_layers;
        for (const auto& offer : offers.offerings) {
        for (const auto& offer : offers.offerings) {
            offered_layers.insert(offer.layer);
            offered_layers.insert(offer.layer);
@@ -232,36 +229,55 @@ std::vector<VmsLayer> getSubscribedLayers(const VehiclePropValue& subscriptions_
        std::vector<VmsLayer> subscribed_layers;
        std::vector<VmsLayer> subscribed_layers;


        int current_index = toInt(VmsSubscriptionsStateIntegerValuesIndex::SUBSCRIPTIONS_START);
        int current_index = toInt(VmsSubscriptionsStateIntegerValuesIndex::SUBSCRIPTIONS_START);

        // Add all subscribed layers which are offered by the current publisher.
        // Add all subscribed layers which are offered by the current publisher.
        const int32_t num_of_layers = subscriptions_state.value.int32Values[toInt(
                VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_LAYERS)];
        for (int i = 0; i < num_of_layers; i++) {
        for (int i = 0; i < num_of_layers; i++) {
            if (subscriptions_state_int_size < current_index + kLayerSize) {
                return {};
            }
            VmsLayer layer = VmsLayer(subscriptions_state.value.int32Values[current_index],
            VmsLayer layer = VmsLayer(subscriptions_state.value.int32Values[current_index],
                                      subscriptions_state.value.int32Values[current_index + 1],
                                      subscriptions_state.value.int32Values[current_index + 1],
                                      subscriptions_state.value.int32Values[current_index + 2]);
                                      subscriptions_state.value.int32Values[current_index + 2]);
            if (offered_layers.find(layer) != offered_layers.end()) {
            if (offered_layers.find(layer) != offered_layers.end()) {
                subscribed_layers.push_back(layer);
                subscribed_layers.push_back(std::move(layer));
            }
            }
            current_index += kLayerSize;
            current_index += kLayerSize;
        }
        }

        // Add all subscribed associated layers which are offered by the current publisher.
        // Add all subscribed associated layers which are offered by the current publisher.
        // For this, we need to check if the associated layer has a publisher ID which is
        // For this, we need to check if the associated layer has a publisher ID which is
        // same as that of the current publisher.
        // same as that of the current publisher.
        if (subscriptions_state_int_size >
            toInt(VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS)) {
            const int32_t num_of_associated_layers = subscriptions_state.value.int32Values[toInt(
                    VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS)];

            for (int i = 0; i < num_of_associated_layers; i++) {
            for (int i = 0; i < num_of_associated_layers; i++) {
                if (subscriptions_state_int_size < current_index + kLayerSize) {
                    return {};
                }
                VmsLayer layer = VmsLayer(subscriptions_state.value.int32Values[current_index],
                VmsLayer layer = VmsLayer(subscriptions_state.value.int32Values[current_index],
                                          subscriptions_state.value.int32Values[current_index + 1],
                                          subscriptions_state.value.int32Values[current_index + 1],
                                          subscriptions_state.value.int32Values[current_index + 2]);
                                          subscriptions_state.value.int32Values[current_index + 2]);
                current_index += kLayerSize;
                current_index += kLayerSize;
            if (offered_layers.find(layer) != offered_layers.end()) {
                if (offered_layers.find(layer) != offered_layers.end() &&
                int32_t num_of_publisher_ids = subscriptions_state.value.int32Values[current_index];
                    subscriptions_state_int_size > current_index) {
                    int32_t num_of_publisher_ids =
                            subscriptions_state.value.int32Values[current_index];
                    current_index++;
                    current_index++;
                    for (int j = 0; j < num_of_publisher_ids; j++) {
                    for (int j = 0; j < num_of_publisher_ids; j++) {
                    if (subscriptions_state.value.int32Values[current_index] ==
                        if (subscriptions_state_int_size > current_index &&
                            subscriptions_state.value.int32Values[current_index] ==
                                    offers.publisher_id) {
                                    offers.publisher_id) {
                        subscribed_layers.push_back(layer);
                            subscribed_layers.push_back(std::move(layer));
                        }
                        }
                        current_index++;
                        current_index++;
                    }
                    }
                }
                }
            }
            }
        }
        return subscribed_layers;
        return subscribed_layers;
    }
    }
    return {};
    return {};
@@ -300,6 +316,64 @@ VmsSessionStatus parseStartSessionMessage(const VehiclePropValue& start_session,
    return VmsSessionStatus::kInvalidMessage;
    return VmsSessionStatus::kInvalidMessage;
}
}


bool isAvailabilitySequenceNumberNewer(const VehiclePropValue& availability_state,
                                       const int last_seen_availability_sequence_number) {
    return (isValidVmsMessage(availability_state) &&
            (parseMessageType(availability_state) == VmsMessageType::AVAILABILITY_CHANGE ||
             parseMessageType(availability_state) == VmsMessageType::AVAILABILITY_RESPONSE) &&
            availability_state.value.int32Values.size() > kAvailabilitySequenceNumberIndex &&
            availability_state.value.int32Values[kAvailabilitySequenceNumberIndex] >
                    last_seen_availability_sequence_number);
}

int32_t getSequenceNumberForAvailabilityState(const VehiclePropValue& availability_state) {
    if (isValidVmsMessage(availability_state) &&
        (parseMessageType(availability_state) == VmsMessageType::AVAILABILITY_CHANGE ||
         parseMessageType(availability_state) == VmsMessageType::AVAILABILITY_RESPONSE) &&
        availability_state.value.int32Values.size() > kAvailabilitySequenceNumberIndex) {
        return availability_state.value.int32Values[kAvailabilitySequenceNumberIndex];
    }
    return -1;
}

std::vector<VmsAssociatedLayer> getAvailableLayers(const VehiclePropValue& availability_state) {
    if (isValidVmsMessage(availability_state) &&
        (parseMessageType(availability_state) == VmsMessageType::AVAILABILITY_CHANGE ||
         parseMessageType(availability_state) == VmsMessageType::AVAILABILITY_RESPONSE) &&
        availability_state.value.int32Values.size() >
                toInt(VmsAvailabilityStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS)) {
        int availability_state_int_size = availability_state.value.int32Values.size();
        const int32_t num_of_associated_layers = availability_state.value.int32Values[toInt(
                VmsAvailabilityStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS)];
        int current_index = toInt(VmsAvailabilityStateIntegerValuesIndex::LAYERS_START);
        std::vector<VmsAssociatedLayer> available_layers;
        for (int i = 0; i < num_of_associated_layers; i++) {
            if (availability_state_int_size < current_index + kLayerSize) {
                return {};
            }
            VmsLayer layer = VmsLayer(availability_state.value.int32Values[current_index],
                                      availability_state.value.int32Values[current_index + 1],
                                      availability_state.value.int32Values[current_index + 2]);
            current_index += kLayerSize;
            std::vector<int> publisher_ids;
            if (availability_state_int_size > current_index) {
                int32_t num_of_publisher_ids = availability_state.value.int32Values[current_index];
                current_index++;
                for (int j = 0; j < num_of_publisher_ids; j++) {
                    if (availability_state_int_size > current_index) {
                        publisher_ids.push_back(
                                availability_state.value.int32Values[current_index]);
                        current_index++;
                    }
                }
            }
            available_layers.emplace_back(layer, std::move(publisher_ids));
        }
        return available_layers;
    }
    return {};
}

}  // namespace vms
}  // namespace vms
}  // namespace V2_0
}  // namespace V2_0
}  // namespace vehicle
}  // namespace vehicle
+10 −0
Original line number Original line Diff line number Diff line
@@ -568,6 +568,16 @@ const ConfigDeclaration kVehicleProperties[]{
                 },
                 },
         .initialValue = {.int32Values = {(int)VehicleUnit::FAHRENHEIT}}},
         .initialValue = {.int32Values = {(int)VehicleUnit::FAHRENHEIT}}},


        {.config =
                 {
                         .prop = toInt(VehicleProperty::DISTANCE_DISPLAY_UNITS),
                         .access = VehiclePropertyAccess::READ_WRITE,
                         .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
                         .configArray = {(int)VehicleUnit::KILOMETER, (int)VehicleUnit::MILE},
                         .areaConfigs = {VehicleAreaConfig{.areaId = (0)}}
                 },
         .initialValue = {.int32Values = {(int)VehicleUnit::MILE}}},

        {.config =
        {.config =
                 {
                 {
                         .prop = toInt(VehicleProperty::NIGHT_MODE),
                         .prop = toInt(VehicleProperty::NIGHT_MODE),
+130 −4
Original line number Original line Diff line number Diff line
@@ -279,7 +279,7 @@ void testSubscribedLayers(VmsMessageType type) {
    VmsOffers offers = {123,
    VmsOffers offers = {123,
                        {VmsLayerOffering(VmsLayer(1, 0, 1), {VmsLayer(4, 1, 1)}),
                        {VmsLayerOffering(VmsLayer(1, 0, 1), {VmsLayer(4, 1, 1)}),
                         VmsLayerOffering(VmsLayer(2, 0, 1))}};
                         VmsLayerOffering(VmsLayer(2, 0, 1))}};
    auto message = createBaseVmsMessage(2);
    auto message = createBaseVmsMessage(16);
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
                                                   1234,  // sequence number
                                                   1234,  // sequence number
                                                   2,     // number of layers
                                                   2,     // number of layers
@@ -308,9 +308,28 @@ TEST(VmsUtilsTest, subscribedLayersForResponse) {
    testSubscribedLayers(VmsMessageType::SUBSCRIPTIONS_RESPONSE);
    testSubscribedLayers(VmsMessageType::SUBSCRIPTIONS_RESPONSE);
}
}


void testGetSubscribedLayersMalformedData(VmsMessageType type) {
    VmsOffers offers = {123,
                        {VmsLayerOffering(VmsLayer(1, 0, 1), {VmsLayer(4, 1, 1)}),
                         VmsLayerOffering(VmsLayer(2, 0, 1))}};
    auto message = createBaseVmsMessage(2);
    message->value.int32Values = hidl_vec<int32_t>{toInt(type), 1234};  // sequence number
    EXPECT_TRUE(isValidVmsMessage(*message));
    auto result = getSubscribedLayers(*message, offers);
    EXPECT_EQ(static_cast<int>(result.size()), 0);
}

TEST(VmsUtilsTest, subscribedLayersForMalformedChange) {
    testGetSubscribedLayersMalformedData(VmsMessageType::SUBSCRIPTIONS_CHANGE);
}

TEST(VmsUtilsTest, subscribedLayersForMalformedResponse) {
    testGetSubscribedLayersMalformedData(VmsMessageType::SUBSCRIPTIONS_RESPONSE);
}

void testSubscribedLayersWithDifferentSubtype(VmsMessageType type) {
void testSubscribedLayersWithDifferentSubtype(VmsMessageType type) {
    VmsOffers offers = {123, {VmsLayerOffering(VmsLayer(1, 0, 1))}};
    VmsOffers offers = {123, {VmsLayerOffering(VmsLayer(1, 0, 1))}};
    auto message = createBaseVmsMessage(2);
    auto message = createBaseVmsMessage(7);
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
                                                   1234,  // sequence number
                                                   1234,  // sequence number
                                                   1,     // number of layers
                                                   1,     // number of layers
@@ -332,7 +351,7 @@ TEST(VmsUtilsTest, subscribedLayersWithDifferentSubtypeForResponse) {


void subscribedLayersWithDifferentVersion(VmsMessageType type) {
void subscribedLayersWithDifferentVersion(VmsMessageType type) {
    VmsOffers offers = {123, {VmsLayerOffering(VmsLayer(1, 0, 1))}};
    VmsOffers offers = {123, {VmsLayerOffering(VmsLayer(1, 0, 1))}};
    auto message = createBaseVmsMessage(2);
    auto message = createBaseVmsMessage(7);
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
                                                   1234,             // sequence number
                                                   1234,             // sequence number
                                                   1,                // number of layers
                                                   1,                // number of layers
@@ -353,7 +372,7 @@ TEST(VmsUtilsTest, subscribedLayersWithDifferentVersionForResponse) {


void subscribedLayersWithDifferentPublisherId(VmsMessageType type) {
void subscribedLayersWithDifferentPublisherId(VmsMessageType type) {
    VmsOffers offers = {123, {VmsLayerOffering(VmsLayer(1, 0, 1))}};
    VmsOffers offers = {123, {VmsLayerOffering(VmsLayer(1, 0, 1))}};
    auto message = createBaseVmsMessage(2);
    auto message = createBaseVmsMessage(9);
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
                                                   1234,  // sequence number
                                                   1234,  // sequence number
                                                   0,     // number of layers
                                                   0,     // number of layers
@@ -475,6 +494,113 @@ TEST(VmsUtilsTest, startSessionInvalidMessageFormat) {
    EXPECT_EQ(new_service_id, 123);
    EXPECT_EQ(new_service_id, 123);
}
}


TEST(VmsUtilsTest, newAvailabilitySequenceNumberForExistingSmallerNumberForChange) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_CHANGE), 1234};
    EXPECT_TRUE(isAvailabilitySequenceNumberNewer(*message, 1233));
}

TEST(VmsUtilsTest, newAvailabilitySequenceNumberForExistingSmallerNumberForResponse) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_RESPONSE), 1234};
    EXPECT_TRUE(isAvailabilitySequenceNumberNewer(*message, 1233));
}

TEST(VmsUtilsTest, newAvailabilitySequenceNumberForExistingGreaterNumberForChange) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_CHANGE), 1234};
    EXPECT_FALSE(isAvailabilitySequenceNumberNewer(*message, 1235));
}

TEST(VmsUtilsTest, newAvailabilitySequenceNumberForExistingGreaterNumberForResponse) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_RESPONSE), 1234};
    EXPECT_FALSE(isAvailabilitySequenceNumberNewer(*message, 1235));
}

TEST(VmsUtilsTest, newAvailabilitySequenceNumberForSameNumberForChange) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_CHANGE), 1234};
    EXPECT_FALSE(isAvailabilitySequenceNumberNewer(*message, 1234));
}

TEST(VmsUtilsTest, newAvailabilitySequenceNumberForSameNumberForResponse) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_RESPONSE), 1234};
    EXPECT_FALSE(isAvailabilitySequenceNumberNewer(*message, 1234));
}

TEST(VmsUtilsTest, validSequenceNumberForAvailabilityChange) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_CHANGE), 1234};
    EXPECT_EQ(getSequenceNumberForAvailabilityState(*message), 1234);
}

TEST(VmsUtilsTest, validSequenceNumberForAvailabilityResponse) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values =
            hidl_vec<int32_t>{toInt(VmsMessageType::AVAILABILITY_RESPONSE), 1234};
    EXPECT_EQ(getSequenceNumberForAvailabilityState(*message), 1234);
}

TEST(VmsUtilsTest, invalidAvailabilityState) {
    auto message = createBaseVmsMessage(1);
    EXPECT_EQ(getSequenceNumberForAvailabilityState(*message), -1);
}

void testGetAvailableLayers(VmsMessageType type) {
    auto message = createBaseVmsMessage(13);
    message->value.int32Values = hidl_vec<int32_t>{toInt(type),
                                                   1234,  // sequence number
                                                   2,     // number of associated layers
                                                   1,     // associated layer 1
                                                   0,           1,
                                                   2,    // number of publisher IDs
                                                   111,  // publisher IDs
                                                   123,
                                                   2,                   // associated layer 2
                                                   0,           1, 0};  // number of publisher IDs
    EXPECT_TRUE(isValidVmsMessage(*message));
    auto result = getAvailableLayers(*message);
    EXPECT_EQ(static_cast<int>(result.size()), 2);
    EXPECT_EQ(result.at(0).layer, VmsLayer(1, 0, 1));
    EXPECT_EQ(result.at(0).publisher_ids.at(0), 111);
    EXPECT_EQ(result.at(0).publisher_ids.at(1), 123);
    EXPECT_EQ(result.at(1).layer, VmsLayer(2, 0, 1));
    EXPECT_EQ(static_cast<int>(result.at(1).publisher_ids.size()), 0);
}

TEST(VmsUtilsTest, availableLayersForChange) {
    testGetAvailableLayers(VmsMessageType::AVAILABILITY_CHANGE);
}

TEST(VmsUtilsTest, availableLayersForResponse) {
    testGetAvailableLayers(VmsMessageType::AVAILABILITY_RESPONSE);
}

void testGetAvailableLayersMalformedData(VmsMessageType type) {
    auto message = createBaseVmsMessage(2);
    message->value.int32Values = hidl_vec<int32_t>{toInt(type), 1234};  // sequence number
    EXPECT_TRUE(isValidVmsMessage(*message));
    auto result = getAvailableLayers(*message);
    EXPECT_EQ(static_cast<int>(result.size()), 0);
}

TEST(VmsUtilsTest, availableLayersForMalformedChange) {
    testGetAvailableLayersMalformedData(VmsMessageType::AVAILABILITY_CHANGE);
}

TEST(VmsUtilsTest, availableLayersForMalformedResponse) {
    testGetAvailableLayersMalformedData(VmsMessageType::AVAILABILITY_RESPONSE);
}

}  // namespace
}  // namespace


}  // namespace vms
}  // namespace vms
+7 −1
Original line number Original line Diff line number Diff line
@@ -299,6 +299,12 @@ a91b547f5922f39fe4231d97fac1c3825c1c1b0c8ef7a5136689ceed37e8bfe9 android.hardwar
e88e520f8c98a62fccd8d5316c6687808f775de145d1405a7a9a66587ee6a001 android.hardware.audio.effect@4.0::IVirtualizerEffect
e88e520f8c98a62fccd8d5316c6687808f775de145d1405a7a9a66587ee6a001 android.hardware.audio.effect@4.0::IVirtualizerEffect
fe28829dab10d171783b79ac9cc45412739f8ff275e90228d7c6370ef189b859 android.hardware.audio.effect@4.0::IVisualizerEffect
fe28829dab10d171783b79ac9cc45412739f8ff275e90228d7c6370ef189b859 android.hardware.audio.effect@4.0::IVisualizerEffect
21c8a702579356480236c6851b5b2c16b9bd369ce12bdd6ffdc4626a89f34f73 android.hardware.audio.effect@4.0::types
21c8a702579356480236c6851b5b2c16b9bd369ce12bdd6ffdc4626a89f34f73 android.hardware.audio.effect@4.0::types
a0f93c768c353cecee6237fe479bce47404eb10b629fafe07e32a054fd67f2af android.hardware.automotive.audiocontrol@1.0::IAudioControl
f2904a4c108ad1b93eb2fa4e43b82bd01ce1ff26156316e49d1d9fc80dfecaad android.hardware.automotive.evs@1.0::IEvsCamera
94cba6ad04c83aa840de2ed52b74ba2126a26dd960225e61ac36703315279a80 android.hardware.automotive.evs@1.0::IEvsCameraStream
5ea36fb043d9e3b413219de3dfd7b046b48af4fda39f167f3528652e986cb76d android.hardware.automotive.evs@1.0::IEvsDisplay
b15c5d8f28be4f0469c11d184ebca616895f109d553a6c31018789d8c1bc0ac5 android.hardware.automotive.evs@1.0::IEvsEnumerator
3b17c1fdfc389e0abe626c37054954b07201127d890c2bc05d47613ec1f4de4f android.hardware.automotive.evs@1.0::types
42a06dc288f61b0690580f3d37b30b663c31d74d50bb58d0772386b550d5faab android.hardware.authsecret@1.0::IAuthSecret
42a06dc288f61b0690580f3d37b30b663c31d74d50bb58d0772386b550d5faab android.hardware.authsecret@1.0::IAuthSecret
32cc50cc2a7658ec613c0c2dd2accbf6a05113b749852879e818b8b7b438db19 android.hardware.bluetooth.a2dp@1.0::IBluetoothAudioHost
32cc50cc2a7658ec613c0c2dd2accbf6a05113b749852879e818b8b7b438db19 android.hardware.bluetooth.a2dp@1.0::IBluetoothAudioHost
ff4be64d7992f8bec97dff37f35450e79b3430c61f85f54322ce45bef229dc3b android.hardware.bluetooth.a2dp@1.0::IBluetoothAudioOffload
ff4be64d7992f8bec97dff37f35450e79b3430c61f85f54322ce45bef229dc3b android.hardware.bluetooth.a2dp@1.0::IBluetoothAudioOffload
Loading