• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
21 class LayerTreeHostClient {
22  public:
23   virtual void WillBeginMainFrame(int frame_id) = 0;
24   // Marks finishing compositing-related tasks on the main thread. In threaded
25   // mode, this corresponds to DidCommit().
26   virtual void DidBeginMainFrame() = 0;
27   virtual void Animate(base::TimeTicks frame_begin_time) = 0;
28   virtual void Layout() = 0;
29   virtual void ApplyScrollAndScale(const gfx::Vector2d& scroll_delta,
30                                    float page_scale) = 0;
31   // Creates an OutputSurface. If fallback is true, it should attempt to
32   // create an OutputSurface that is guaranteed to initialize correctly.
33   virtual scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) = 0;
34   virtual void DidInitializeOutputSurface() = 0;
35   virtual void WillCommit() = 0;
36   virtual void DidCommit() = 0;
37   virtual void DidCommitAndDrawFrame() = 0;
38   virtual void DidCompleteSwapBuffers() = 0;
39 
40   // Requests that the client insert a rate limiting token in the shared main
41   // thread context's command stream that will block if the context gets too far
42   // ahead of the compositor's command stream. Only needed if the tree contains
43   // a TextureLayer that calls SetRateLimitContext(true).
RateLimitSharedMainThreadContext()44   virtual void RateLimitSharedMainThreadContext() {}
45 
46   // This hook is for testing.
DidFailToInitializeOutputSurface()47   virtual void DidFailToInitializeOutputSurface() {}
48 
49  protected:
~LayerTreeHostClient()50   virtual ~LayerTreeHostClient() {}
51 };
52 
53 }  // namespace cc
54 
55 #endif  // CC_TREES_LAYER_TREE_HOST_CLIENT_H_
56