1// Copyright 2012 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 "cc/test/fake_layer_tree_host_client.h" 6 7#include "cc/output/context_provider.h" 8#include "cc/test/fake_output_surface.h" 9#include "cc/test/test_web_graphics_context_3d.h" 10#include "cc/trees/layer_tree_host.h" 11 12namespace cc { 13 14FakeLayerTreeHostClient::FakeLayerTreeHostClient(RendererOptions options) 15 : use_software_rendering_(options == DIRECT_SOFTWARE || 16 options == DELEGATED_SOFTWARE), 17 use_delegating_renderer_(options == DELEGATED_3D || 18 options == DELEGATED_SOFTWARE), 19 host_(NULL) { 20} 21 22FakeLayerTreeHostClient::~FakeLayerTreeHostClient() {} 23 24void FakeLayerTreeHostClient::RequestNewOutputSurface(bool fallback) { 25 DCHECK(host_); 26 scoped_ptr<OutputSurface> surface; 27 if (use_software_rendering_) { 28 if (use_delegating_renderer_) { 29 surface = FakeOutputSurface::CreateDelegatingSoftware( 30 make_scoped_ptr(new SoftwareOutputDevice)) 31 .PassAs<OutputSurface>(); 32 } else { 33 surface = FakeOutputSurface::CreateSoftware( 34 make_scoped_ptr(new SoftwareOutputDevice)) 35 .PassAs<OutputSurface>(); 36 } 37 } else if (use_delegating_renderer_) { 38 surface = FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>(); 39 } else { 40 surface = FakeOutputSurface::Create3d().PassAs<OutputSurface>(); 41 } 42 host_->SetOutputSurface(surface.Pass()); 43} 44 45} // namespace cc 46