1// 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
8#include "cc/output/context_provider.h"
9#include "skia/ext/refptr.h"
10
11class GrContext;
12
13namespace gpu {
14class GLInProcessContext;
15}
16
17namespace cc {
18
19scoped_ptr<gpu::GLInProcessContext> CreateTestInProcessContext();
20
21class TestInProcessContextProvider : public ContextProvider {
22 public:
23  TestInProcessContextProvider();
24
25  virtual bool BindToCurrentThread() OVERRIDE;
26  virtual gpu::gles2::GLES2Interface* ContextGL() OVERRIDE;
27  virtual gpu::ContextSupport* ContextSupport() OVERRIDE;
28  virtual class GrContext* GrContext() OVERRIDE;
29  virtual Capabilities ContextCapabilities() OVERRIDE;
30  virtual bool IsContextLost() OVERRIDE;
31  virtual void VerifyContexts() OVERRIDE;
32  virtual void DeleteCachedResources() OVERRIDE;
33  virtual bool DestroyedOnMainThread() OVERRIDE;
34  virtual void SetLostContextCallback(
35      const LostContextCallback& lost_context_callback) OVERRIDE;
36  virtual void SetMemoryPolicyChangedCallback(
37      const MemoryPolicyChangedCallback& memory_policy_changed_callback)
38      OVERRIDE;
39
40 protected:
41  friend class base::RefCountedThreadSafe<TestInProcessContextProvider>;
42  virtual ~TestInProcessContextProvider();
43
44 private:
45  scoped_ptr<gpu::GLInProcessContext> context_;
46  skia::RefPtr<class GrContext> gr_context_;
47};
48
49}  // namespace cc
50
51#endif  // CC_TEST_TEST_IN_PROCESS_CONTEXT_PROVIDER_H_
52