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