1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82

content / public / test / test_synchronous_compositor_android.h [blame]

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_PUBLIC_TEST_TEST_SYNCHRONOUS_COMPOSITOR_ANDROID_H_
#define CONTENT_PUBLIC_TEST_TEST_SYNCHRONOUS_COMPOSITOR_ANDROID_H_

#include <stddef.h>

#include <memory>
#include <vector>

#include "base/memory/raw_ptr.h"
#include "components/viz/common/surfaces/frame_sink_id.h"
#include "content/common/content_export.h"
#include "content/public/browser/android/synchronous_compositor.h"
#include "content/public/browser/android/synchronous_compositor_client.h"

namespace content {

class CONTENT_EXPORT TestSynchronousCompositor : public SynchronousCompositor {
 public:
  explicit TestSynchronousCompositor(const viz::FrameSinkId& frame_sink_id);

  TestSynchronousCompositor(const TestSynchronousCompositor&) = delete;
  TestSynchronousCompositor& operator=(const TestSynchronousCompositor&) =
      delete;

  ~TestSynchronousCompositor() override;

  void SetClient(SynchronousCompositorClient* client);

  void OnCompositorVisible() override {}
  void OnCompositorHidden() override {}
  scoped_refptr<FrameFuture> DemandDrawHwAsync(
      const gfx::Size& viewport_size,
      const gfx::Rect& viewport_rect_for_tile_priority,
      const gfx::Transform& transform_for_tile_priority) override;
  void ReturnResources(uint32_t layer_tree_frame_sink_id,
                       std::vector<viz::ReturnedResource> resources) override;
  void OnCompositorFrameTransitionDirectiveProcessed(
      uint32_t layer_tree_frame_sink_id,
      uint32_t sequence_id) override {}
  void DidPresentCompositorFrames(viz::FrameTimingDetailsMap timing_details,
                                  uint32_t frame_token) override {}
  bool DemandDrawSw(SkCanvas* canvas, bool software_canvas) override;
  void SetMemoryPolicy(size_t bytes_limit) override {}
  float GetVelocityInPixelsPerSecond() override;
  void DidBecomeActive() override {}
  void DidChangeRootLayerScrollOffset(const gfx::PointF& root_offset) override {
  }
  void SynchronouslyZoomBy(float zoom_delta,
                           const gfx::Point& anchor) override {}
  void OnComputeScroll(base::TimeTicks animate_time) override {}
  void SetBeginFrameSource(viz::BeginFrameSource* source) override {}
  void DidInvalidate() override {}
  void WasEvicted() override {}

  void SetHardwareFrame(uint32_t layer_tree_frame_sink_id,
                        std::unique_ptr<viz::CompositorFrame> frame);

  struct ReturnedResources {
    ReturnedResources();
    ReturnedResources(ReturnedResources&&);
    ~ReturnedResources();

    uint32_t layer_tree_frame_sink_id;
    std::vector<viz::ReturnedResource> resources;
  };
  using FrameAckArray = std::vector<ReturnedResources>;
  void SwapReturnedResources(FrameAckArray* array);

 private:
  raw_ptr<SynchronousCompositorClient> client_;
  viz::FrameSinkId frame_sink_id_;
  std::unique_ptr<Frame> hardware_frame_;
  FrameAckArray frame_ack_array_;
};

}  // namespace content

#endif  // CONTENT_PUBLIC_TEST_TEST_SYNCHRONOUS_COMPOSITOR_ANDROID_H_