blob: 9fa77b7f689d572ae2209f081ca16ba4952d933f [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CC_TEST_TEST_IN_PROCESS_CONTEXT_PROVIDER_H_
6#define CC_TEST_TEST_IN_PROCESS_CONTEXT_PROVIDER_H_
7
Etienne Membrives386015a2015-02-19 17:27:12 +01008#include "base/synchronization/lock.h"
James Robinson646469d2014-10-03 15:33:28 -07009#include "cc/output/context_provider.h"
James Robinson7f480212014-10-31 10:28:08 -070010#include "cc/test/test_gpu_memory_buffer_manager.h"
11#include "cc/test/test_image_factory.h"
James Robinson646469d2014-10-03 15:33:28 -070012#include "skia/ext/refptr.h"
13
14class GrContext;
15
16namespace gpu {
17class GLInProcessContext;
18}
19
20namespace cc {
21
22scoped_ptr<gpu::GLInProcessContext> CreateTestInProcessContext();
James Robinson7f480212014-10-31 10:28:08 -070023scoped_ptr<gpu::GLInProcessContext> CreateTestInProcessContext(
24 TestGpuMemoryBufferManager* gpu_memory_buffer_manager,
25 TestImageFactory* image_factory);
James Robinson646469d2014-10-03 15:33:28 -070026
27class TestInProcessContextProvider : public ContextProvider {
28 public:
29 TestInProcessContextProvider();
30
James Robinsone1b30cf2014-10-21 12:25:40 -070031 bool BindToCurrentThread() override;
32 gpu::gles2::GLES2Interface* ContextGL() override;
33 gpu::ContextSupport* ContextSupport() override;
34 class GrContext* GrContext() override;
Etienne Membrives386015a2015-02-19 17:27:12 +010035 void SetupLock() override;
36 base::Lock* GetLock() override;
James Robinsone1b30cf2014-10-21 12:25:40 -070037 Capabilities ContextCapabilities() override;
38 bool IsContextLost() override;
39 void VerifyContexts() override;
40 void DeleteCachedResources() override;
41 bool DestroyedOnMainThread() override;
42 void SetLostContextCallback(
James Robinsonbaf71d32014-10-08 13:00:20 -070043 const LostContextCallback& lost_context_callback) override;
James Robinsone1b30cf2014-10-21 12:25:40 -070044 void SetMemoryPolicyChangedCallback(
James Robinson646469d2014-10-03 15:33:28 -070045 const MemoryPolicyChangedCallback& memory_policy_changed_callback)
James Robinsonbaf71d32014-10-08 13:00:20 -070046 override;
James Robinson646469d2014-10-03 15:33:28 -070047
48 protected:
49 friend class base::RefCountedThreadSafe<TestInProcessContextProvider>;
James Robinsone1b30cf2014-10-21 12:25:40 -070050 ~TestInProcessContextProvider() override;
James Robinson646469d2014-10-03 15:33:28 -070051
52 private:
James Robinson7f480212014-10-31 10:28:08 -070053 TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
54 TestImageFactory image_factory_;
James Robinson646469d2014-10-03 15:33:28 -070055 scoped_ptr<gpu::GLInProcessContext> context_;
56 skia::RefPtr<class GrContext> gr_context_;
Etienne Membrives386015a2015-02-19 17:27:12 +010057 base::Lock context_lock_;
James Robinson646469d2014-10-03 15:33:28 -070058};
59
60} // namespace cc
61
62#endif // CC_TEST_TEST_IN_PROCESS_CONTEXT_PROVIDER_H_