Supervised user import: Listen for profile creation/deletion
[chromium-blink-merge.git] / webkit / common / gpu / context_provider_in_process.h
blobdcb053a648db3a9bbea7dd6b16b11427f885cf49
1 // Copyright (c) 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.
5 #ifndef WEBKIT_COMMON_GPU_CONTEXT_PROVIDER_IN_PROCESS_H_
6 #define WEBKIT_COMMON_GPU_CONTEXT_PROVIDER_IN_PROCESS_H_
8 #include <string>
10 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/synchronization/lock.h"
13 #include "base/threading/thread_checker.h"
14 #include "cc/blink/context_provider_web_context.h"
15 #include "webkit/common/gpu/webkit_gpu_export.h"
17 namespace blink { class WebGraphicsContext3D; }
19 namespace gpu_blink {
20 class WebGraphicsContext3DInProcessCommandBufferImpl;
23 namespace webkit {
24 namespace gpu {
25 class GrContextForWebGraphicsContext3D;
27 class WEBKIT_GPU_EXPORT ContextProviderInProcess
28 : NON_EXPORTED_BASE(public cc_blink::ContextProviderWebContext) {
29 public:
30 static scoped_refptr<ContextProviderInProcess> Create(
31 scoped_ptr<gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl>
32 context3d,
33 const std::string& debug_name);
35 // Uses default attributes for creating an offscreen context.
36 static scoped_refptr<ContextProviderInProcess> CreateOffscreen(
37 bool lose_context_when_out_of_memory);
39 private:
40 ContextProviderInProcess(
41 scoped_ptr<gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl>
42 context3d,
43 const std::string& debug_name);
44 ~ContextProviderInProcess() override;
46 // cc_blink::ContextProviderWebContext:
47 blink::WebGraphicsContext3D* WebContext3D() override;
49 // cc::ContextProvider:
50 bool BindToCurrentThread() override;
51 void DetachFromThread() override;
52 Capabilities ContextCapabilities() override;
53 ::gpu::gles2::GLES2Interface* ContextGL() override;
54 ::gpu::ContextSupport* ContextSupport() override;
55 class GrContext* GrContext() override;
56 void SetupLock() override;
57 base::Lock* GetLock() override;
58 bool IsContextLost() override;
59 void VerifyContexts() override;
60 void DeleteCachedResources() override;
61 bool DestroyedOnMainThread() override;
62 void SetLostContextCallback(
63 const LostContextCallback& lost_context_callback) override;
64 void SetMemoryPolicyChangedCallback(
65 const MemoryPolicyChangedCallback& memory_policy_changed_callback)
66 override;
68 void OnLostContext();
69 void InitializeCapabilities();
71 base::ThreadChecker main_thread_checker_;
72 base::ThreadChecker context_thread_checker_;
74 scoped_ptr<gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl>
75 context3d_;
76 scoped_ptr<GrContextForWebGraphicsContext3D> gr_context_;
78 LostContextCallback lost_context_callback_;
80 base::Lock destroyed_lock_;
81 bool destroyed_;
83 base::Lock context_lock_;
84 std::string debug_name_;
85 class LostContextCallbackProxy;
86 scoped_ptr<LostContextCallbackProxy> lost_context_callback_proxy_;
88 cc::ContextProvider::Capabilities capabilities_;
90 DISALLOW_COPY_AND_ASSIGN(ContextProviderInProcess);
93 } // namespace gpu
94 } // namespace webkit
96 #endif // WEBKIT_COMMON_GPU_CONTEXT_PROVIDER_IN_PROCESS_H_