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)#ifndef CC_TEST_FAKE_CONTENT_LAYER_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_TEST_FAKE_CONTENT_LAYER_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/content_layer.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FakeContentLayer : public ContentLayer {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static scoped_refptr<FakeContentLayer> Create(ContentLayerClient* client) {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return make_scoped_refptr(new FakeContentLayer(client));
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      OVERRIDE;
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  size_t update_count() const { return update_count_; }
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void reset_update_count() { update_count_ = 0; }
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  size_t push_properties_count() const { return push_properties_count_; }
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void reset_push_properties_count() { push_properties_count_ = 0; }
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool Update(ResourceUpdateQueue* queue,
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      const OcclusionTracker<Layer>* occlusion) OVERRIDE;
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  gfx::Rect LastPaintRect() const;
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  void set_always_update_resources(bool always_update_resources) {
34558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch    always_update_resources_ = always_update_resources;
35558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  }
36558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void OnOutputSurfaceCreated() OVERRIDE;
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  size_t output_surface_created_count() const {
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return output_surface_created_count_;
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool HaveBackingAt(int i, int j);
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  explicit FakeContentLayer(ContentLayerClient* client);
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~FakeContentLayer();
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  size_t update_count_;
517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  size_t push_properties_count_;
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  size_t output_surface_created_count_;
53558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  bool always_update_resources_;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace cc
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CC_TEST_FAKE_CONTENT_LAYER_H_
59