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

Commit 72d5d90b 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

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

Change-Id: I8d91acb10993c460ed641231131642d355f32fcf
parents 52ed5b71 5fe68156
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;
    }
}