15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file contains the mock GLES2Decoder class. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_MOCK_H_ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_MOCK_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "gpu/command_buffer/common/mailbox.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gpu/command_buffer/service/gles2_cmd_decoder.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GLContext; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GLSurface; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gpu { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gles2 { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContextGroup; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ErrorState; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class QueryManager; 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct ContextState; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockGLES2Decoder : public GLES2Decoder { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockGLES2Decoder(); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MockGLES2Decoder(); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci error::Error FakeDoCommands(unsigned int num_commands, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const void* buffer, 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int num_entries, 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int* entries_processed); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) MOCK_METHOD6(Initialize, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool(const scoped_refptr<gfx::GLSurface>& surface, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const scoped_refptr<gfx::GLContext>& context, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool offscreen, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Size& size, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DisallowedFeatures& disallowed_features, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<int32>& attribs)); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(Destroy, void(bool have_context)); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(SetSurface, void(const scoped_refptr<gfx::GLSurface>& surface)); 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MOCK_METHOD1(ProduceFrontBuffer, void(const Mailbox& mailbox)); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(ResizeOffscreenFrameBuffer, bool(const gfx::Size& size)); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(MakeCurrent, bool()); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(GetServiceIdForTesting, uint32(uint32 client_id)); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetGLES2Util, GLES2Util*()); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetGLSurface, gfx::GLSurface*()); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetGLContext, gfx::GLContext*()); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetContextGroup, ContextGroup*()); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MOCK_METHOD0(GetContextState, const ContextState*()); 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) MOCK_METHOD0(GetCapabilities, Capabilities()); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(ProcessPendingQueries, bool()); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD0(HasMoreIdleWork, bool()); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD0(PerformIdleWork, void()); 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MOCK_METHOD1(RestoreState, void(const ContextState* prev_state)); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(RestoreActiveTexture, void()); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MOCK_CONST_METHOD1( 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RestoreAllTextureUnitBindings, void(const ContextState* state)); 67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch MOCK_CONST_METHOD1( 68effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch RestoreActiveTextureUnitBinding, void(unsigned int target)); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(RestoreBufferBindings, void()); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(RestoreFramebufferBindings, void()); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(RestoreGlobalState, void()); 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(RestoreProgramBindings, void()); 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MOCK_METHOD0(RestoreRenderbufferBindings, void()); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD1(RestoreTextureState, void(unsigned service_id)); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD1(RestoreTextureUnitBindings, void(unsigned unit)); 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MOCK_CONST_METHOD0(ClearAllAttributes, void()); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MOCK_CONST_METHOD0(RestoreAllAttributes, void()); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetQueryManager, gpu::gles2::QueryManager*()); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetVertexArrayManager, gpu::gles2::VertexArrayManager*()); 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_METHOD0(GetImageManager, gpu::gles2::ImageManager*()); 8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MOCK_METHOD1( 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) SetResizeCallback, void(const base::Callback<void(gfx::Size, float)>&)); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD0(GetAsyncPixelTransferDelegate, 84b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) AsyncPixelTransferDelegate*()); 85868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) MOCK_METHOD0(GetAsyncPixelTransferManager, 86868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) AsyncPixelTransferManager*()); 87868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) MOCK_METHOD0(ResetAsyncPixelTransferManagerForTest, void()); 88868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) MOCK_METHOD1(SetAsyncPixelTransferManagerForTest, 89868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void(AsyncPixelTransferManager*)); 90010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) MOCK_METHOD1(SetIgnoreCachedStateForTest, void(bool ignore)); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD3(DoCommand, error::Error(unsigned int command, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned int arg_count, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const void* cmd_data)); 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MOCK_METHOD4(DoCommands, 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci error::Error(unsigned int num_commands, 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const void* buffer, 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int num_entries, 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int* entries_processed)); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD2(GetServiceTextureId, bool(uint32 client_texture_id, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32* service_texture_id)); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetContextLostReason, error::ContextLostReason()); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD1(GetCommandName, const char*(unsigned int command_id)); 103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MOCK_METHOD10(ClearLevel, bool( 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned service_id, 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned bind_target, 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned target, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int level, 108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) unsigned internal_format, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned format, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned type, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int width, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int height, 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_texture_immutable)); 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD0(GetErrorState, ErrorState *()); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD0(GetLogger, Logger*()); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD1(SetShaderCacheCallback, 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const ShaderCacheCallback& callback)); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD1(SetWaitSyncPointCallback, 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const WaitSyncPointCallback& callback)); 121a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch MOCK_METHOD1(WaitForReadPixels, 122a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch void(base::Closure callback)); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetTextureUploadCount, uint32()); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetTotalTextureUploadTime, base::TimeDelta()); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(GetTotalProcessingCommandsTime, base::TimeDelta()); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(AddProcessingCommandsTime, void(base::TimeDelta)); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD0(WasContextLost, bool()); 1287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch MOCK_METHOD0(WasContextLostByRobustnessExtension, bool()); 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD1(LoseContext, void(uint32 reset_status)); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MockGLES2Decoder); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gles2 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gpu 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_MOCK_H_ 138