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_FAKE_LAYER_TREE_HOST_H_
6#define CC_TEST_FAKE_LAYER_TREE_HOST_H_
7
8#include "cc/debug/micro_benchmark_controller.h"
9#include "cc/test/fake_impl_proxy.h"
10#include "cc/test/fake_layer_tree_host_client.h"
11#include "cc/test/fake_layer_tree_host_impl.h"
12#include "cc/test/test_shared_bitmap_manager.h"
13#include "cc/trees/layer_tree_host.h"
14#include "cc/trees/layer_tree_impl.h"
15#include "cc/trees/tree_synchronizer.h"
16
17namespace cc {
18
19class FakeLayerTreeHost : public LayerTreeHost {
20 public:
21  static scoped_ptr<FakeLayerTreeHost> Create(FakeLayerTreeHostClient* client);
22  static scoped_ptr<FakeLayerTreeHost> Create(
23      FakeLayerTreeHostClient* client,
24      const LayerTreeSettings& settings);
25
26  virtual ~FakeLayerTreeHost();
27
28  virtual void SetNeedsCommit() OVERRIDE;
29  virtual void SetNeedsFullTreeSync() OVERRIDE {}
30
31  using LayerTreeHost::SetRootLayer;
32  using LayerTreeHost::root_layer;
33
34  LayerImpl* CommitAndCreateLayerImplTree();
35
36  FakeLayerTreeHostImpl* host_impl() { return &host_impl_; }
37  LayerTreeImpl* active_tree() { return host_impl_.active_tree(); }
38
39  using LayerTreeHost::ScheduleMicroBenchmark;
40  using LayerTreeHost::SendMessageToMicroBenchmark;
41  using LayerTreeHost::SetOutputSurfaceLostForTesting;
42  using LayerTreeHost::InitializeSingleThreaded;
43  using LayerTreeHost::InitializeForTesting;
44  void UpdateLayers(ResourceUpdateQueue* queue) {
45    LayerTreeHost::UpdateLayers(queue);
46  }
47
48  MicroBenchmarkController* GetMicroBenchmarkController() {
49    return &micro_benchmark_controller_;
50  }
51
52  bool needs_commit() { return needs_commit_; }
53
54 private:
55  FakeLayerTreeHost(FakeLayerTreeHostClient* client,
56                    const LayerTreeSettings& settings);
57
58  FakeImplProxy proxy_;
59  FakeLayerTreeHostClient* client_;
60  TestSharedBitmapManager manager_;
61  FakeLayerTreeHostImpl host_impl_;
62  bool needs_commit_;
63};
64
65}  // namespace cc
66
67#endif  // CC_TEST_FAKE_LAYER_TREE_HOST_H_
68