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

Commit f0fbe515 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix vibrator VTS failure on older HAL versions" into sc-dev am: 5fe68156 am: 291a784a

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

Change-Id: I6331fd3c8e974a2fbd75638fd13f78cb307f4eb5
parents 9650c182 291a784a
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -71,6 +71,11 @@ class VibratorAidl : public testing::TestWithParam<std::string> {
    std::vector<int32_t> vibratorIds;
};

inline bool isUnknownOrUnsupported(Status status) {
    return status.exceptionCode() == Status::EX_UNSUPPORTED_OPERATION ||
           status.transactionError() == android::UNKNOWN_TRANSACTION;
}

TEST_P(VibratorAidl, ValidateExistingVibrators) {
    sp<IVibrator> vibrator;
    for (auto& id : vibratorIds) {
@@ -101,8 +106,8 @@ TEST_P(VibratorAidl, PrepareSyncedEmptySetIsInvalid) {

TEST_P(VibratorAidl, PrepareSyncedNotSupported) {
    if (!(capabilities & IVibratorManager::CAP_SYNC)) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  manager->prepareSynced(vibratorIds).exceptionCode());
        Status status = manager->prepareSynced(vibratorIds);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -116,8 +121,8 @@ TEST_P(VibratorAidl, PrepareOnNotSupported) {
        for (auto& id : vibratorIds) {
            EXPECT_TRUE(manager->getVibrator(id, &vibrator).isOk());
            ASSERT_NE(vibrator, nullptr);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                      vibrator->on(durationMs, nullptr).exceptionCode());
            Status status = vibrator->on(durationMs, nullptr);
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
        EXPECT_TRUE(manager->cancelSynced().isOk());
    }
@@ -134,7 +139,7 @@ TEST_P(VibratorAidl, PreparePerformNotSupported) {
            ASSERT_NE(vibrator, nullptr);
            int32_t lengthMs = 0;
            Status status = vibrator->perform(kEffects[0], kEffectStrengths[0], nullptr, &lengthMs);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
        EXPECT_TRUE(manager->cancelSynced().isOk());
    }
@@ -157,7 +162,7 @@ TEST_P(VibratorAidl, PrepareComposeNotSupported) {
            EXPECT_TRUE(manager->getVibrator(id, &vibrator).isOk());
            ASSERT_NE(vibrator, nullptr);
            Status status = vibrator->compose(composite, nullptr);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
        EXPECT_TRUE(manager->cancelSynced().isOk());
    }
@@ -191,8 +196,8 @@ TEST_P(VibratorAidl, TriggerWithCallback) {

TEST_P(VibratorAidl, TriggerSyncNotSupported) {
    if (!(capabilities & IVibratorManager::CAP_SYNC)) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  manager->triggerSynced(nullptr).exceptionCode());
        Status status = manager->triggerSynced(nullptr);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -201,8 +206,8 @@ TEST_P(VibratorAidl, TriggerCallbackNotSupported) {
    if (!(capabilities & IVibratorManager::CAP_TRIGGER_CALLBACK)) {
        sp<CompletionCallback> callback = new CompletionCallback([] {});
        EXPECT_TRUE(manager->prepareSynced(vibratorIds).isOk());
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  manager->triggerSynced(callback).exceptionCode());
        Status status = manager->triggerSynced(callback);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

+31 −24
Original line number Diff line number Diff line
@@ -112,6 +112,11 @@ class VibratorAidl : public testing::TestWithParam<std::tuple<int32_t, int32_t>>
    int32_t capabilities;
};

inline bool isUnknownOrUnsupported(Status status) {
    return status.exceptionCode() == Status::EX_UNSUPPORTED_OPERATION ||
           status.transactionError() == android::UNKNOWN_TRANSACTION;
}

static float getResonantFrequencyHz(sp<IVibrator> vibrator, int32_t capabilities) {
    float resonantFrequencyHz;
    Status status = vibrator->getResonantFrequency(&resonantFrequencyHz);
@@ -119,7 +124,7 @@ static float getResonantFrequencyHz(sp<IVibrator> vibrator, int32_t capabilities
        EXPECT_GT(resonantFrequencyHz, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
    return resonantFrequencyHz;
}
@@ -131,7 +136,7 @@ static float getFrequencyResolutionHz(sp<IVibrator> vibrator, int32_t capabiliti
        EXPECT_GT(freqResolutionHz, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
    return freqResolutionHz;
}
@@ -147,7 +152,7 @@ static float getFrequencyMinimumHz(sp<IVibrator> vibrator, int32_t capabilities)
        EXPECT_GT(freqMinimumHz, 0);
        EXPECT_LE(freqMinimumHz, resonantFrequencyHz);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
    return freqMinimumHz;
}
@@ -158,7 +163,7 @@ static float getFrequencyMaximumHz(sp<IVibrator> vibrator, int32_t capabilities)
    if (capabilities & IVibrator::CAP_FREQUENCY_CONTROL) {
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }

    float freqMaximumHz =
@@ -219,7 +224,8 @@ TEST_P(VibratorAidl, OnWithCallback) {
TEST_P(VibratorAidl, OnCallbackNotSupported) {
    if (!(capabilities & IVibrator::CAP_ON_CALLBACK)) {
        sp<CompletionCallback> callback = new CompletionCallback([] {});
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, vibrator->on(250, callback).exceptionCode());
        Status status = vibrator->on(250, callback);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -240,8 +246,8 @@ TEST_P(VibratorAidl, ValidateEffect) {
                EXPECT_GT(lengthMs, 0);
                usleep(lengthMs * 1000);
            } else {
                EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION)
                    << toString(effect) << " " << toString(strength);
                EXPECT_TRUE(isUnknownOrUnsupported(status))
                        << status << " " << toString(effect) << " " << toString(strength);
            }
        }
    }
@@ -270,7 +276,7 @@ TEST_P(VibratorAidl, ValidateEffectWithCallback) {
                EXPECT_TRUE(status.isOk());
                EXPECT_GT(lengthMs, 0);
            } else {
                EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
                EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
            }

            if (!status.isOk())
@@ -293,7 +299,7 @@ TEST_P(VibratorAidl, ValidateEffectWithCallbackNotSupported) {
            sp<CompletionCallback> callback = new CompletionCallback([] {});
            int lengthMs;
            Status status = vibrator->perform(effect, strength, callback, &lengthMs);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
    }
}
@@ -311,8 +317,8 @@ TEST_P(VibratorAidl, InvalidEffectsUnsupported) {
        for (EffectStrength strength : kInvalidEffectStrengths) {
            int32_t lengthMs;
            Status status = vibrator->perform(effect, strength, nullptr /*callback*/, &lengthMs);
            EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION)
                << toString(effect) << " " << toString(strength);
            EXPECT_TRUE(isUnknownOrUnsupported(status))
                    << status << " " << toString(effect) << " " << toString(strength);
        }
    }
}
@@ -338,7 +344,8 @@ TEST_P(VibratorAidl, AmplitudeOutsideRangeFails) {

TEST_P(VibratorAidl, AmplitudeReturnsUnsupportedMatchingCapabilities) {
    if ((capabilities & IVibrator::CAP_AMPLITUDE_CONTROL) == 0) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, vibrator->setAmplitude(1).exceptionCode());
        Status status = vibrator->setAmplitude(1);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -362,7 +369,7 @@ TEST_P(VibratorAidl, ExternalAmplitudeControl) {
        if (supportsExternalAmplitudeControl) {
            EXPECT_TRUE(amplitudeStatus.isOk());
        } else {
            EXPECT_EQ(amplitudeStatus.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
            EXPECT_TRUE(isUnknownOrUnsupported(amplitudeStatus)) << amplitudeStatus;
        }
        EXPECT_TRUE(vibrator->setExternalControl(false).isOk());
    } else {
@@ -372,8 +379,8 @@ TEST_P(VibratorAidl, ExternalAmplitudeControl) {

TEST_P(VibratorAidl, ExternalControlUnsupportedMatchingCapabilities) {
    if ((capabilities & IVibrator::CAP_EXTERNAL_CONTROL) == 0) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  vibrator->setExternalControl(true).exceptionCode());
        Status status = vibrator->setExternalControl(true);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -410,7 +417,7 @@ TEST_P(VibratorAidl, GetPrimitiveDuration) {
            if (isPrimitiveSupported) {
                EXPECT_EQ(Status::EX_NONE, status.exceptionCode());
            } else {
                EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
                EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
            }
        }
    }
@@ -473,8 +480,8 @@ TEST_P(VibratorAidl, ComposeUnsupportedPrimitives) {
                effect.primitive = primitive;
                effect.scale = 1.0f;
            }
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                      vibrator->compose(composite, nullptr).exceptionCode());
            Status status = vibrator->compose(composite, nullptr);
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
            vibrator->off();
        }
    }
@@ -618,8 +625,8 @@ TEST_P(VibratorAidl, AlwaysOn) {
                    EXPECT_EQ(Status::EX_NONE, status.exceptionCode())
                        << toString(effect) << " " << toString(strength);
                } else {
                    EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode())
                        << toString(effect) << " " << toString(strength);
                    EXPECT_TRUE(isUnknownOrUnsupported(status))
                            << status << " " << toString(effect) << " " << toString(strength);
                }
            }
        }
@@ -639,7 +646,7 @@ TEST_P(VibratorAidl, GetQFactor) {
        ASSERT_GT(qFactor, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -668,7 +675,7 @@ TEST_P(VibratorAidl, GetBandwidthAmplitudeMap) {
            ASSERT_LE(e, 1.0);
        }
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -690,7 +697,7 @@ TEST_P(VibratorAidl, GetPwleCompositionSizeMax) {
        ASSERT_NE(maxSize, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -703,7 +710,7 @@ TEST_P(VibratorAidl, GetSupportedBraking) {
        ASSERT_TRUE(isDefaultNoneSupported);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}