|  | // Copyright 2013 The Flutter Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #define FML_USED_ON_EMBEDDER | 
|  |  | 
|  | #include "flutter/flow/surface_frame.h" | 
|  | #include "flutter/testing/testing.h" | 
|  |  | 
|  | namespace flutter { | 
|  |  | 
|  | TEST(FlowTest, SurfaceFrameDoesNotSubmitInDtor) { | 
|  | SurfaceFrame::FramebufferInfo framebuffer_info; | 
|  | auto callback = [](const SurfaceFrame&, DlCanvas*) { | 
|  | EXPECT_FALSE(true); | 
|  | return true; | 
|  | }; | 
|  | auto surface_frame = std::make_unique<SurfaceFrame>( | 
|  | /*surface=*/nullptr, | 
|  | /*framebuffer_info=*/framebuffer_info, | 
|  | /*submit_callback=*/callback, | 
|  | /*frame_size=*/SkISize::Make(800, 600)); | 
|  | surface_frame.reset(); | 
|  | } | 
|  |  | 
|  | TEST(FlowTest, SurfaceFrameDoesNotHaveEmptyCanvas) { | 
|  | SurfaceFrame::FramebufferInfo framebuffer_info; | 
|  | auto callback = [](const SurfaceFrame&, DlCanvas*) { return true; }; | 
|  | SurfaceFrame frame( | 
|  | /*surface=*/nullptr, | 
|  | /*framebuffer_info=*/framebuffer_info, | 
|  | /*submit_callback=*/callback, | 
|  | /*frame_size=*/SkISize::Make(800, 600), | 
|  | /*context_result=*/nullptr, | 
|  | /*display_list_fallback=*/true); | 
|  |  | 
|  | EXPECT_FALSE(frame.Canvas()->GetLocalClipBounds().isEmpty()); | 
|  | EXPECT_FALSE(frame.Canvas()->QuickReject(SkRect::MakeLTRB(10, 10, 50, 50))); | 
|  | } | 
|  |  | 
|  | TEST(FlowTest, SurfaceFrameDoesNotPrepareRtree) { | 
|  | SurfaceFrame::FramebufferInfo framebuffer_info; | 
|  | auto callback = [](const SurfaceFrame&, DlCanvas*) { return true; }; | 
|  | auto surface_frame = std::make_unique<SurfaceFrame>( | 
|  | /*surface=*/nullptr, | 
|  | /*framebuffer_info=*/framebuffer_info, | 
|  | /*submit_callback=*/callback, | 
|  | /*frame_size=*/SkISize::Make(800, 600), | 
|  | /*context_result=*/nullptr, | 
|  | /*display_list_fallback=*/true); | 
|  | surface_frame->Canvas()->DrawRect(SkRect::MakeWH(100, 100), DlPaint()); | 
|  | EXPECT_FALSE(surface_frame->BuildDisplayList()->has_rtree()); | 
|  | } | 
|  |  | 
|  | }  // namespace flutter |