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 11 namespace cc { 12 FakeLayerTreeHostClient(RendererOptions options)13FakeLayerTreeHostClient::FakeLayerTreeHostClient(RendererOptions options) 14 : use_software_rendering_(options == DIRECT_SOFTWARE || 15 options == DELEGATED_SOFTWARE), 16 use_delegating_renderer_(options == DELEGATED_3D || 17 options == DELEGATED_SOFTWARE) {} 18 ~FakeLayerTreeHostClient()19FakeLayerTreeHostClient::~FakeLayerTreeHostClient() {} 20 CreateOutputSurface(bool fallback)21scoped_ptr<OutputSurface> FakeLayerTreeHostClient::CreateOutputSurface( 22 bool fallback) { 23 if (use_software_rendering_) { 24 if (use_delegating_renderer_) { 25 return FakeOutputSurface::CreateDelegatingSoftware( 26 make_scoped_ptr(new SoftwareOutputDevice)).PassAs<OutputSurface>(); 27 } 28 29 return FakeOutputSurface::CreateSoftware( 30 make_scoped_ptr(new SoftwareOutputDevice)).PassAs<OutputSurface>(); 31 } 32 33 if (use_delegating_renderer_) 34 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>(); 35 return FakeOutputSurface::Create3d().PassAs<OutputSurface>(); 36 } 37 38 scoped_refptr<ContextProvider> OffscreenContextProvider()39FakeLayerTreeHostClient::OffscreenContextProvider() { 40 if (!offscreen_contexts_.get() || 41 offscreen_contexts_->DestroyedOnMainThread()) 42 offscreen_contexts_ = TestContextProvider::Create(); 43 return offscreen_contexts_; 44 } 45 46 } // namespace cc 47