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