12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/fake_content_layer.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "cc/resources/content_layer_updater.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/prioritized_resource.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/fake_content_layer_impl.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class FakeContentLayerUpdater : public ContentLayerUpdater { 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public: 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci using ContentLayerUpdater::paint_rect; 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private: 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual ~FakeContentLayerUpdater() {} 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}; 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FakeContentLayer::FakeContentLayer(ContentLayerClient* client) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : ContentLayer(client), 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch update_count_(0), 24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch push_properties_count_(0), 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) output_surface_created_count_(0), 26558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch always_update_resources_(false) { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetBounds(gfx::Size(1, 1)); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetIsDrawable(true); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FakeContentLayer::~FakeContentLayer() {} 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<LayerImpl> FakeContentLayer::CreateLayerImpl( 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerTreeImpl* tree_impl) { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return FakeContentLayerImpl::Create(tree_impl, layer_id_).PassAs<LayerImpl>(); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool FakeContentLayer::Update(ResourceUpdateQueue* queue, 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OcclusionTracker<Layer>* occlusion) { 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool updated = ContentLayer::Update(queue, occlusion); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) update_count_++; 42558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return updated || always_update_resources_; 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)gfx::Rect FakeContentLayer::LastPaintRect() const { 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return (static_cast<FakeContentLayerUpdater*>(Updater()))->paint_rect(); 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid FakeContentLayer::PushPropertiesTo(LayerImpl* layer) { 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ContentLayer::PushPropertiesTo(layer); 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch push_properties_count_++; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeContentLayer::OnOutputSurfaceCreated() { 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ContentLayer::OnOutputSurfaceCreated(); 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) output_surface_created_count_++; 574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool FakeContentLayer::HaveBackingAt(int i, int j) { 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const PrioritizedResource* resource = ResourceAtForTesting(i, j); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return resource && resource->have_backing_texture(); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 65