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/blink/web_layer_impl.h" 12#include "cc/input/input_handler.h" 13#include "cc/layers/layer.h" 14#include "cc/output/output_surface.h" 15#include "cc/test/test_context_provider.h" 16#include "cc/trees/layer_tree_host.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 25using blink::WebColor; 26using blink::WebGraphicsContext3D; 27using blink::WebRect; 28using blink::WebSize; 29 30namespace content { 31 32WebLayerTreeViewImplForTesting::WebLayerTreeViewImplForTesting() {} 33 34WebLayerTreeViewImplForTesting::~WebLayerTreeViewImplForTesting() {} 35 36void 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_ = cc::LayerTreeHost::CreateSingleThreaded( 46 this, this, NULL, settings, base::MessageLoopProxy::current()); 47 DCHECK(layer_tree_host_); 48} 49 50void WebLayerTreeViewImplForTesting::setSurfaceReady() { 51 layer_tree_host_->SetLayerTreeHostClientReady(); 52} 53 54void WebLayerTreeViewImplForTesting::setRootLayer( 55 const blink::WebLayer& root) { 56 layer_tree_host_->SetRootLayer( 57 static_cast<const cc_blink::WebLayerImpl*>(&root)->layer()); 58} 59 60void WebLayerTreeViewImplForTesting::clearRootLayer() { 61 layer_tree_host_->SetRootLayer(scoped_refptr<cc::Layer>()); 62} 63 64void WebLayerTreeViewImplForTesting::setViewportSize( 65 const WebSize& unused_deprecated, 66 const WebSize& device_viewport_size) { 67 layer_tree_host_->SetViewportSize(device_viewport_size); 68} 69 70void WebLayerTreeViewImplForTesting::setViewportSize( 71 const WebSize& device_viewport_size) { 72 layer_tree_host_->SetViewportSize(device_viewport_size); 73} 74 75WebSize WebLayerTreeViewImplForTesting::layoutViewportSize() const { 76 return layer_tree_host_->device_viewport_size(); 77} 78 79WebSize WebLayerTreeViewImplForTesting::deviceViewportSize() const { 80 return layer_tree_host_->device_viewport_size(); 81} 82 83void WebLayerTreeViewImplForTesting::setDeviceScaleFactor( 84 float device_scale_factor) { 85 layer_tree_host_->SetDeviceScaleFactor(device_scale_factor); 86} 87 88float WebLayerTreeViewImplForTesting::deviceScaleFactor() const { 89 return layer_tree_host_->device_scale_factor(); 90} 91 92void WebLayerTreeViewImplForTesting::setBackgroundColor(WebColor color) { 93 layer_tree_host_->set_background_color(color); 94} 95 96void WebLayerTreeViewImplForTesting::setHasTransparentBackground( 97 bool transparent) { 98 layer_tree_host_->set_has_transparent_background(transparent); 99} 100 101void WebLayerTreeViewImplForTesting::setVisible(bool visible) { 102 layer_tree_host_->SetVisible(visible); 103} 104 105void 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 113void WebLayerTreeViewImplForTesting::startPageScaleAnimation( 114 const blink::WebPoint& scroll, 115 bool use_anchor, 116 float new_page_scale, 117 double duration_sec) {} 118 119void WebLayerTreeViewImplForTesting::setNeedsAnimate() { 120 layer_tree_host_->SetNeedsAnimate(); 121} 122 123bool WebLayerTreeViewImplForTesting::commitRequested() const { 124 return layer_tree_host_->CommitRequested(); 125} 126 127void WebLayerTreeViewImplForTesting::didStopFlinging() {} 128 129void WebLayerTreeViewImplForTesting::finishAllRendering() { 130 layer_tree_host_->FinishAllRendering(); 131} 132 133void WebLayerTreeViewImplForTesting::setDeferCommits(bool defer_commits) { 134 layer_tree_host_->SetDeferCommits(defer_commits); 135} 136 137void WebLayerTreeViewImplForTesting::Layout() { 138} 139 140void WebLayerTreeViewImplForTesting::ApplyViewportDeltas( 141 const gfx::Vector2d& scroll_delta, 142 float page_scale, 143 float top_controls_delta) {} 144 145void WebLayerTreeViewImplForTesting::RequestNewOutputSurface( 146 bool fallback) { 147 layer_tree_host_->SetOutputSurface(make_scoped_ptr( 148 new cc::OutputSurface(cc::TestContextProvider::Create()))); 149} 150 151void WebLayerTreeViewImplForTesting::registerViewportLayers( 152 const blink::WebLayer* pageScaleLayer, 153 const blink::WebLayer* innerViewportScrollLayer, 154 const blink::WebLayer* outerViewportScrollLayer) { 155 layer_tree_host_->RegisterViewportLayers( 156 static_cast<const cc_blink::WebLayerImpl*>(pageScaleLayer)->layer(), 157 static_cast<const cc_blink::WebLayerImpl*>(innerViewportScrollLayer) 158 ->layer(), 159 // The outer viewport layer will only exist when using pinch virtual 160 // viewports. 161 outerViewportScrollLayer ? static_cast<const cc_blink::WebLayerImpl*>( 162 outerViewportScrollLayer)->layer() 163 : NULL); 164} 165 166void WebLayerTreeViewImplForTesting::clearViewportLayers() { 167 layer_tree_host_->RegisterViewportLayers(scoped_refptr<cc::Layer>(), 168 scoped_refptr<cc::Layer>(), 169 scoped_refptr<cc::Layer>()); 170} 171 172void WebLayerTreeViewImplForTesting::registerSelection( 173 const blink::WebSelectionBound& start, 174 const blink::WebSelectionBound& end) { 175} 176 177void WebLayerTreeViewImplForTesting::clearSelection() { 178} 179 180} // namespace content 181