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

Commit 8acdc9d2 authored by Ray Essick's avatar Ray Essick
Browse files

Wrap statsd calls with SDK checks

protect mediametrics calls to statsd API with SDK thresholds.
Prevent invocation of an API on a release where it doesn't exist.
This is mostly for tooling to ensure safety; the
module-based mediametrics won't be enabled on devices earlier
than when statsd is available. If that was somehow changed,
this change would prevent jumping to the not-present routines;
the side effect would be no metrics logged in such a situation.

Bug: 189976186
Flag: EXEMPT refactor
Test: atest CtsMediaHostTestCases
Change-Id: I2efda592e927d5c73c981378bb94db15645d722d
parent f63279ff
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -108,11 +108,14 @@ bool statsd_audiopolicy(const std::shared_ptr<const mediametrics::Item>& item,
    }

    const stats::media_metrics::BytesField bf_serialized( serialized.c_str(), serialized.size());
    const int result = stats::media_metrics::stats_write(
    int result = 0;
    if (__builtin_available(android 33, *)) {
      result = stats::media_metrics::stats_write(
        stats::media_metrics::MEDIAMETRICS_AUDIOPOLICY_REPORTED,
        timestamp_nanos, package_name.c_str(), package_version_code,
        media_apex_version,
        bf_serialized);
    }
    std::stringstream log;
    log << "result:" << result << " {"
            << " mediametrics_audiopolicy_reported:"
+4 −1
Original line number Diff line number Diff line
@@ -148,12 +148,15 @@ bool statsd_audiorecord(const std::shared_ptr<const mediametrics::Item>& item,
    const auto log_session_id = mediametrics::ValidateId::get()->validateId(logSessionId);

    const stats::media_metrics::BytesField bf_serialized( serialized.c_str(), serialized.size());
    const int result = stats::media_metrics::stats_write(
    int result = 0;
    if (__builtin_available(android 33, *)) {
      result = stats::media_metrics::stats_write(
        stats::media_metrics::MEDIAMETRICS_AUDIORECORD_REPORTED,
        timestamp_nanos, package_name.c_str(), package_version_code,
        media_apex_version,
        bf_serialized,
        log_session_id.c_str());
    }
    std::stringstream log;
    log << "result:" << result << " {"
            << " mediametrics_audiorecord_reported:"
+4 −1
Original line number Diff line number Diff line
@@ -189,11 +189,14 @@ bool statsd_audiothread(const std::shared_ptr<const mediametrics::Item>& item,
    }

    const stats::media_metrics::BytesField bf_serialized( serialized.c_str(), serialized.size());
    const int result = stats::media_metrics::stats_write(
    int result = 0;
    if (__builtin_available(android 33, *)) {
      result = stats::media_metrics::stats_write(
        stats::media_metrics::MEDIAMETRICS_AUDIOTHREAD_REPORTED,
        timestamp_nanos, package_name.c_str(), package_version_code,
        media_apex_version,
        bf_serialized);
    }
    std::stringstream log;
    log << "result:" << result << " {"
            << " mediametrics_audiothread_reported:"
+4 −1
Original line number Diff line number Diff line
@@ -135,12 +135,15 @@ bool statsd_audiotrack(const std::shared_ptr<const mediametrics::Item>& item,
    const auto log_session_id = mediametrics::ValidateId::get()->validateId(logSessionId);

    const stats::media_metrics::BytesField bf_serialized( serialized.c_str(), serialized.size());
    const int result = stats::media_metrics::stats_write(
    int result = 0;
    if (__builtin_available(android 33, *)) {
        result = stats::media_metrics::stats_write(
                               stats::media_metrics::MEDIAMETRICS_AUDIOTRACK_REPORTED,
                               timestamp_nanos, package_name.c_str(), package_version_code,
                               media_apex_version,
                               bf_serialized,
                               log_session_id.c_str());
    }
    std::stringstream log;
    log << "result:" << result << " {"
            << " mediametrics_audiotrack_reported:"
+8 −2
Original line number Diff line number Diff line
@@ -760,7 +760,9 @@ bool statsd_codec(const std::shared_ptr<const mediametrics::Item>& item,
        parseVector(judderScoreHistogramStr, &statsJudderScoreHistogram);
        std::vector<int32_t> statsJudderScoreHistogramBuckets;
        parseVector(judderScoreHistogramBucketsStr, &statsJudderScoreHistogramBuckets);
        int result = stats_write(
        int result = -1;
        if (__builtin_available(android 33, *)) {
          result = stats_write(
            MEDIA_CODEC_RENDERED,
            statsUid,
            statsCodecId,
@@ -794,6 +796,7 @@ bool statsd_codec(const std::shared_ptr<const mediametrics::Item>& item,
            statsJudderRate,
            statsJudderScoreHistogram,
            statsJudderScoreHistogramBuckets);
        }
        ALOGE_IF(result < 0, "Failed to record MEDIA_CODEC_RENDERED atom (%d)", result);
    }

@@ -803,10 +806,13 @@ bool statsd_codec(const std::shared_ptr<const mediametrics::Item>& item,
        return false;
    }
    const stats::media_metrics::BytesField bf_serialized(serialized.c_str(), serialized.size());
    const int result = stats::media_metrics::stats_write(stats::media_metrics::MEDIAMETRICS_CODEC_REPORTED,
    int result = 0;
    if (__builtin_available(android 33, *)) {
        result = stats::media_metrics::stats_write(stats::media_metrics::MEDIAMETRICS_CODEC_REPORTED,
                               timestampNanos, packageName.c_str(), packageVersionCode,
                               mediaApexVersion,
                               bf_serialized);
    }

    std::stringstream log;
    log << "result:" << result << " {"
Loading