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

Commit 40d82c17 authored by Jimmy Chen's avatar Jimmy Chen Committed by Presubmit Automerger Backend
Browse files

[automerge] wifi: fix NULL pointer in unit tests 2p: 1cfe0814

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/interfaces/+/16942044

Bug: 217267980
Change-Id: I57c92122d0849a04beeadcbc80d01b27168ffa87
parents bce4d0d2 1cfe0814
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -66,7 +66,9 @@ class WifiRttControllerHidlTest : public ::testing::TestWithParam<std::string> {
        stopWifi(GetInstanceName());

        wifi_rtt_controller_ = getWifiRttController();
        ASSERT_NE(nullptr, wifi_rtt_controller_.get());
        if (wifi_rtt_controller_.get() == nullptr) {
            GTEST_SKIP() << "Skipping this test since API is deprecated.";
        }

        // Check RTT support before we run the test.
        std::pair<WifiStatus, RttCapabilities> status_and_caps;
@@ -79,7 +81,7 @@ class WifiRttControllerHidlTest : public ::testing::TestWithParam<std::string> {

    virtual void TearDown() override { stopWifi(GetInstanceName()); }

    // A simple test implementation of WifiChipEventCallback.
    // A simple test implementation of WifiRttControllerEventCallback.
    class WifiRttControllerEventCallback
        : public ::testing::VtsHalHidlTargetCallbackBase<
              WifiRttControllerHidlTest>,
@@ -122,6 +124,11 @@ class WifiRttControllerHidlTest : public ::testing::TestWithParam<std::string> {

        const auto& status_and_controller =
            HIDL_INVOKE(wifi_chip, createRttController_1_4, wifi_sta_iface);

        if (status_and_controller.first.code == WifiStatusCode::ERROR_NOT_SUPPORTED) {
            return nullptr;
        }

        EXPECT_EQ(WifiStatusCode::SUCCESS, status_and_controller.first.code);
        EXPECT_NE(nullptr, status_and_controller.second.get());

+5 −0
Original line number Diff line number Diff line
@@ -94,6 +94,11 @@ TEST_P(WifiStaIfaceHidlTest, GetLinkLayerStats_1_5) {
    // Retrieve link layer stats.
    const auto& status_and_stats =
        HIDL_INVOKE(wifi_sta_iface_, getLinkLayerStats_1_5);

    if (status_and_stats.first.code == WifiStatusCode::ERROR_NOT_SUPPORTED) {
        GTEST_SKIP() << "Skipping this test since API is deprecated.";
    }

    EXPECT_EQ(WifiStatusCode::SUCCESS, status_and_stats.first.code);
    EXPECT_GT(status_and_stats.second.timeStampInMs, 0u);
    // Try to create 2nd iface. If yes, it should fill in the duty cycle field.
+4 −0
Original line number Diff line number Diff line
@@ -56,6 +56,10 @@ class MockWifiLegacyHal : public WifiLegacyHal {
                 wifi_error(const std::string& ifname, wifi_interface_type iftype));
    MOCK_METHOD1(deleteVirtualInterface, wifi_error(const std::string& ifname));
    MOCK_METHOD0(waitForDriverReady, wifi_error());
    MOCK_METHOD2(getSupportedIfaceName, wifi_error(uint32_t, std::string&));
    MOCK_METHOD1(registerSubsystemRestartCallbackHandler,
                 wifi_error(const on_subsystem_restart_callback&));
    MOCK_METHOD1(getSupportedFeatureSet, std::pair<wifi_error, uint64_t>(const std::string&));
};
}  // namespace legacy_hal
}  // namespace implementation
+3 −0
Original line number Diff line number Diff line
@@ -278,6 +278,9 @@ class WifiChipTest : public Test {
                .WillRepeatedly(testing::Return(true));
        EXPECT_CALL(*legacy_hal_, start())
                .WillRepeatedly(testing::Return(legacy_hal::WIFI_SUCCESS));
        // Vendor HAL does not override the name by default.
        EXPECT_CALL(*legacy_hal_, getSupportedIfaceName(testing::_, testing::_))
                .WillRepeatedly(testing::Return(legacy_hal::WIFI_ERROR_UNKNOWN));
    }

    void TearDown() override {
+51 −2
Original line number Diff line number Diff line
@@ -791,8 +791,57 @@ std::pair<WifiStatus, uint32_t> WifiChip::getCapabilitiesInternal() {

std::pair<WifiStatus, std::vector<V1_0::IWifiChip::ChipMode>>
WifiChip::getAvailableModesInternal() {
    // Deprecated support -- use getAvailableModes_1_6.
    return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}};
    // Deprecated support -- use getAvailableModes_1_6 for more granular concurrency combinations.
    std::vector<V1_0::IWifiChip::ChipMode> modes_1_0 = {};
    for (const auto& mode_1_6 : modes_) {
        std::vector<V1_0::IWifiChip::ChipIfaceCombination> combos_1_0;
        for (const auto& combo_1_6 : mode_1_6.availableCombinations) {
            std::vector<V1_0::IWifiChip::ChipIfaceCombinationLimit> limits_1_0;
            for (const auto& limit_1_6 : combo_1_6.limits) {
                std::vector<IfaceType> types_1_0;
                for (IfaceConcurrencyType type_1_6 : limit_1_6.types) {
                    switch (type_1_6) {
                        case IfaceConcurrencyType::STA:
                            types_1_0.push_back(IfaceType::STA);
                            break;
                        case IfaceConcurrencyType::AP:
                            types_1_0.push_back(IfaceType::AP);
                            break;
                        case IfaceConcurrencyType::AP_BRIDGED:
                            // Ignore AP_BRIDGED
                            break;
                        case IfaceConcurrencyType::P2P:
                            types_1_0.push_back(IfaceType::P2P);
                            break;
                        case IfaceConcurrencyType::NAN:
                            types_1_0.push_back(IfaceType::NAN);
                            break;
                    }
                }
                if (types_1_0.empty()) {
                    continue;
                }
                V1_0::IWifiChip::ChipIfaceCombinationLimit limit_1_0;
                limit_1_0.types = hidl_vec(types_1_0);
                limit_1_0.maxIfaces = limit_1_6.maxIfaces;
                limits_1_0.push_back(limit_1_0);
            }
            if (limits_1_0.empty()) {
                continue;
            }
            V1_0::IWifiChip::ChipIfaceCombination combo_1_0;
            combo_1_0.limits = hidl_vec(limits_1_0);
            combos_1_0.push_back(combo_1_0);
        }
        if (combos_1_0.empty()) {
            continue;
        }
        V1_0::IWifiChip::ChipMode mode_1_0;
        mode_1_0.id = mode_1_6.id;
        mode_1_0.availableCombinations = hidl_vec(combos_1_0);
        modes_1_0.push_back(mode_1_0);
    }
    return {createWifiStatus(WifiStatusCode::SUCCESS), modes_1_0};
}

WifiStatus WifiChip::configureChipInternal(
Loading