Index: services/ui/ws/frame_generator_unittest.cc |
diff --git a/services/ui/ws/frame_generator_unittest.cc b/services/ui/ws/frame_generator_unittest.cc |
index b5c9b981ec682f149f161c89b96d513f12d8bd41..b2d626e48a938f8ee4eade4545c1e6c256caa62f 100644 |
--- a/services/ui/ws/frame_generator_unittest.cc |
+++ b/services/ui/ws/frame_generator_unittest.cc |
@@ -9,7 +9,6 @@ |
#include "cc/scheduler/begin_frame_source.h" |
#include "cc/test/begin_frame_args_test.cc" |
#include "cc/test/fake_external_begin_frame_source.h" |
-#include "services/ui/ws/frame_generator_delegate.h" |
#include "services/ui/ws/server_window.h" |
#include "services/ui/ws/server_window_delegate.h" |
#include "services/ui/ws/test_utils.h" |
@@ -99,10 +98,14 @@ class FakeCompositorFrameSink : public cc::CompositorFrameSink, |
UpdateNeedsBeginFramesInternal(); |
} |
- const cc::CompositorFrameMetadata& last_metadata() { |
+ const cc::CompositorFrameMetadata& last_metadata() const { |
return last_frame_.metadata; |
} |
+ const cc::RenderPassList& last_render_pass_list() const { |
+ return last_frame_.render_pass_list; |
+ } |
+ |
int number_frames_received() { return number_frames_received_; } |
private: |
@@ -150,13 +153,12 @@ class FrameGeneratorTest : public testing::Test { |
begin_frame_source_ = base::MakeUnique<cc::FakeExternalBeginFrameSource>( |
kRefreshRate, kTickAutomatically); |
compositor_frame_sink_->SetBeginFrameSource(begin_frame_source_.get()); |
- delegate_ = base::MakeUnique<TestFrameGeneratorDelegate>(); |
server_window_delegate_ = base::MakeUnique<TestServerWindowDelegate>(); |
root_window_ = base::MakeUnique<ServerWindow>(server_window_delegate_.get(), |
WindowId()); |
root_window_->SetVisible(true); |
frame_generator_ = base::MakeUnique<FrameGenerator>( |
- delegate_.get(), root_window_.get(), std::move(compositor_frame_sink)); |
+ root_window_.get(), std::move(compositor_frame_sink)); |
}; |
int NumberOfFramesReceived() { |
@@ -171,14 +173,17 @@ class FrameGeneratorTest : public testing::Test { |
FrameGenerator* frame_generator() { return frame_generator_.get(); } |
- const cc::CompositorFrameMetadata& LastMetadata() { |
+ const cc::CompositorFrameMetadata& LastMetadata() const { |
return compositor_frame_sink_->last_metadata(); |
} |
+ const cc::RenderPassList& LastRenderPassList() const { |
+ return compositor_frame_sink_->last_render_pass_list(); |
+ } |
+ |
private: |
FakeCompositorFrameSink* compositor_frame_sink_ = nullptr; |
std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_; |
- std::unique_ptr<TestFrameGeneratorDelegate> delegate_; |
std::unique_ptr<TestServerWindowDelegate> server_window_delegate_; |
std::unique_ptr<ServerWindow> root_window_; |
std::unique_ptr<FrameGenerator> frame_generator_; |
@@ -253,6 +258,30 @@ TEST_F(FrameGeneratorTest, SetDeviceScaleFactor) { |
EXPECT_EQ(kArbitraryScaleFactor, second_last_metadata.device_scale_factor); |
} |
+TEST_F(FrameGeneratorTest, SetHighContrastMode) { |
+ // FrameGenerator requires a valid SurfaceInfo before generating |
+ // CompositorFrames. |
+ const cc::SurfaceId kArbitrarySurfaceId( |
+ cc::FrameSinkId(1, 1), |
+ cc::LocalSurfaceId(1, base::UnguessableToken::Create())); |
+ const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f, |
+ gfx::Size(100, 100)); |
+ frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo); |
+ IssueBeginFrame(); |
+ EXPECT_EQ(1, NumberOfFramesReceived()); |
+ |
+ // Changing high contrast mode should trigger a BeginFrame. |
+ frame_generator()->SetHighContrastMode(true); |
+ IssueBeginFrame(); |
+ EXPECT_EQ(2, NumberOfFramesReceived()); |
+ |
+ // Verify that the last frame has an invert filter. |
+ const cc::RenderPassList& render_pass_list = LastRenderPassList(); |
+ const cc::FilterOperations expected_filters( |
+ {cc::FilterOperation::CreateInvertFilter(1.f)}); |
+ EXPECT_EQ(expected_filters, render_pass_list.front()->filters); |
+} |
+ |
} // namespace test |
} // namespace ws |
} // namespace ui |