Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / cc / trees / layer_tree_host_client.h
1 // Copyright 2012 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_TREES_LAYER_TREE_HOST_CLIENT_H_
6 #define CC_TREES_LAYER_TREE_HOST_CLIENT_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/time/time.h"
11
12 namespace gfx {
13 class Vector2d;
14 }
15
16 namespace cc {
17 class ContextProvider;
18 class InputHandlerClient;
19 class OutputSurface;
20 struct BeginFrameArgs;
21
22 class LayerTreeHostClient {
23  public:
24   virtual void WillBeginMainFrame(int frame_id) = 0;
25   // Marks finishing compositing-related tasks on the main thread. In threaded
26   // mode, this corresponds to DidCommit().
27   virtual void BeginMainFrame(const BeginFrameArgs& args) = 0;
28   virtual void DidBeginMainFrame() = 0;
29   virtual void Layout() = 0;
30   virtual void ApplyViewportDeltas(const gfx::Vector2d& inner_delta,
31                                    const gfx::Vector2d& outer_delta,
32                                    float page_scale,
33                                    float top_controls_delta) = 0;
34   virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
35                                    float page_scale,
36                                    float top_controls_delta) = 0;
37   // Request an OutputSurface from the client. When the client has one it should
38   // call LayerTreeHost::SetOutputSurface.  If fallback is true, it should
39   // attempt to create an OutputSurface that is guaranteed to initialize
40   // correctly.
41   virtual void RequestNewOutputSurface(bool fallback) = 0;
42   virtual void DidInitializeOutputSurface() = 0;
43   virtual void WillCommit() = 0;
44   virtual void DidCommit() = 0;
45   virtual void DidCommitAndDrawFrame() = 0;
46   virtual void DidCompleteSwapBuffers() = 0;
47
48   // Requests that the client insert a rate limiting token in the shared main
49   // thread context's command stream that will block if the context gets too far
50   // ahead of the compositor's command stream. Only needed if the tree contains
51   // a TextureLayer that calls SetRateLimitContext(true).
52   virtual void RateLimitSharedMainThreadContext() {}
53
54   // This hook is for testing.
55   virtual void DidFailToInitializeOutputSurface() {}
56
57  protected:
58   virtual ~LayerTreeHostClient() {}
59 };
60
61 }  // namespace cc
62
63 #endif  // CC_TREES_LAYER_TREE_HOST_CLIENT_H_