| Index: Source/platform/graphics/gpu/DrawingBufferTest.cpp
|
| diff --git a/Source/platform/graphics/gpu/DrawingBufferTest.cpp b/Source/platform/graphics/gpu/DrawingBufferTest.cpp
|
| index 437629396ecd825fda31b093c327420a9d2ea2c6..bb57c9482b1d4ece545f9b5d4d66eecff8fdbb03 100644
|
| --- a/Source/platform/graphics/gpu/DrawingBufferTest.cpp
|
| +++ b/Source/platform/graphics/gpu/DrawingBufferTest.cpp
|
| @@ -315,6 +315,41 @@ TEST_F(DrawingBufferTest, verifyDestructionCompleteAfterAllMailboxesReleased)
|
| EXPECT_EQ(live, false);
|
| }
|
|
|
| +TEST_F(DrawingBufferTest, verifyDrawingBufferStaysAliveIfResourcesAreLost)
|
| +{
|
| + bool live = true;
|
| + m_drawingBuffer->m_live = &live;
|
| + blink::WebExternalTextureMailbox mailbox1;
|
| + blink::WebExternalTextureMailbox mailbox2;
|
| + blink::WebExternalTextureMailbox mailbox3;
|
| +
|
| + m_drawingBuffer->markContentsChanged();
|
| + EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox1, 0));
|
| + m_drawingBuffer->markContentsChanged();
|
| + EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox2, 0));
|
| + m_drawingBuffer->markContentsChanged();
|
| + EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox3, 0));
|
| +
|
| + m_drawingBuffer->markContentsChanged();
|
| + m_drawingBuffer->mailboxReleased(mailbox1, true);
|
| + EXPECT_EQ(live, true);
|
| +
|
| + m_drawingBuffer->beginDestruction();
|
| + EXPECT_EQ(live, true);
|
| +
|
| + m_drawingBuffer->markContentsChanged();
|
| + m_drawingBuffer->mailboxReleased(mailbox2, false);
|
| + EXPECT_EQ(live, true);
|
| +
|
| + DrawingBufferForTests* weakPtr = m_drawingBuffer.get();
|
| + m_drawingBuffer.clear();
|
| + EXPECT_EQ(live, true);
|
| +
|
| + weakPtr->markContentsChanged();
|
| + weakPtr->mailboxReleased(mailbox3, true);
|
| + EXPECT_EQ(live, false);
|
| +}
|
| +
|
| class TextureMailboxWrapper {
|
| public:
|
| explicit TextureMailboxWrapper(const blink::WebExternalTextureMailbox& mailbox)
|
|
|