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

Commit 01f8f40c authored by Greg Kaiser's avatar Greg Kaiser Committed by Android (Google) Code Review
Browse files

Merge changes from topic "initialize-from-frame"

* changes:
  Update FrameMetricsReporterTests to test that we don't report any frames when fromFrame is not explicitly set
  Make sure fields are initialized before access
parents 37b480c7 75c654c0
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -45,7 +45,10 @@ public:
     * WARNING! This observer may not receive metrics for the last several frames that the app
     * produces.
     */
    FrameMetricsObserver(bool waitForPresentTime) : mWaitForPresentTime(waitForPresentTime) {}
    FrameMetricsObserver(bool waitForPresentTime)
            : mWaitForPresentTime(waitForPresentTime)
            , mSurfaceControlId(INT32_MAX)
            , mAttachedFrameNumber(UINT64_MAX) {}

private:
    const bool mWaitForPresentTime;
+19 −13
Original line number Diff line number Diff line
@@ -34,11 +34,13 @@ public:
    MOCK_METHOD(void, notify, (const int64_t* buffer), (override));
};

TEST(FrameMetricsReporter, reportsAllFramesIfNoFromFrameIsSpecified) {
// To make sure it is clear that something went wrong if no from frame is set (to make it easier
// to catch bugs were we forget to set the fromFrame).
TEST(FrameMetricsReporter, doesNotReportAnyFrameIfNoFromFrameIsSpecified) {
    auto reporter = std::make_shared<FrameMetricsReporter>();

    auto observer = sp<TestFrameMetricsObserver>::make(false /*waitForPresentTime*/);
    EXPECT_CALL(*observer, notify).Times(4);
    EXPECT_CALL(*observer, notify).Times(0);

    reporter->addObserver(observer.get());

@@ -62,17 +64,19 @@ TEST(FrameMetricsReporter, reportsAllFramesIfNoFromFrameIsSpecified) {
}

TEST(FrameMetricsReporter, respectsWaitForPresentTimeUnset) {
    auto reporter = std::make_shared<FrameMetricsReporter>();

    auto observer = sp<TestFrameMetricsObserver>::make(false /*waitForPresentTime*/);
    reporter->addObserver(observer.get());

    const int64_t* stats;
    bool hasPresentTime = false;
    uint64_t frameNumber = 3;
    int32_t surfaceControlId = 0;

    auto reporter = std::make_shared<FrameMetricsReporter>();

    auto observer = sp<TestFrameMetricsObserver>::make(hasPresentTime);
    observer->reportMetricsFrom(frameNumber, surfaceControlId);
    reporter->addObserver(observer.get());

    EXPECT_CALL(*observer, notify).Times(1);
    hasPresentTime = false;
    reporter->reportFrameMetrics(stats, hasPresentTime, frameNumber, surfaceControlId);

    EXPECT_CALL(*observer, notify).Times(0);
@@ -81,17 +85,19 @@ TEST(FrameMetricsReporter, respectsWaitForPresentTimeUnset) {
}

TEST(FrameMetricsReporter, respectsWaitForPresentTimeSet) {
    auto reporter = std::make_shared<FrameMetricsReporter>();

    auto observer = sp<TestFrameMetricsObserver>::make(true /*waitForPresentTime*/);
    reporter->addObserver(observer.get());

    const int64_t* stats;
    bool hasPresentTime = false;
    bool hasPresentTime = true;
    uint64_t frameNumber = 3;
    int32_t surfaceControlId = 0;

    auto reporter = std::make_shared<FrameMetricsReporter>();

    auto observer = sp<TestFrameMetricsObserver>::make(hasPresentTime);
    observer->reportMetricsFrom(frameNumber, surfaceControlId);
    reporter->addObserver(observer.get());

    EXPECT_CALL(*observer, notify).Times(0);
    hasPresentTime = false;
    reporter->reportFrameMetrics(stats, hasPresentTime, frameNumber, surfaceControlId);

    EXPECT_CALL(*observer, notify).Times(1);