17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef CC_TEST_FAKE_OUTPUT_SURFACE_CLIENT_H_
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define CC_TEST_FAKE_OUTPUT_SURFACE_CLIENT_H_
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/output/managed_memory_policy.h"
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/output/output_surface_client.h"
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace cc {
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class OutputSurface;
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass FakeOutputSurfaceClient : public OutputSurfaceClient {
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public:
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FakeOutputSurfaceClient()
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      : output_surface_(NULL),
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        begin_frame_count_(0),
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        deferred_initialize_called_(false),
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        did_lose_output_surface_called_(false),
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        memory_policy_(0) {}
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  explicit FakeOutputSurfaceClient(OutputSurface* output_surface)
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      : output_surface_(output_surface),
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        begin_frame_count_(0),
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        deferred_initialize_called_(false),
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        did_lose_output_surface_called_(false),
290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)        memory_policy_(0) {}
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void DeferredInitialize() OVERRIDE;
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void ReleaseGL() OVERRIDE;
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void CommitVSyncParameters(base::TimeTicks timebase,
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                     base::TimeDelta interval) OVERRIDE {}
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void SetNeedsRedrawRect(const gfx::Rect& damage_rect) OVERRIDE {}
36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void BeginFrame(const BeginFrameArgs& args) OVERRIDE;
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void DidSwapBuffers() OVERRIDE {}
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void DidSwapBuffersComplete() OVERRIDE {}
39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual void ReclaimResources(const CompositorFrameAck* ack) OVERRIDE {}
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void DidLoseOutputSurface() OVERRIDE;
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetExternalDrawConstraints(
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const gfx::Transform& transform,
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const gfx::Rect& viewport,
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const gfx::Rect& clip,
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      const gfx::Rect& viewport_rect_for_tile_priority,
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      const gfx::Transform& transform_for_tile_priority,
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      bool resourceless_software_draw) OVERRIDE {}
48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) OVERRIDE;
49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void SetTreeActivationCallback(const base::Closure&) OVERRIDE {}
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  int begin_frame_count() { return begin_frame_count_; }
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool deferred_initialize_called() {
547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    return deferred_initialize_called_;
557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool did_lose_output_surface_called() {
587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    return did_lose_output_surface_called_;
597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  const ManagedMemoryPolicy& memory_policy() const { return memory_policy_; }
627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private:
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  OutputSurface* output_surface_;
65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  int begin_frame_count_;
667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool deferred_initialize_called_;
677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool did_lose_output_surface_called_;
687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ManagedMemoryPolicy memory_policy_;
697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch};
707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}  // namespace cc
727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif  // CC_TEST_FAKE_OUTPUT_SURFACE_CLIENT_H_
74