diff options
-rw-r--r-- | aidl/gui/android/view/LayerMetadataKey.aidl | 2 | ||||
-rw-r--r-- | libs/gui/LayerMetadata.cpp | 2 | ||||
-rw-r--r-- | libs/gui/include/gui/ISurfaceComposerClient.h | 1 | ||||
-rw-r--r-- | libs/gui/include/gui/LayerMetadata.h | 2 | ||||
-rw-r--r-- | services/surfaceflinger/BufferQueueLayer.cpp | 8 | ||||
-rw-r--r-- | services/surfaceflinger/FrameTimeline/FrameTimeline.cpp | 34 | ||||
-rw-r--r-- | services/surfaceflinger/FrameTimeline/FrameTimeline.h | 18 | ||||
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 7 | ||||
-rw-r--r-- | services/surfaceflinger/Layer.h | 6 | ||||
-rw-r--r-- | services/surfaceflinger/tests/unittests/FrameTimelineTest.cpp | 70 |
10 files changed, 91 insertions, 59 deletions
diff --git a/aidl/gui/android/view/LayerMetadataKey.aidl b/aidl/gui/android/view/LayerMetadataKey.aidl index 7026ca8fad..491c629278 100644 --- a/aidl/gui/android/view/LayerMetadataKey.aidl +++ b/aidl/gui/android/view/LayerMetadataKey.aidl @@ -23,4 +23,6 @@ enum LayerMetadataKey { METADATA_WINDOW_TYPE = 2, METADATA_TASK_ID = 3, METADATA_MOUSE_CURSOR = 4, + METADATA_ACCESSIBILITY_ID = 5, + METADATA_OWNER_PID = 6, } diff --git a/libs/gui/LayerMetadata.cpp b/libs/gui/LayerMetadata.cpp index b3eb9940b2..30c9b373ef 100644 --- a/libs/gui/LayerMetadata.cpp +++ b/libs/gui/LayerMetadata.cpp @@ -122,6 +122,8 @@ std::string LayerMetadata::itemToString(uint32_t key, const char* separator) con return StringPrintf("windowType%s%d", separator, getInt32(key, 0)); case view::LayerMetadataKey::METADATA_TASK_ID: return StringPrintf("taskId%s%d", separator, getInt32(key, 0)); + case view::LayerMetadataKey::METADATA_OWNER_PID: + return StringPrintf("ownerPID%s%d", separator, getInt32(key, 0)); default: return StringPrintf("%d%s%dbytes", key, separator, static_cast<int>(mMap.at(key).size())); diff --git a/libs/gui/include/gui/ISurfaceComposerClient.h b/libs/gui/include/gui/ISurfaceComposerClient.h index 4a92f535a2..9e9e191480 100644 --- a/libs/gui/include/gui/ISurfaceComposerClient.h +++ b/libs/gui/include/gui/ISurfaceComposerClient.h @@ -52,6 +52,7 @@ public: eFXSurfaceMask = 0x000F0000, }; + // TODO(b/172002646): Clean up the Surface Creation Arguments /* * Requires ACCESS_SURFACE_FLINGER permission */ diff --git a/libs/gui/include/gui/LayerMetadata.h b/libs/gui/include/gui/LayerMetadata.h index d58e019799..ac48aefae6 100644 --- a/libs/gui/include/gui/LayerMetadata.h +++ b/libs/gui/include/gui/LayerMetadata.h @@ -27,6 +27,8 @@ enum { METADATA_WINDOW_TYPE = 2, METADATA_TASK_ID = 3, METADATA_MOUSE_CURSOR = 4, + METADATA_ACCESSIBILITY_ID = 5, + METADATA_OWNER_PID = 6, }; struct LayerMetadata : public Parcelable { diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp index 9ab2974801..71b05fd2bf 100644 --- a/services/surfaceflinger/BufferQueueLayer.cpp +++ b/services/surfaceflinger/BufferQueueLayer.cpp @@ -442,8 +442,8 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { } auto surfaceFrame = - mFlinger->mFrameTimeline->createSurfaceFrameForToken(mOwnerUid, mName, mName, - mFrameTimelineVsyncId); + mFlinger->mFrameTimeline->createSurfaceFrameForToken(mOwnerPid, mOwnerUid, mName, + mName, mFrameTimelineVsyncId); surfaceFrame->setActualQueueTime(systemTime()); mQueueItems.push_back({item, std::move(surfaceFrame)}); @@ -481,8 +481,8 @@ void BufferQueueLayer::onFrameReplaced(const BufferItem& item) { } auto surfaceFrame = - mFlinger->mFrameTimeline->createSurfaceFrameForToken(mOwnerUid, mName, mName, - mFrameTimelineVsyncId); + mFlinger->mFrameTimeline->createSurfaceFrameForToken(mOwnerPid, mOwnerUid, mName, + mName, mFrameTimelineVsyncId); surfaceFrame->setActualQueueTime(systemTime()); mQueueItems[mQueueItems.size() - 1].item = item; mQueueItems[mQueueItems.size() - 1].surfaceFrame = std::move(surfaceFrame); diff --git a/services/surfaceflinger/FrameTimeline/FrameTimeline.cpp b/services/surfaceflinger/FrameTimeline/FrameTimeline.cpp index 996479c1c7..bd87482dc6 100644 --- a/services/surfaceflinger/FrameTimeline/FrameTimeline.cpp +++ b/services/surfaceflinger/FrameTimeline/FrameTimeline.cpp @@ -177,10 +177,11 @@ void TokenManager::flushTokens(nsecs_t flushTime) { } } -SurfaceFrame::SurfaceFrame(uid_t ownerUid, std::string layerName, std::string debugName, - PredictionState predictionState, +SurfaceFrame::SurfaceFrame(pid_t ownerPid, uid_t ownerUid, std::string layerName, + std::string debugName, PredictionState predictionState, frametimeline::TimelineItem&& predictions) - : mOwnerUid(ownerUid), + : mOwnerPid(ownerPid), + mOwnerUid(ownerUid), mLayerName(std::move(layerName)), mDebugName(std::move(debugName)), mPresentState(PresentState::Unknown), @@ -241,14 +242,6 @@ TimeStats::JankType SurfaceFrame::getJankType() const { return mJankType; } -uid_t SurfaceFrame::getOwnerUid() const { - return mOwnerUid; -} - -const std::string& SurfaceFrame::getName() const { - return mLayerName; -} - nsecs_t SurfaceFrame::getBaseTime() const { std::lock_guard<std::mutex> lock(mMutex); nsecs_t baseTime = std::numeric_limits<nsecs_t>::max(); @@ -285,6 +278,8 @@ void SurfaceFrame::dump(std::string& result, const std::string& indent, nsecs_t } StringAppendF(&result, "\n"); StringAppendF(&result, "%s", indent.c_str()); + StringAppendF(&result, "Owner Pid : %d\n", mOwnerPid); + StringAppendF(&result, "%s", indent.c_str()); StringAppendF(&result, "Present State : %s\n", presentStateToString(mPresentState).c_str()); StringAppendF(&result, "%s", indent.c_str()); StringAppendF(&result, "Prediction State : %s\n", toString(mPredictionState).c_str()); @@ -311,20 +306,23 @@ FrameTimeline::DisplayFrame::DisplayFrame() } std::unique_ptr<android::frametimeline::SurfaceFrame> FrameTimeline::createSurfaceFrameForToken( - uid_t uid, std::string layerName, std::string debugName, std::optional<int64_t> token) { + pid_t ownerPid, uid_t ownerUid, std::string layerName, std::string debugName, + std::optional<int64_t> token) { ATRACE_CALL(); if (!token) { - return std::make_unique<impl::SurfaceFrame>(uid, std::move(layerName), std::move(debugName), - PredictionState::None, TimelineItem()); + return std::make_unique<impl::SurfaceFrame>(ownerPid, ownerUid, std::move(layerName), + std::move(debugName), PredictionState::None, + TimelineItem()); } std::optional<TimelineItem> predictions = mTokenManager.getPredictionsForToken(*token); if (predictions) { - return std::make_unique<impl::SurfaceFrame>(uid, std::move(layerName), std::move(debugName), - PredictionState::Valid, + return std::make_unique<impl::SurfaceFrame>(ownerPid, ownerUid, std::move(layerName), + std::move(debugName), PredictionState::Valid, std::move(*predictions)); } - return std::make_unique<impl::SurfaceFrame>(uid, std::move(layerName), std::move(debugName), - PredictionState::Expired, TimelineItem()); + return std::make_unique<impl::SurfaceFrame>(ownerPid, ownerUid, std::move(layerName), + std::move(debugName), PredictionState::Expired, + TimelineItem()); } void FrameTimeline::addSurfaceFrame( diff --git a/services/surfaceflinger/FrameTimeline/FrameTimeline.h b/services/surfaceflinger/FrameTimeline/FrameTimeline.h index 33821e51c3..e61567ecae 100644 --- a/services/surfaceflinger/FrameTimeline/FrameTimeline.h +++ b/services/surfaceflinger/FrameTimeline/FrameTimeline.h @@ -107,6 +107,7 @@ public: virtual nsecs_t getActualQueueTime() const = 0; virtual PresentState getPresentState() const = 0; virtual PredictionState getPredictionState() const = 0; + virtual pid_t getOwnerPid() const = 0; virtual void setPresentState(PresentState state) = 0; @@ -131,7 +132,7 @@ public: // Sets the PredictionState of SurfaceFrame. // Debug name is the human-readable debugging string for dumpsys. virtual std::unique_ptr<SurfaceFrame> createSurfaceFrameForToken( - uid_t uid, std::string layerName, std::string debugName, + pid_t ownerPid, uid_t ownerUid, std::string layerName, std::string debugName, std::optional<int64_t> token) = 0; // Adds a new SurfaceFrame to the current DisplayFrame. Frames from multiple layers can be @@ -190,7 +191,7 @@ private: class SurfaceFrame : public android::frametimeline::SurfaceFrame { public: - SurfaceFrame(uid_t uid, std::string layerName, std::string debugName, + SurfaceFrame(pid_t ownerPid, uid_t ownerUid, std::string layerName, std::string debugName, PredictionState predictionState, TimelineItem&& predictions); ~SurfaceFrame() = default; @@ -199,6 +200,11 @@ public: nsecs_t getActualQueueTime() const override; PresentState getPresentState() const override; PredictionState getPredictionState() const override { return mPredictionState; }; + pid_t getOwnerPid() const override { return mOwnerPid; }; + TimeStats::JankType getJankType() const; + nsecs_t getBaseTime() const; + uid_t getOwnerUid() const { return mOwnerUid; }; + const std::string& getName() const { return mLayerName; }; void setActualStartTime(nsecs_t actualStartTime) override; void setActualQueueTime(nsecs_t actualQueueTime) override; @@ -206,14 +212,12 @@ public: void setPresentState(PresentState state) override; void setActualPresentTime(nsecs_t presentTime); void setJankInfo(TimeStats::JankType jankType, int32_t jankMetadata); - TimeStats::JankType getJankType() const; - nsecs_t getBaseTime() const; - uid_t getOwnerUid() const; - const std::string& getName() const; + // All the timestamps are dumped relative to the baseTime void dump(std::string& result, const std::string& indent, nsecs_t baseTime); private: + const pid_t mOwnerPid; const uid_t mOwnerUid; const std::string mLayerName; const std::string mDebugName; @@ -234,7 +238,7 @@ public: frametimeline::TokenManager* getTokenManager() override { return &mTokenManager; } std::unique_ptr<frametimeline::SurfaceFrame> createSurfaceFrameForToken( - uid_t ownerUid, std::string layerName, std::string debugName, + pid_t ownerPid, uid_t ownerUid, std::string layerName, std::string debugName, std::optional<int64_t> token) override; void addSurfaceFrame(std::unique_ptr<frametimeline::SurfaceFrame> surfaceFrame, SurfaceFrame::PresentState state) override; diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index ffae56fb26..b60acde2a6 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -150,9 +150,11 @@ Layer::Layer(const LayerCreationArgs& args) if (mCallingUid == AID_GRAPHICS || mCallingUid == AID_SYSTEM) { // If the system didn't send an ownerUid, use the callingUid for the ownerUid. mOwnerUid = args.metadata.getInt32(METADATA_OWNER_UID, mCallingUid); + mOwnerPid = args.metadata.getInt32(METADATA_OWNER_PID, mCallingPid); } else { // A create layer request from a non system request cannot specify the owner uid mOwnerUid = mCallingUid; + mOwnerPid = mCallingPid; } } @@ -900,8 +902,9 @@ bool Layer::applyPendingStates(State* stateToCommit) { : std::make_optional(stateToCommit->frameTimelineVsyncId); auto surfaceFrame = - mFlinger->mFrameTimeline->createSurfaceFrameForToken(getOwnerUid(), mName, - mTransactionName, vsyncId); + mFlinger->mFrameTimeline->createSurfaceFrameForToken(getOwnerPid(), getOwnerUid(), + mName, mTransactionName, + vsyncId); surfaceFrame->setActualQueueTime(stateToCommit->postTime); // For transactions we set the acquire fence time to the post time as we // don't have a buffer. For BufferStateLayer it is overridden in diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index 5cb56a5a16..b1ab9ec306 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -855,6 +855,8 @@ public: uid_t getOwnerUid() { return mOwnerUid; } + pid_t getOwnerPid() { return mOwnerPid; } + // This layer is not a clone, but it's the parent to the cloned hierarchy. The // variable mClonedChild represents the top layer that will be cloned so this // layer will be the parent of mClonedChild. @@ -1047,6 +1049,10 @@ protected: // If created from a system process, the value can be passed in. uid_t mOwnerUid; + // The owner pid of the layer. If created from a non system process, it will be the calling pid. + // If created from a system process, the value can be passed in. + pid_t mOwnerPid; + private: virtual void setTransformHint(ui::Transform::RotationFlags) {} diff --git a/services/surfaceflinger/tests/unittests/FrameTimelineTest.cpp b/services/surfaceflinger/tests/unittests/FrameTimelineTest.cpp index 5e9d64af0f..03c6f70db5 100644 --- a/services/surfaceflinger/tests/unittests/FrameTimelineTest.cpp +++ b/services/surfaceflinger/tests/unittests/FrameTimelineTest.cpp @@ -95,6 +95,8 @@ public: static const std::string sLayerNameOne = "layer1"; static const std::string sLayerNameTwo = "layer2"; static constexpr const uid_t sUidOne = 0; +static constexpr pid_t sPidOne = 10; +static constexpr pid_t sPidTwo = 20; TEST_F(FrameTimelineTest, tokenManagerRemovesStalePredictions) { int64_t token1 = mTokenManager->generateTokenForPredictions({0, 0, 0}); @@ -111,8 +113,17 @@ TEST_F(FrameTimelineTest, tokenManagerRemovesStalePredictions) { EXPECT_EQ(compareTimelineItems(*predictions, TimelineItem(10, 20, 30)), true); } +TEST_F(FrameTimelineTest, createSurfaceFrameForToken_getOwnerPidReturnsCorrectPid) { + auto surfaceFrame1 = mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, std::nullopt); + auto surfaceFrame2 = mFrameTimeline->createSurfaceFrameForToken(sPidTwo, sUidOne, sLayerNameOne, + sLayerNameOne, std::nullopt); + EXPECT_EQ(surfaceFrame1->getOwnerPid(), sPidOne); + EXPECT_EQ(surfaceFrame2->getOwnerPid(), sPidTwo); +} + TEST_F(FrameTimelineTest, createSurfaceFrameForToken_noToken) { - auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, + auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, sLayerNameOne, std::nullopt); EXPECT_EQ(surfaceFrame->getPredictionState(), PredictionState::None); } @@ -120,7 +131,7 @@ TEST_F(FrameTimelineTest, createSurfaceFrameForToken_noToken) { TEST_F(FrameTimelineTest, createSurfaceFrameForToken_expiredToken) { int64_t token1 = mTokenManager->generateTokenForPredictions({0, 0, 0}); flushTokens(systemTime() + maxTokenRetentionTime); - auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, + auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, sLayerNameOne, token1); EXPECT_EQ(surfaceFrame->getPredictionState(), PredictionState::Expired); @@ -128,7 +139,7 @@ TEST_F(FrameTimelineTest, createSurfaceFrameForToken_expiredToken) { TEST_F(FrameTimelineTest, createSurfaceFrameForToken_validToken) { int64_t token1 = mTokenManager->generateTokenForPredictions({10, 20, 30}); - auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, + auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, sLayerNameOne, token1); EXPECT_EQ(surfaceFrame->getPredictionState(), PredictionState::Valid); @@ -141,7 +152,7 @@ TEST_F(FrameTimelineTest, presentFenceSignaled_droppedFramesNotUpdated) { int64_t token1 = mTokenManager->generateTokenForPredictions({10, 20, 30}); int64_t token2 = mTokenManager->generateTokenForPredictions({40, 50, 60}); - auto surfaceFrame1 = mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, + auto surfaceFrame1 = mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, sLayerNameOne, token1); // Set up the display frame @@ -166,11 +177,11 @@ TEST_F(FrameTimelineTest, presentFenceSignaled_presentedFramesUpdated) { int64_t sfToken1 = mTokenManager->generateTokenForPredictions({22, 26, 30}); int64_t sfToken2 = mTokenManager->generateTokenForPredictions({52, 56, 60}); auto surfaceFrame1 = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, sLayerNameOne, - surfaceFrameToken1); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, surfaceFrameToken1); auto surfaceFrame2 = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameTwo, sLayerNameTwo, - surfaceFrameToken1); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameTwo, + sLayerNameTwo, surfaceFrameToken1); mFrameTimeline->setSfWakeUp(sfToken1, 22); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame1), SurfaceFrame::PresentState::Presented); @@ -190,8 +201,8 @@ TEST_F(FrameTimelineTest, presentFenceSignaled_presentedFramesUpdated) { // Trigger a flush by finalizing the next DisplayFrame auto presentFence2 = fenceFactory.createFenceTimeForTest(Fence::NO_FENCE); auto surfaceFrame3 = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, sLayerNameOne, - surfaceFrameToken2); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, surfaceFrameToken2); mFrameTimeline->setSfWakeUp(sfToken2, 52); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame3), SurfaceFrame::PresentState::Dropped); mFrameTimeline->setSfPresent(56, presentFence2); @@ -213,8 +224,8 @@ TEST_F(FrameTimelineTest, displayFramesSlidingWindowMovesAfterLimit) { int64_t sfToken = mTokenManager->generateTokenForPredictions( {22 + frameTimeFactor, 26 + frameTimeFactor, 30 + frameTimeFactor}); auto surfaceFrame = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, sLayerNameOne, - surfaceFrameToken); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, surfaceFrameToken); mFrameTimeline->setSfWakeUp(sfToken, 22 + frameTimeFactor); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame), SurfaceFrame::PresentState::Presented); @@ -235,8 +246,8 @@ TEST_F(FrameTimelineTest, displayFramesSlidingWindowMovesAfterLimit) { int64_t sfToken = mTokenManager->generateTokenForPredictions( {22 + frameTimeFactor, 26 + frameTimeFactor, 30 + frameTimeFactor}); auto surfaceFrame = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, sLayerNameOne, - surfaceFrameToken); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, surfaceFrameToken); mFrameTimeline->setSfWakeUp(sfToken, 22 + frameTimeFactor); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame), SurfaceFrame::PresentState::Presented); mFrameTimeline->setSfPresent(27 + frameTimeFactor, presentFence); @@ -251,7 +262,7 @@ TEST_F(FrameTimelineTest, displayFramesSlidingWindowMovesAfterLimit) { TEST_F(FrameTimelineTest, surfaceFrameEndTimeAcquireFenceAfterQueue) { auto surfaceFrame = - mFrameTimeline->createSurfaceFrameForToken(0, "acquireFenceAfterQueue", + mFrameTimeline->createSurfaceFrameForToken(sPidOne, 0, "acquireFenceAfterQueue", "acquireFenceAfterQueue", std::nullopt); surfaceFrame->setActualQueueTime(123); surfaceFrame->setAcquireFenceTime(456); @@ -260,7 +271,7 @@ TEST_F(FrameTimelineTest, surfaceFrameEndTimeAcquireFenceAfterQueue) { TEST_F(FrameTimelineTest, surfaceFrameEndTimeAcquireFenceBeforeQueue) { auto surfaceFrame = - mFrameTimeline->createSurfaceFrameForToken(0, "acquireFenceAfterQueue", + mFrameTimeline->createSurfaceFrameForToken(sPidOne, 0, "acquireFenceAfterQueue", "acquireFenceAfterQueue", std::nullopt); surfaceFrame->setActualQueueTime(456); surfaceFrame->setAcquireFenceTime(123); @@ -273,8 +284,9 @@ TEST_F(FrameTimelineTest, setMaxDisplayFramesSetsSizeProperly) { // Size shouldn't exceed maxDisplayFrames - 64 for (size_t i = 0; i < *maxDisplayFrames + 10; i++) { - auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, - sLayerNameOne, std::nullopt); + auto surfaceFrame = + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, std::nullopt); int64_t sfToken = mTokenManager->generateTokenForPredictions({22, 26, 30}); mFrameTimeline->setSfWakeUp(sfToken, 22); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame), @@ -288,8 +300,9 @@ TEST_F(FrameTimelineTest, setMaxDisplayFramesSetsSizeProperly) { EXPECT_EQ(*maxDisplayFrames, 256); for (size_t i = 0; i < *maxDisplayFrames + 10; i++) { - auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, - sLayerNameOne, std::nullopt); + auto surfaceFrame = + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, std::nullopt); int64_t sfToken = mTokenManager->generateTokenForPredictions({22, 26, 30}); mFrameTimeline->setSfWakeUp(sfToken, 22); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame), @@ -303,8 +316,9 @@ TEST_F(FrameTimelineTest, setMaxDisplayFramesSetsSizeProperly) { EXPECT_EQ(*maxDisplayFrames, 128); for (size_t i = 0; i < *maxDisplayFrames + 10; i++) { - auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, - sLayerNameOne, std::nullopt); + auto surfaceFrame = + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, std::nullopt); int64_t sfToken = mTokenManager->generateTokenForPredictions({22, 26, 30}); mFrameTimeline->setSfWakeUp(sfToken, 22); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame), @@ -330,8 +344,8 @@ TEST_F(FrameTimelineTest, presentFenceSignaled_reportsLongSfCpu) { std::chrono::duration_cast<std::chrono::nanoseconds>(56ms).count(), std::chrono::duration_cast<std::chrono::nanoseconds>(60ms).count()}); auto surfaceFrame1 = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, sLayerNameOne, - surfaceFrameToken1); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, surfaceFrameToken1); mFrameTimeline->setSfWakeUp(sfToken1, std::chrono::duration_cast<std::chrono::nanoseconds>(52ms).count()); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame1), @@ -357,8 +371,8 @@ TEST_F(FrameTimelineTest, presentFenceSignaled_reportsDisplayMiss) { std::chrono::duration_cast<std::chrono::nanoseconds>(56ms).count(), std::chrono::duration_cast<std::chrono::nanoseconds>(60ms).count()}); auto surfaceFrame1 = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, sLayerNameOne, - surfaceFrameToken1); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, surfaceFrameToken1); mFrameTimeline->setSfWakeUp(sfToken1, std::chrono::duration_cast<std::chrono::nanoseconds>(52ms).count()); mFrameTimeline->addSurfaceFrame(std::move(surfaceFrame1), @@ -384,8 +398,8 @@ TEST_F(FrameTimelineTest, presentFenceSignaled_reportsAppMiss) { std::chrono::duration_cast<std::chrono::nanoseconds>(56ms).count(), std::chrono::duration_cast<std::chrono::nanoseconds>(60ms).count()}); auto surfaceFrame1 = - mFrameTimeline->createSurfaceFrameForToken(sUidOne, sLayerNameOne, sLayerNameOne, - surfaceFrameToken1); + mFrameTimeline->createSurfaceFrameForToken(sPidOne, sUidOne, sLayerNameOne, + sLayerNameOne, surfaceFrameToken1); surfaceFrame1->setAcquireFenceTime( std::chrono::duration_cast<std::chrono::nanoseconds>(45ms).count()); mFrameTimeline->setSfWakeUp(sfToken1, |