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 CONTENT_TEST_WEB_LAYER_TREE_VIEW_IMPL_FOR_TESTING_H_
6#define CONTENT_TEST_WEB_LAYER_TREE_VIEW_IMPL_FOR_TESTING_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "cc/trees/layer_tree_host_client.h"
10#include "cc/trees/layer_tree_host_single_thread_client.h"
11#include "third_party/WebKit/public/platform/WebLayerTreeView.h"
12
13namespace cc {
14class LayerTreeHost;
15}
16
17namespace blink { class WebLayer; }
18
19namespace webkit {
20
21class WebLayerTreeViewImplForTesting
22    : public blink::WebLayerTreeView,
23      public cc::LayerTreeHostClient,
24      public cc::LayerTreeHostSingleThreadClient {
25 public:
26  WebLayerTreeViewImplForTesting();
27  virtual ~WebLayerTreeViewImplForTesting();
28
29  bool Initialize();
30
31  // blink::WebLayerTreeView implementation.
32  virtual void setSurfaceReady();
33  virtual void setRootLayer(const blink::WebLayer& layer);
34  virtual void clearRootLayer();
35  virtual void setViewportSize(const blink::WebSize& unused_deprecated,
36                               const blink::WebSize& device_viewport_size);
37  virtual blink::WebSize layoutViewportSize() const;
38  virtual blink::WebSize deviceViewportSize() const;
39  virtual void setDeviceScaleFactor(float scale_factor);
40  virtual float deviceScaleFactor() const;
41  virtual void setBackgroundColor(blink::WebColor);
42  virtual void setHasTransparentBackground(bool transparent);
43  virtual void setVisible(bool visible);
44  virtual void setPageScaleFactorAndLimits(float page_scale_factor,
45                                           float minimum,
46                                           float maximum);
47  virtual void startPageScaleAnimation(const blink::WebPoint& destination,
48                                       bool use_anchor,
49                                       float new_page_scale,
50                                       double duration_sec);
51  virtual void setNeedsAnimate();
52  virtual bool commitRequested() const;
53  virtual void composite();
54  virtual void didStopFlinging();
55  virtual bool compositeAndReadback(void* pixels, const blink::WebRect& rect);
56  virtual void finishAllRendering();
57  virtual void setDeferCommits(bool defer_commits);
58  virtual void renderingStats(
59      blink::WebRenderingStats& stats) const;  // NOLINT(runtime/references)
60
61  // cc::LayerTreeHostClient implementation.
62  virtual void WillBeginMainFrame(int frame_id) OVERRIDE {}
63  virtual void DidBeginMainFrame() OVERRIDE {}
64  virtual void Animate(double frame_begin_time) OVERRIDE {}
65  virtual void Layout() OVERRIDE;
66  virtual void ApplyScrollAndScale(gfx::Vector2d scroll_delta, float page_scale)
67      OVERRIDE;
68  virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(bool fallback)
69      OVERRIDE;
70  virtual void DidInitializeOutputSurface(bool success) OVERRIDE {}
71  virtual void WillCommit() OVERRIDE {}
72  virtual void DidCommit() OVERRIDE {}
73  virtual void DidCommitAndDrawFrame() OVERRIDE {}
74  virtual void DidCompleteSwapBuffers() OVERRIDE {}
75  virtual scoped_refptr<cc::ContextProvider>
76      OffscreenContextProvider() OVERRIDE;
77
78  // cc::LayerTreeHostSingleThreadClient implementation.
79  virtual void ScheduleComposite() OVERRIDE {}
80  virtual void ScheduleAnimation() OVERRIDE {}
81  virtual void DidPostSwapBuffers() OVERRIDE {}
82  virtual void DidAbortSwapBuffers() OVERRIDE {}
83
84 private:
85  scoped_ptr<cc::LayerTreeHost> layer_tree_host_;
86
87  DISALLOW_COPY_AND_ASSIGN(WebLayerTreeViewImplForTesting);
88};
89
90}  // namespace webkit
91
92#endif  // CONTENT_TEST_WEB_LAYER_TREE_VIEW_IMPL_FOR_TESTING_H_
93