Index: third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
index 7e9dc9f38ab3e25dc4227585bca624dfd19171fb..76d1b49a8f60821dede75ab000d8288ecc58c148 100644 |
--- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
@@ -30,6 +30,7 @@ |
#include "platform/graphics/gpu/DrawingBuffer.h" |
+#include "gpu/command_buffer/client/gles2_interface_stub.h" |
#include "platform/RuntimeEnabledFeatures.h" |
#include "platform/graphics/ImageBuffer.h" |
#include "platform/graphics/UnacceleratedImageBufferSurface.h" |
@@ -68,9 +69,12 @@ WGC3Denum drawingBufferTextureTarget(bool allowImageChromium) |
} // namespace |
+class GLES2InterfaceForTests : public gpu::gles2::GLES2InterfaceStub { |
+}; |
+ |
class WebGraphicsContext3DForTests : public MockWebGraphicsContext3D { |
public: |
- WebGraphicsContext3DForTests() |
+ WebGraphicsContext3DForTests(PassOwnPtr<GLES2InterfaceForTests> contextGL) |
: MockWebGraphicsContext3D() |
, m_boundTexture(0) |
, m_boundTextureTarget(0) |
@@ -78,6 +82,7 @@ public: |
, m_mostRecentlyWaitedSyncToken(0) |
, m_currentImageId(1) |
, m_allowImageChromium(true) |
+ , m_contextGL(std::move(contextGL)) |
{ |
} |
@@ -188,6 +193,11 @@ public: |
m_allowImageChromium = allow; |
} |
+ gpu::gles2::GLES2Interface* getGLES2Interface() override |
+ { |
+ return m_contextGL.get(); |
+ } |
+ |
private: |
WebGLId m_boundTexture; |
WGC3Denum m_boundTextureTarget; |
@@ -199,6 +209,7 @@ private: |
HashMap<WGC3Duint, IntSize> m_imageSizes; |
HashMap<WGC3Duint, WebGLId> m_imageToTextureMap; |
bool m_allowImageChromium; |
+ OwnPtr<GLES2InterfaceForTests> m_contextGL; |
}; |
static const int initialWidth = 100; |
@@ -207,12 +218,10 @@ static const int alternateHeight = 50; |
class DrawingBufferForTests : public DrawingBuffer { |
public: |
- static PassRefPtr<DrawingBufferForTests> create(PassOwnPtr<WebGraphicsContext3D> context, |
- const IntSize& size, PreserveDrawingBuffer preserve) |
+ static PassRefPtr<DrawingBufferForTests> create(PassOwnPtr<WebGraphicsContext3D> context, gpu::gles2::GLES2Interface* gl, const IntSize& size, PreserveDrawingBuffer preserve) |
{ |
- OwnPtr<Extensions3DUtil> extensionsUtil = Extensions3DUtil::create(context.get()); |
- RefPtr<DrawingBufferForTests> drawingBuffer = |
- adoptRef(new DrawingBufferForTests(context, extensionsUtil.release(), preserve)); |
+ OwnPtr<Extensions3DUtil> extensionsUtil = Extensions3DUtil::create(context.get(), gl); |
+ RefPtr<DrawingBufferForTests> drawingBuffer = adoptRef(new DrawingBufferForTests(context, gl, extensionsUtil.release(), preserve)); |
if (!drawingBuffer->initialize(size)) { |
drawingBuffer->beginDestruction(); |
return PassRefPtr<DrawingBufferForTests>(); |
@@ -220,10 +229,8 @@ public: |
return drawingBuffer.release(); |
} |
- DrawingBufferForTests(PassOwnPtr<WebGraphicsContext3D> context, |
- PassOwnPtr<Extensions3DUtil> extensionsUtil, |
- PreserveDrawingBuffer preserve) |
- : DrawingBuffer(context, extensionsUtil, false /* multisampleExtensionSupported */, false /* discardFramebufferSupported */, preserve, WebGraphicsContext3D::Attributes()) |
+ DrawingBufferForTests(PassOwnPtr<WebGraphicsContext3D> context, gpu::gles2::GLES2Interface* gl, PassOwnPtr<Extensions3DUtil> extensionsUtil, PreserveDrawingBuffer preserve) |
+ : DrawingBuffer(context, gl, extensionsUtil, false /* multisampleExtensionSupported */, false /* discardFramebufferSupported */, preserve, WebGraphicsContext3D::Attributes()) |
, m_live(0) |
{ } |
@@ -240,9 +247,11 @@ class DrawingBufferTest : public Test { |
protected: |
void SetUp() override |
{ |
- OwnPtr<WebGraphicsContext3DForTests> context = adoptPtr(new WebGraphicsContext3DForTests); |
+ OwnPtr<GLES2InterfaceForTests> gl = adoptPtr(new GLES2InterfaceForTests); |
+ m_gl = gl.get(); |
+ OwnPtr<WebGraphicsContext3DForTests> context = adoptPtr(new WebGraphicsContext3DForTests(gl.release())); |
m_context = context.get(); |
- m_drawingBuffer = DrawingBufferForTests::create(context.release(), |
+ m_drawingBuffer = DrawingBufferForTests::create(context.release(), m_gl, |
IntSize(initialWidth, initialHeight), DrawingBuffer::Preserve); |
} |
@@ -252,6 +261,7 @@ protected: |
} |
WebGraphicsContext3DForTests* m_context; |
+ gpu::gles2::GLES2Interface* m_gl; |
RefPtr<DrawingBufferForTests> m_drawingBuffer; |
}; |
@@ -466,12 +476,14 @@ class DrawingBufferImageChromiumTest : public DrawingBufferTest { |
protected: |
void SetUp() override |
{ |
- OwnPtr<WebGraphicsContext3DForTests> context = adoptPtr(new WebGraphicsContext3DForTests); |
+ OwnPtr<GLES2InterfaceForTests> gl = adoptPtr(new GLES2InterfaceForTests); |
+ m_gl = gl.get(); |
+ OwnPtr<WebGraphicsContext3DForTests> context = adoptPtr(new WebGraphicsContext3DForTests(gl.release())); |
m_context = context.get(); |
RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(true); |
m_imageId0 = webContext()->nextImageIdToBeCreated(); |
EXPECT_CALL(*webContext(), bindTexImage2DMock(m_imageId0)).Times(1); |
- m_drawingBuffer = DrawingBufferForTests::create(context.release(), |
+ m_drawingBuffer = DrawingBufferForTests::create(context.release(), m_gl, |
IntSize(initialWidth, initialHeight), DrawingBuffer::Preserve); |
testing::Mock::VerifyAndClearExpectations(webContext()); |
} |
@@ -613,11 +625,14 @@ public: |
MockWebGraphicsContext3D::getIntegerv(ptype, value); |
} |
+ gpu::gles2::GLES2Interface* getGLES2Interface() override { return &m_contextGL; } |
+ |
private: |
WebGLId m_nextRenderBufferId; |
WebGLId m_stencilAttachment; |
WebGLId m_depthAttachment; |
WebGLId m_depthStencilAttachment; |
+ gpu::gles2::GLES2InterfaceStub m_contextGL; |
}; |
struct DepthStencilTestCase { |
@@ -713,11 +728,13 @@ class DrawingBufferImageChromiumFallbackTest : public DrawingBufferTest { |
protected: |
void SetUp() override |
{ |
- OwnPtr<WebGraphicsContext3DForTests> context = adoptPtr(new WebGraphicsContext3DForTests); |
+ OwnPtr<GLES2InterfaceForTests> gl = adoptPtr(new GLES2InterfaceForTests); |
+ m_gl = gl.get(); |
+ OwnPtr<WebGraphicsContext3DForTests> context = adoptPtr(new WebGraphicsContext3DForTests(gl.release())); |
context->setAllowImageChromium(false); |
m_context = context.get(); |
RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(true); |
- m_drawingBuffer = DrawingBufferForTests::create(context.release(), |
+ m_drawingBuffer = DrawingBufferForTests::create(context.release(), m_gl, |
IntSize(initialWidth, initialHeight), DrawingBuffer::Preserve); |
} |