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

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

Issue 2759933007: [mus]Add FrameGenerator::SetHighContrastMode(bool) (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « services/ui/ws/frame_generator_delegate.h ('k') | services/ui/ws/platform_display_default.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.cc" 10 #include "cc/test/begin_frame_args_test.cc"
11 #include "cc/test/fake_external_begin_frame_source.h" 11 #include "cc/test/fake_external_begin_frame_source.h"
12 #include "services/ui/ws/frame_generator_delegate.h"
13 #include "services/ui/ws/server_window.h" 12 #include "services/ui/ws/server_window.h"
14 #include "services/ui/ws/server_window_delegate.h" 13 #include "services/ui/ws/server_window_delegate.h"
15 #include "services/ui/ws/test_utils.h" 14 #include "services/ui/ws/test_utils.h"
16 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
17 16
18 namespace ui { 17 namespace ui {
19 namespace ws { 18 namespace ws {
20 namespace test { 19 namespace test {
21 20
22 // TestServerWindowDelegate implements ServerWindowDelegate and returns nullptrs 21 // TestServerWindowDelegate implements ServerWindowDelegate and returns nullptrs
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 observing_begin_frames_ = false; 95 observing_begin_frames_ = false;
97 } 96 }
98 begin_frame_source_ = source; 97 begin_frame_source_ = source;
99 UpdateNeedsBeginFramesInternal(); 98 UpdateNeedsBeginFramesInternal();
100 } 99 }
101 100
102 const cc::CompositorFrameMetadata& last_metadata() { 101 const cc::CompositorFrameMetadata& last_metadata() {
103 return last_frame_.metadata; 102 return last_frame_.metadata;
104 } 103 }
105 104
105 const cc::RenderPassList& last_render_pass_list() {
106 return last_frame_.render_pass_list;
107 }
108
106 int number_frames_received() { return number_frames_received_; } 109 int number_frames_received() { return number_frames_received_; }
107 110
108 private: 111 private:
109 void UpdateNeedsBeginFramesInternal() { 112 void UpdateNeedsBeginFramesInternal() {
110 if (!begin_frame_source_) 113 if (!begin_frame_source_)
111 return; 114 return;
112 115
113 if (needs_begin_frames_ == observing_begin_frames_) 116 if (needs_begin_frames_ == observing_begin_frames_)
114 return; 117 return;
115 118
(...skipping 27 matching lines...) Expand all
143 146
144 std::unique_ptr<FakeCompositorFrameSink> compositor_frame_sink = 147 std::unique_ptr<FakeCompositorFrameSink> compositor_frame_sink =
145 base::MakeUnique<FakeCompositorFrameSink>(); 148 base::MakeUnique<FakeCompositorFrameSink>();
146 compositor_frame_sink_ = compositor_frame_sink.get(); 149 compositor_frame_sink_ = compositor_frame_sink.get();
147 150
148 constexpr float kRefreshRate = 0.f; 151 constexpr float kRefreshRate = 0.f;
149 constexpr bool kTickAutomatically = false; 152 constexpr bool kTickAutomatically = false;
150 begin_frame_source_ = base::MakeUnique<cc::FakeExternalBeginFrameSource>( 153 begin_frame_source_ = base::MakeUnique<cc::FakeExternalBeginFrameSource>(
151 kRefreshRate, kTickAutomatically); 154 kRefreshRate, kTickAutomatically);
152 compositor_frame_sink_->SetBeginFrameSource(begin_frame_source_.get()); 155 compositor_frame_sink_->SetBeginFrameSource(begin_frame_source_.get());
153 delegate_ = base::MakeUnique<TestFrameGeneratorDelegate>();
154 server_window_delegate_ = base::MakeUnique<TestServerWindowDelegate>(); 156 server_window_delegate_ = base::MakeUnique<TestServerWindowDelegate>();
155 root_window_ = base::MakeUnique<ServerWindow>(server_window_delegate_.get(), 157 root_window_ = base::MakeUnique<ServerWindow>(server_window_delegate_.get(),
156 WindowId()); 158 WindowId());
157 root_window_->SetVisible(true); 159 root_window_->SetVisible(true);
158 frame_generator_ = base::MakeUnique<FrameGenerator>( 160 frame_generator_ = base::MakeUnique<FrameGenerator>(
159 delegate_.get(), root_window_.get(), std::move(compositor_frame_sink)); 161 root_window_.get(), std::move(compositor_frame_sink));
160 }; 162 };
161 163
162 int NumberOfFramesReceived() { 164 int NumberOfFramesReceived() {
163 return compositor_frame_sink_->number_frames_received(); 165 return compositor_frame_sink_->number_frames_received();
164 } 166 }
165 167
166 void IssueBeginFrame() { 168 void IssueBeginFrame() {
167 begin_frame_source_->TestOnBeginFrame(cc::CreateBeginFrameArgsForTesting( 169 begin_frame_source_->TestOnBeginFrame(cc::CreateBeginFrameArgsForTesting(
168 BEGINFRAME_FROM_HERE, 0, next_sequence_number_)); 170 BEGINFRAME_FROM_HERE, 0, next_sequence_number_));
169 ++next_sequence_number_; 171 ++next_sequence_number_;
170 } 172 }
171 173
172 FrameGenerator* frame_generator() { return frame_generator_.get(); } 174 FrameGenerator* frame_generator() { return frame_generator_.get(); }
173 175
174 const cc::CompositorFrameMetadata& LastMetadata() { 176 const cc::CompositorFrameMetadata& LastMetadata() {
175 return compositor_frame_sink_->last_metadata(); 177 return compositor_frame_sink_->last_metadata();
176 } 178 }
177 179
180 const cc::RenderPassList& LastRenderPassList() {
181 return compositor_frame_sink_->last_render_pass_list();
182 }
183
178 private: 184 private:
179 FakeCompositorFrameSink* compositor_frame_sink_ = nullptr; 185 FakeCompositorFrameSink* compositor_frame_sink_ = nullptr;
180 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_; 186 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_;
181 std::unique_ptr<TestFrameGeneratorDelegate> delegate_;
182 std::unique_ptr<TestServerWindowDelegate> server_window_delegate_; 187 std::unique_ptr<TestServerWindowDelegate> server_window_delegate_;
183 std::unique_ptr<ServerWindow> root_window_; 188 std::unique_ptr<ServerWindow> root_window_;
184 std::unique_ptr<FrameGenerator> frame_generator_; 189 std::unique_ptr<FrameGenerator> frame_generator_;
185 int next_sequence_number_ = 1; 190 int next_sequence_number_ = 1;
186 191
187 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest); 192 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest);
188 }; 193 };
189 194
190 TEST_F(FrameGeneratorTest, OnSurfaceCreated) { 195 TEST_F(FrameGeneratorTest, OnSurfaceCreated) {
191 EXPECT_EQ(0, NumberOfFramesReceived()); 196 EXPECT_EQ(0, NumberOfFramesReceived());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 const cc::CompositorFrameMetadata& last_metadata = LastMetadata(); 251 const cc::CompositorFrameMetadata& last_metadata = LastMetadata();
247 EXPECT_EQ(kDefaultScaleFactor, last_metadata.device_scale_factor); 252 EXPECT_EQ(kDefaultScaleFactor, last_metadata.device_scale_factor);
248 253
249 frame_generator()->SetDeviceScaleFactor(kArbitraryScaleFactor); 254 frame_generator()->SetDeviceScaleFactor(kArbitraryScaleFactor);
250 IssueBeginFrame(); 255 IssueBeginFrame();
251 EXPECT_EQ(2, NumberOfFramesReceived()); 256 EXPECT_EQ(2, NumberOfFramesReceived());
252 const cc::CompositorFrameMetadata& second_last_metadata = LastMetadata(); 257 const cc::CompositorFrameMetadata& second_last_metadata = LastMetadata();
253 EXPECT_EQ(kArbitraryScaleFactor, second_last_metadata.device_scale_factor); 258 EXPECT_EQ(kArbitraryScaleFactor, second_last_metadata.device_scale_factor);
254 } 259 }
255 260
261 TEST_F(FrameGeneratorTest, SetHighContrastMode) {
262 // FrameGenerator requires a valid SurfaceInfo before generating
263 // CompositorFrames.
264 const cc::SurfaceId kArbitrarySurfaceId(
265 cc::FrameSinkId(1, 1),
266 cc::LocalSurfaceId(1, base::UnguessableToken::Create()));
267 const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f,
268 gfx::Size(100, 100));
269 frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo);
270 IssueBeginFrame();
271 EXPECT_EQ(1, NumberOfFramesReceived());
272
273 // Changing high contrast mode should trigger a BeginFrame.
274 frame_generator()->SetHighContrastMode(true);
275 IssueBeginFrame();
276 EXPECT_EQ(2, NumberOfFramesReceived());
277
278 // Verify that the last frame has an invert filter.
279 const cc::RenderPassList& render_pass_list = LastRenderPassList();
280 std::vector<cc::FilterOperation> filter_list = {
Fady Samuel 2017/03/20 22:03:47 Do you need this line? can you simply have this in
Alex Z. 2017/03/20 23:34:23 Done.
281 cc::FilterOperation::CreateInvertFilter(1.f)};
282 const cc::FilterOperations expected_filters(std::move(filter_list));
283 EXPECT_EQ(expected_filters, render_pass_list.front()->filters);
284 }
285
256 } // namespace test 286 } // namespace test
257 } // namespace ws 287 } // namespace ws
258 } // namespace ui 288 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/frame_generator_delegate.h ('k') | services/ui/ws/platform_display_default.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698