Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Side by Side Diff: services/ui/ws/frame_generator_unittest.cc

Issue 2888043004: [cc] Add and plumb CFS::DidNotProduceFrame. (Closed)
Patch Set: address nits, rename to DidNotProduceFrame. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/ui/ws/frame_generator.h" 5 #include "services/ui/ws/frame_generator.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "cc/output/compositor_frame_sink.h" 8 #include "cc/output/compositor_frame_sink.h"
9 #include "cc/scheduler/begin_frame_source.h" 9 #include "cc/scheduler/begin_frame_source.h"
10 #include "cc/test/begin_frame_args_test.h" 10 #include "cc/test/begin_frame_args_test.h"
(...skipping 28 matching lines...) Expand all
39 explicit TestClientBinding( 39 explicit TestClientBinding(
40 cc::mojom::MojoCompositorFrameSinkClient* sink_client) 40 cc::mojom::MojoCompositorFrameSinkClient* sink_client)
41 : sink_client_(sink_client) {} 41 : sink_client_(sink_client) {}
42 ~TestClientBinding() override = default; 42 ~TestClientBinding() override = default;
43 43
44 // cc::mojom::MojoCompositorFrameSink implementation: 44 // cc::mojom::MojoCompositorFrameSink implementation:
45 void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id, 45 void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id,
46 cc::CompositorFrame frame) override { 46 cc::CompositorFrame frame) override {
47 ++frames_submitted_; 47 ++frames_submitted_;
48 last_frame_ = std::move(frame); 48 last_frame_ = std::move(frame);
49 begin_frame_source_->DidFinishFrame(this, 49 last_begin_frame_ack_ = last_frame_.metadata.begin_frame_ack;
50 last_frame_.metadata.begin_frame_ack); 50 }
51
52 void DidNotProduceFrame(const cc::BeginFrameAck& ack) override {
53 last_begin_frame_ack_ = ack;
51 } 54 }
52 55
53 void SetNeedsBeginFrame(bool needs_begin_frame) override { 56 void SetNeedsBeginFrame(bool needs_begin_frame) override {
54 if (needs_begin_frame == observing_begin_frames_) 57 if (needs_begin_frame == observing_begin_frames_)
55 return; 58 return;
56 59
57 observing_begin_frames_ = needs_begin_frame; 60 observing_begin_frames_ = needs_begin_frame;
58 if (needs_begin_frame) { 61 if (needs_begin_frame) {
59 begin_frame_source_->AddObserver(this); 62 begin_frame_source_->AddObserver(this);
60 } else 63 } else
61 begin_frame_source_->RemoveObserver(this); 64 begin_frame_source_->RemoveObserver(this);
62 } 65 }
63 66
64 void BeginFrameDidNotSwap(const cc::BeginFrameAck& ack) override {
65 if (observing_begin_frames_)
66 begin_frame_source_->DidFinishFrame(this, ack);
67 }
68
69 void EvictCurrentSurface() override {} 67 void EvictCurrentSurface() override {}
70 68
71 // cc::BeginFrameObserver implementation. 69 // cc::BeginFrameObserver implementation.
72 void OnBeginFrame(const cc::BeginFrameArgs& args) override { 70 void OnBeginFrame(const cc::BeginFrameArgs& args) override {
73 sink_client_->OnBeginFrame(args); 71 sink_client_->OnBeginFrame(args);
74 last_begin_frame_args_ = args; 72 last_begin_frame_args_ = args;
75 } 73 }
76 74
77 const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override { 75 const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override {
78 return last_begin_frame_args_; 76 return last_begin_frame_args_;
79 } 77 }
80 78
81 void OnBeginFrameSourcePausedChanged(bool paused) override {} 79 void OnBeginFrameSourcePausedChanged(bool paused) override {}
82 80
83 void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) { 81 void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) {
84 begin_frame_source_ = begin_frame_source; 82 begin_frame_source_ = begin_frame_source;
85 } 83 }
86 84
87 const cc::RenderPassList& last_render_pass_list() const { 85 const cc::RenderPassList& last_render_pass_list() const {
88 return last_frame_.render_pass_list; 86 return last_frame_.render_pass_list;
89 } 87 }
90 88
91 const cc::CompositorFrameMetadata& last_metadata() const { 89 const cc::CompositorFrameMetadata& last_metadata() const {
92 return last_frame_.metadata; 90 return last_frame_.metadata;
93 } 91 }
94 92
95 int frames_submitted() const { return frames_submitted_; } 93 int frames_submitted() const { return frames_submitted_; }
96 94
95 const cc::BeginFrameAck& last_begin_frame_ack() const {
96 return last_begin_frame_ack_;
97 }
98
97 private: 99 private:
98 cc::mojom::MojoCompositorFrameSinkClient* sink_client_; 100 cc::mojom::MojoCompositorFrameSinkClient* sink_client_;
99 cc::BeginFrameArgs last_begin_frame_args_; 101 cc::BeginFrameArgs last_begin_frame_args_;
100 cc::CompositorFrame last_frame_; 102 cc::CompositorFrame last_frame_;
101 cc::BeginFrameSource* begin_frame_source_ = nullptr; 103 cc::BeginFrameSource* begin_frame_source_ = nullptr;
102 bool observing_begin_frames_ = false; 104 bool observing_begin_frames_ = false;
103 int frames_submitted_ = 0; 105 int frames_submitted_ = 0;
106 cc::BeginFrameAck last_begin_frame_ack_;
104 }; 107 };
105 108
106 class FrameGeneratorTest : public testing::Test { 109 class FrameGeneratorTest : public testing::Test {
107 public: 110 public:
108 FrameGeneratorTest() = default; 111 FrameGeneratorTest() = default;
109 ~FrameGeneratorTest() override = default; 112 ~FrameGeneratorTest() override = default;
110 113
111 // testing::Test overrides: 114 // testing::Test overrides:
112 void SetUp() override { 115 void SetUp() override {
113 testing::Test::SetUp(); 116 testing::Test::SetUp();
(...skipping 28 matching lines...) Expand all
142 } 145 }
143 146
144 void IssueBeginFrame() { 147 void IssueBeginFrame() {
145 begin_frame_source_->TestOnBeginFrame(cc::CreateBeginFrameArgsForTesting( 148 begin_frame_source_->TestOnBeginFrame(cc::CreateBeginFrameArgsForTesting(
146 BEGINFRAME_FROM_HERE, 0, next_sequence_number_)); 149 BEGINFRAME_FROM_HERE, 0, next_sequence_number_));
147 ++next_sequence_number_; 150 ++next_sequence_number_;
148 } 151 }
149 152
150 int NumberOfFramesReceived() const { return binding_->frames_submitted(); } 153 int NumberOfFramesReceived() const { return binding_->frames_submitted(); }
151 154
152 const cc::BeginFrameAck& LastBeginFrameAck() { 155 const cc::BeginFrameAck& LastBeginFrameAck() const {
153 return begin_frame_source_->LastAckForObserver(binding_); 156 return binding_->last_begin_frame_ack();
154 } 157 }
155 158
156 const cc::CompositorFrameMetadata& LastMetadata() const { 159 const cc::CompositorFrameMetadata& LastMetadata() const {
157 return binding_->last_metadata(); 160 return binding_->last_metadata();
158 } 161 }
159 162
160 const cc::RenderPassList& LastRenderPassList() const { 163 const cc::RenderPassList& LastRenderPassList() const {
161 return binding_->last_render_pass_list(); 164 return binding_->last_render_pass_list();
162 } 165 }
163 166
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 InitWithSurfaceInfo(); 279 InitWithSurfaceInfo();
277 280
278 frame_generator()->OnWindowDamaged(); 281 frame_generator()->OnWindowDamaged();
279 IssueBeginFrame(); 282 IssueBeginFrame();
280 EXPECT_EQ(2, NumberOfFramesReceived()); 283 EXPECT_EQ(2, NumberOfFramesReceived());
281 } 284 }
282 285
283 } // namespace test 286 } // namespace test
284 } // namespace ws 287 } // namespace ws
285 } // namespace ui 288 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/frame_generator.cc ('k') | third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698