14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "cc/test/fake_layer_tree_host.h"
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace cc {
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciFakeLayerTreeHost::FakeLayerTreeHost(FakeLayerTreeHostClient* client,
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     const LayerTreeSettings& settings)
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    : LayerTreeHost(client, NULL, settings),
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      client_(client),
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      host_impl_(settings, &proxy_, &manager_),
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      needs_commit_(false) {
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  client_->SetLayerTreeHost(this);
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<FakeLayerTreeHost> FakeLayerTreeHost::Create(
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    FakeLayerTreeHostClient* client) {
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  LayerTreeSettings settings;
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return make_scoped_ptr(new FakeLayerTreeHost(client, settings));
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)scoped_ptr<FakeLayerTreeHost> FakeLayerTreeHost::Create(
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    FakeLayerTreeHostClient* client,
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const LayerTreeSettings& settings) {
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return make_scoped_ptr(new FakeLayerTreeHost(client, settings));
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciFakeLayerTreeHost::~FakeLayerTreeHost() {
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  client_->SetLayerTreeHost(NULL);
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeLayerTreeHost::SetNeedsCommit() { needs_commit_ = true; }
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)LayerImpl* FakeLayerTreeHost::CommitAndCreateLayerImplTree() {
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<LayerImpl> old_root_layer_impl = active_tree()->DetachLayerTree();
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<LayerImpl> layer_impl = TreeSynchronizer::SynchronizeTrees(
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      root_layer(), old_root_layer_impl.Pass(), active_tree());
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  TreeSynchronizer::PushProperties(root_layer(), layer_impl.get());
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  active_tree()->SetRootLayer(layer_impl.Pass());
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return active_tree()->root_layer();
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace cc
47