Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / content / test / web_layer_tree_view_impl_for_testing.cc
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 #include "content/test/web_layer_tree_view_impl_for_testing.h"
6
7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h"
9 #include "base/synchronization/lock.h"
10 #include "cc/base/switches.h"
11 #include "cc/input/input_handler.h"
12 #include "cc/layers/layer.h"
13 #include "cc/output/output_surface.h"
14 #include "cc/test/test_context_provider.h"
15 #include "cc/trees/layer_tree_host.h"
16 #include "content/test/test_webkit_platform_support.h"
17 #include "third_party/WebKit/public/platform/Platform.h"
18 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
19 #include "third_party/WebKit/public/platform/WebLayer.h"
20 #include "third_party/WebKit/public/platform/WebLayerTreeView.h"
21 #include "third_party/WebKit/public/platform/WebRenderingStats.h"
22 #include "third_party/WebKit/public/platform/WebSize.h"
23 #include "ui/gfx/frame_time.h"
24 #include "webkit/common/gpu/test_context_provider_factory.h"
25 #include "webkit/renderer/compositor_bindings/web_layer_impl.h"
26
27 using blink::WebColor;
28 using blink::WebGraphicsContext3D;
29 using blink::WebRect;
30 using blink::WebRenderingStats;
31 using blink::WebSize;
32
33 namespace webkit {
34
35 WebLayerTreeViewImplForTesting::WebLayerTreeViewImplForTesting() {}
36
37 WebLayerTreeViewImplForTesting::~WebLayerTreeViewImplForTesting() {}
38
39 void WebLayerTreeViewImplForTesting::Initialize() {
40   cc::LayerTreeSettings settings;
41
42   // For web contents, layer transforms should scale up the contents of layers
43   // to keep content always crisp when possible.
44   settings.layer_transforms_should_scale_layer_contents = true;
45
46   // Accelerated animations are enabled for unit tests.
47   settings.accelerated_animation_enabled = true;
48   layer_tree_host_ =
49       cc::LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings);
50   DCHECK(layer_tree_host_);
51 }
52
53 void WebLayerTreeViewImplForTesting::setSurfaceReady() {
54   layer_tree_host_->SetLayerTreeHostClientReady();
55 }
56
57 void WebLayerTreeViewImplForTesting::setRootLayer(
58     const blink::WebLayer& root) {
59   layer_tree_host_->SetRootLayer(
60       static_cast<const WebLayerImpl*>(&root)->layer());
61 }
62
63 void WebLayerTreeViewImplForTesting::clearRootLayer() {
64   layer_tree_host_->SetRootLayer(scoped_refptr<cc::Layer>());
65 }
66
67 void WebLayerTreeViewImplForTesting::setViewportSize(
68     const WebSize& unused_deprecated,
69     const WebSize& device_viewport_size) {
70   layer_tree_host_->SetViewportSize(device_viewport_size);
71 }
72
73 WebSize WebLayerTreeViewImplForTesting::layoutViewportSize() const {
74   return layer_tree_host_->device_viewport_size();
75 }
76
77 WebSize WebLayerTreeViewImplForTesting::deviceViewportSize() const {
78   return layer_tree_host_->device_viewport_size();
79 }
80
81 void WebLayerTreeViewImplForTesting::setDeviceScaleFactor(
82     float device_scale_factor) {
83   layer_tree_host_->SetDeviceScaleFactor(device_scale_factor);
84 }
85
86 float WebLayerTreeViewImplForTesting::deviceScaleFactor() const {
87   return layer_tree_host_->device_scale_factor();
88 }
89
90 void WebLayerTreeViewImplForTesting::setBackgroundColor(WebColor color) {
91   layer_tree_host_->set_background_color(color);
92 }
93
94 void WebLayerTreeViewImplForTesting::setHasTransparentBackground(
95     bool transparent) {
96   layer_tree_host_->set_has_transparent_background(transparent);
97 }
98
99 void WebLayerTreeViewImplForTesting::setVisible(bool visible) {
100   layer_tree_host_->SetVisible(visible);
101 }
102
103 void WebLayerTreeViewImplForTesting::setPageScaleFactorAndLimits(
104     float page_scale_factor,
105     float minimum,
106     float maximum) {
107   layer_tree_host_->SetPageScaleFactorAndLimits(
108       page_scale_factor, minimum, maximum);
109 }
110
111 void WebLayerTreeViewImplForTesting::startPageScaleAnimation(
112     const blink::WebPoint& scroll,
113     bool use_anchor,
114     float new_page_scale,
115     double duration_sec) {}
116
117 void WebLayerTreeViewImplForTesting::setNeedsAnimate() {
118   layer_tree_host_->SetNeedsAnimate();
119 }
120
121 bool WebLayerTreeViewImplForTesting::commitRequested() const {
122   return layer_tree_host_->CommitRequested();
123 }
124
125 void WebLayerTreeViewImplForTesting::composite() {
126   layer_tree_host_->Composite(gfx::FrameTime::Now());
127 }
128
129 void WebLayerTreeViewImplForTesting::didStopFlinging() {}
130
131 bool WebLayerTreeViewImplForTesting::compositeAndReadback(
132     void* pixels, const WebRect& rect_in_device_viewport) {
133   return layer_tree_host_->CompositeAndReadback(pixels,
134                                                 rect_in_device_viewport);
135 }
136
137 void WebLayerTreeViewImplForTesting::finishAllRendering() {
138   layer_tree_host_->FinishAllRendering();
139 }
140
141 void WebLayerTreeViewImplForTesting::setDeferCommits(bool defer_commits) {
142   layer_tree_host_->SetDeferCommits(defer_commits);
143 }
144
145 void WebLayerTreeViewImplForTesting::renderingStats(WebRenderingStats&) const {}
146
147 void WebLayerTreeViewImplForTesting::Layout() {
148 }
149
150 void WebLayerTreeViewImplForTesting::ApplyScrollAndScale(
151     gfx::Vector2d scroll_delta,
152     float page_scale) {}
153
154 scoped_ptr<cc::OutputSurface>
155 WebLayerTreeViewImplForTesting::CreateOutputSurface(bool fallback) {
156   return make_scoped_ptr(
157       new cc::OutputSurface(cc::TestContextProvider::Create()));
158 }
159
160 scoped_refptr<cc::ContextProvider>
161 WebLayerTreeViewImplForTesting::OffscreenContextProvider() {
162   // Unit tests only run in single threaded mode.
163   return webkit::gpu::TestContextProviderFactory::GetInstance()->
164       OffscreenContextProviderForMainThread();
165 }
166
167 }  // namespace webkit