diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-11-21 20:59:54 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-11-21 20:59:54 +0000 |
commit | 8770b276691febf764a4fbfc6f3307e703e39dcf (patch) | |
tree | 0cc5105f2fe99d422db07c40af3efe5ff3477a0b /services/surfaceflinger/CompositionEngine/tests | |
parent | d6cbaae68137f4f2fe8aa7dbcd923ddf45ed9f78 (diff) | |
parent | ef63b61738acc6b38d4169e4f95c157b761a40fd (diff) | |
download | native-8770b276691febf764a4fbfc6f3307e703e39dcf.tar.gz |
Merge "CE: Unit test coverage for Output::updateAndWriteCompositionState"
Diffstat (limited to 'services/surfaceflinger/CompositionEngine/tests')
-rw-r--r-- | services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp | 71 |
1 files changed, 65 insertions, 6 deletions
diff --git a/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp b/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp index f2502b059c..49974d0013 100644 --- a/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp +++ b/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp @@ -664,23 +664,82 @@ TEST_F(OutputUpdateLayerStateFromFETest, latchesGeometryAndContentStateForAllCon * Output::updateAndWriteCompositionState() */ -TEST_F(OutputTest, updateAndWriteCompositionState_takesEarlyOutIfNotEnabled) { +using OutputUpdateAndWriteCompositionStateTest = OutputLatchFEStateTest; + +TEST_F(OutputUpdateAndWriteCompositionStateTest, doesNothingIfLayers) { + mOutput->editState().isEnabled = true; + + CompositionRefreshArgs args; + mOutput->updateAndWriteCompositionState(args); +} + +TEST_F(OutputUpdateAndWriteCompositionStateTest, doesNothingIfOutputNotEnabled) { mOutput->editState().isEnabled = false; + injectLayer(std::move(mOutputLayer1)); + injectLayer(std::move(mOutputLayer2)); + injectLayer(std::move(mOutputLayer3)); + CompositionRefreshArgs args; mOutput->updateAndWriteCompositionState(args); } -TEST_F(OutputTest, updateAndWriteCompositionState_updatesLayers) { +TEST_F(OutputUpdateAndWriteCompositionStateTest, updatesLayerContentForAllLayers) { + EXPECT_CALL(*mOutputLayer1, updateCompositionState(false, false)); + EXPECT_CALL(*mOutputLayer1, writeStateToHWC(false)); + EXPECT_CALL(*mOutputLayer2, updateCompositionState(false, false)); + EXPECT_CALL(*mOutputLayer2, writeStateToHWC(false)); + EXPECT_CALL(*mOutputLayer3, updateCompositionState(false, false)); + EXPECT_CALL(*mOutputLayer3, writeStateToHWC(false)); + + injectLayer(std::move(mOutputLayer1)); + injectLayer(std::move(mOutputLayer2)); + injectLayer(std::move(mOutputLayer3)); + mOutput->editState().isEnabled = true; - mock::OutputLayer* outputLayer = new StrictMock<mock::OutputLayer>(); - mOutput->injectOutputLayerForTest(std::unique_ptr<OutputLayer>(outputLayer)); - EXPECT_CALL(*outputLayer, updateCompositionState(true, true)).Times(1); - EXPECT_CALL(*outputLayer, writeStateToHWC(true)).Times(1); + CompositionRefreshArgs args; + args.updatingGeometryThisFrame = false; + args.devOptForceClientComposition = false; + mOutput->updateAndWriteCompositionState(args); +} + +TEST_F(OutputUpdateAndWriteCompositionStateTest, updatesLayerGeometryAndContentForAllLayers) { + EXPECT_CALL(*mOutputLayer1, updateCompositionState(true, false)); + EXPECT_CALL(*mOutputLayer1, writeStateToHWC(true)); + EXPECT_CALL(*mOutputLayer2, updateCompositionState(true, false)); + EXPECT_CALL(*mOutputLayer2, writeStateToHWC(true)); + EXPECT_CALL(*mOutputLayer3, updateCompositionState(true, false)); + EXPECT_CALL(*mOutputLayer3, writeStateToHWC(true)); + + injectLayer(std::move(mOutputLayer1)); + injectLayer(std::move(mOutputLayer2)); + injectLayer(std::move(mOutputLayer3)); + + mOutput->editState().isEnabled = true; CompositionRefreshArgs args; args.updatingGeometryThisFrame = true; + args.devOptForceClientComposition = false; + mOutput->updateAndWriteCompositionState(args); +} + +TEST_F(OutputUpdateAndWriteCompositionStateTest, forcesClientCompositionForAllLayers) { + EXPECT_CALL(*mOutputLayer1, updateCompositionState(false, true)); + EXPECT_CALL(*mOutputLayer1, writeStateToHWC(false)); + EXPECT_CALL(*mOutputLayer2, updateCompositionState(false, true)); + EXPECT_CALL(*mOutputLayer2, writeStateToHWC(false)); + EXPECT_CALL(*mOutputLayer3, updateCompositionState(false, true)); + EXPECT_CALL(*mOutputLayer3, writeStateToHWC(false)); + + injectLayer(std::move(mOutputLayer1)); + injectLayer(std::move(mOutputLayer2)); + injectLayer(std::move(mOutputLayer3)); + + mOutput->editState().isEnabled = true; + + CompositionRefreshArgs args; + args.updatingGeometryThisFrame = false; args.devOptForceClientComposition = true; mOutput->updateAndWriteCompositionState(args); } |