fake_layer_tree_host.h revision a36e5920737c6adbddd3e43b760e5de8431db6e0
17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef CC_TEST_FAKE_LAYER_TREE_HOST_H_ 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define CC_TEST_FAKE_LAYER_TREE_HOST_H_ 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/test/fake_impl_proxy.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/test/fake_layer_tree_host_client.h" 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/test/fake_layer_tree_host_impl.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/trees/layer_tree_host.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/trees/layer_tree_impl.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/trees/tree_synchronizer.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace cc { 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass FakeLayerTreeHost : protected LayerTreeHost { 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static scoped_ptr<FakeLayerTreeHost> Create() { 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static LayerTreeSettings settings; 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return make_scoped_ptr(new FakeLayerTreeHost(&client, settings)); 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static scoped_ptr<FakeLayerTreeHost> Create( 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const LayerTreeSettings& settings) { 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return make_scoped_ptr(new FakeLayerTreeHost(&client, settings)); 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual ~FakeLayerTreeHost() {} 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void SetNeedsCommit() OVERRIDE {} 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void SetNeedsFullTreeSync() OVERRIDE {} 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch using LayerTreeHost::SetRootLayer; 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) using LayerTreeHost::root_layer; 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch LayerImpl* CommitAndCreateLayerImplTree() { 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<LayerImpl> old_root_layer_impl = 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch active_tree()->DetachLayerTree(); 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<LayerImpl> layer_impl = 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch TreeSynchronizer::SynchronizeTrees( 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch root_layer(), 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch old_root_layer_impl.Pass(), 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch active_tree()); 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch TreeSynchronizer::PushProperties(root_layer(), layer_impl.get()); 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch active_tree()->SetRootLayer(layer_impl.Pass()); 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return active_tree()->root_layer(); 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FakeLayerTreeHostImpl* host_impl() { return &host_impl_; } 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch LayerTreeImpl* active_tree() { return host_impl_.active_tree(); } 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private: 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FakeLayerTreeHost(LayerTreeHostClient* client, 597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const LayerTreeSettings& settings) 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch : LayerTreeHost(client, settings), 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch host_impl_(settings, &proxy_) {} 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FakeImplProxy proxy_; 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FakeLayerTreeHostImpl host_impl_; 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace cc 687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif // CC_TEST_FAKE_LAYER_TREE_HOST_H_ 70