• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/renderer/compositor_bindings/web_layer_impl.h"
17 #include "content/test/test_webkit_platform_support.h"
18 #include "third_party/WebKit/public/platform/Platform.h"
19 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
20 #include "third_party/WebKit/public/platform/WebLayer.h"
21 #include "third_party/WebKit/public/platform/WebLayerTreeView.h"
22 #include "third_party/WebKit/public/platform/WebSize.h"
23 #include "ui/gfx/frame_time.h"
24 
25 using blink::WebColor;
26 using blink::WebGraphicsContext3D;
27 using blink::WebRect;
28 using blink::WebSize;
29 
30 namespace content {
31 
WebLayerTreeViewImplForTesting()32 WebLayerTreeViewImplForTesting::WebLayerTreeViewImplForTesting() {}
33 
~WebLayerTreeViewImplForTesting()34 WebLayerTreeViewImplForTesting::~WebLayerTreeViewImplForTesting() {}
35 
Initialize()36 void WebLayerTreeViewImplForTesting::Initialize() {
37   cc::LayerTreeSettings settings;
38 
39   // For web contents, layer transforms should scale up the contents of layers
40   // to keep content always crisp when possible.
41   settings.layer_transforms_should_scale_layer_contents = true;
42 
43   // Accelerated animations are enabled for unit tests.
44   settings.accelerated_animation_enabled = true;
45   layer_tree_host_ =
46       cc::LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings);
47   DCHECK(layer_tree_host_);
48 }
49 
setSurfaceReady()50 void WebLayerTreeViewImplForTesting::setSurfaceReady() {
51   layer_tree_host_->SetLayerTreeHostClientReady();
52 }
53 
setRootLayer(const blink::WebLayer & root)54 void WebLayerTreeViewImplForTesting::setRootLayer(
55     const blink::WebLayer& root) {
56   layer_tree_host_->SetRootLayer(
57       static_cast<const WebLayerImpl*>(&root)->layer());
58 }
59 
clearRootLayer()60 void WebLayerTreeViewImplForTesting::clearRootLayer() {
61   layer_tree_host_->SetRootLayer(scoped_refptr<cc::Layer>());
62 }
63 
setViewportSize(const WebSize & unused_deprecated,const WebSize & device_viewport_size)64 void WebLayerTreeViewImplForTesting::setViewportSize(
65     const WebSize& unused_deprecated,
66     const WebSize& device_viewport_size) {
67   layer_tree_host_->SetViewportSize(device_viewport_size);
68 }
69 
setViewportSize(const WebSize & device_viewport_size)70 void WebLayerTreeViewImplForTesting::setViewportSize(
71     const WebSize& device_viewport_size) {
72   layer_tree_host_->SetViewportSize(device_viewport_size);
73 }
74 
layoutViewportSize() const75 WebSize WebLayerTreeViewImplForTesting::layoutViewportSize() const {
76   return layer_tree_host_->device_viewport_size();
77 }
78 
deviceViewportSize() const79 WebSize WebLayerTreeViewImplForTesting::deviceViewportSize() const {
80   return layer_tree_host_->device_viewport_size();
81 }
82 
setDeviceScaleFactor(float device_scale_factor)83 void WebLayerTreeViewImplForTesting::setDeviceScaleFactor(
84     float device_scale_factor) {
85   layer_tree_host_->SetDeviceScaleFactor(device_scale_factor);
86 }
87 
deviceScaleFactor() const88 float WebLayerTreeViewImplForTesting::deviceScaleFactor() const {
89   return layer_tree_host_->device_scale_factor();
90 }
91 
setBackgroundColor(WebColor color)92 void WebLayerTreeViewImplForTesting::setBackgroundColor(WebColor color) {
93   layer_tree_host_->set_background_color(color);
94 }
95 
setHasTransparentBackground(bool transparent)96 void WebLayerTreeViewImplForTesting::setHasTransparentBackground(
97     bool transparent) {
98   layer_tree_host_->set_has_transparent_background(transparent);
99 }
100 
setVisible(bool visible)101 void WebLayerTreeViewImplForTesting::setVisible(bool visible) {
102   layer_tree_host_->SetVisible(visible);
103 }
104 
setPageScaleFactorAndLimits(float page_scale_factor,float minimum,float maximum)105 void WebLayerTreeViewImplForTesting::setPageScaleFactorAndLimits(
106     float page_scale_factor,
107     float minimum,
108     float maximum) {
109   layer_tree_host_->SetPageScaleFactorAndLimits(
110       page_scale_factor, minimum, maximum);
111 }
112 
startPageScaleAnimation(const blink::WebPoint & scroll,bool use_anchor,float new_page_scale,double duration_sec)113 void WebLayerTreeViewImplForTesting::startPageScaleAnimation(
114     const blink::WebPoint& scroll,
115     bool use_anchor,
116     float new_page_scale,
117     double duration_sec) {}
118 
setNeedsAnimate()119 void WebLayerTreeViewImplForTesting::setNeedsAnimate() {
120   layer_tree_host_->SetNeedsAnimate();
121 }
122 
commitRequested() const123 bool WebLayerTreeViewImplForTesting::commitRequested() const {
124   return layer_tree_host_->CommitRequested();
125 }
126 
didStopFlinging()127 void WebLayerTreeViewImplForTesting::didStopFlinging() {}
128 
finishAllRendering()129 void WebLayerTreeViewImplForTesting::finishAllRendering() {
130   layer_tree_host_->FinishAllRendering();
131 }
132 
setDeferCommits(bool defer_commits)133 void WebLayerTreeViewImplForTesting::setDeferCommits(bool defer_commits) {
134   layer_tree_host_->SetDeferCommits(defer_commits);
135 }
136 
Layout()137 void WebLayerTreeViewImplForTesting::Layout() {
138 }
139 
ApplyScrollAndScale(const gfx::Vector2d & scroll_delta,float page_scale)140 void WebLayerTreeViewImplForTesting::ApplyScrollAndScale(
141     const gfx::Vector2d& scroll_delta,
142     float page_scale) {}
143 
144 scoped_ptr<cc::OutputSurface>
CreateOutputSurface(bool fallback)145 WebLayerTreeViewImplForTesting::CreateOutputSurface(bool fallback) {
146   return make_scoped_ptr(
147       new cc::OutputSurface(cc::TestContextProvider::Create()));
148 }
149 
registerViewportLayers(const blink::WebLayer * pageScaleLayer,const blink::WebLayer * innerViewportScrollLayer,const blink::WebLayer * outerViewportScrollLayer)150 void WebLayerTreeViewImplForTesting::registerViewportLayers(
151     const blink::WebLayer* pageScaleLayer,
152     const blink::WebLayer* innerViewportScrollLayer,
153     const blink::WebLayer* outerViewportScrollLayer) {
154   layer_tree_host_->RegisterViewportLayers(
155       static_cast<const WebLayerImpl*>(pageScaleLayer)->layer(),
156       static_cast<const WebLayerImpl*>(innerViewportScrollLayer)->layer(),
157       // The outer viewport layer will only exist when using pinch virtual
158       // viewports.
159       outerViewportScrollLayer
160           ? static_cast<const WebLayerImpl*>(outerViewportScrollLayer)->layer()
161           : NULL);
162 }
163 
clearViewportLayers()164 void WebLayerTreeViewImplForTesting::clearViewportLayers() {
165   layer_tree_host_->RegisterViewportLayers(scoped_refptr<cc::Layer>(),
166                                            scoped_refptr<cc::Layer>(),
167                                            scoped_refptr<cc::Layer>());
168 }
169 
170 }  // namespace content
171