@@ -238,17 +238,57 @@ class MockSession : public fuchsia::ui::scenic::testing::Session_TestBase {
238238 fuchsia::ui::scenic::SessionListenerPtr listener_;
239239};
240240
241- class MockSessionWrapper : public flutter ::SessionWrapper {
241+ class MockSurfaceProducerSurface
242+ : public SceneUpdateContext::SurfaceProducerSurface {
242243 public:
243- MockSessionWrapper (fuchsia::ui::scenic::SessionPtr session_ptr)
244- : session_(std::move(session_ptr)) {}
245- ~MockSessionWrapper () override = default ;
244+ MockSurfaceProducerSurface (scenic::Session* session, const SkISize& size)
245+ : image_(session, 0 , 0 , {}), size_(size) {}
246246
247- scenic::Session* get () override { return &session_; }
248- void Present () override { session_.Flush (); }
247+ size_t AdvanceAndGetAge () override { return 0 ; }
248+
249+ bool FlushSessionAcquireAndReleaseEvents () override { return false ; }
250+
251+ bool IsValid () const override { return false ; }
252+
253+ SkISize GetSize () const override { return size_; }
254+
255+ void SignalWritesFinished (
256+ const std::function<void (void )>& on_writes_committed) override {}
257+
258+ scenic::Image* GetImage () override { return &image_; };
259+
260+ sk_sp<SkSurface> GetSkiaSurface () const override { return nullptr ; };
249261
250262 private:
251- scenic::Session session_;
263+ scenic::Image image_;
264+ SkISize size_;
265+ };
266+
267+ class MockSurfaceProducer : public SceneUpdateContext ::SurfaceProducer {
268+ public:
269+ MockSurfaceProducer (scenic::Session* session) : session_(session) {}
270+ std::unique_ptr<SceneUpdateContext::SurfaceProducerSurface> ProduceSurface (
271+ const SkISize& size,
272+ const LayerRasterCacheKey& layer_key,
273+ std::unique_ptr<scenic::EntityNode> entity_node) override {
274+ return std::make_unique<MockSurfaceProducerSurface>(session_, size);
275+ }
276+
277+ // Query a retained entity node (owned by a retained surface) for retained
278+ // rendering.
279+ bool HasRetainedNode (const LayerRasterCacheKey& key) const override {
280+ return false ;
281+ }
282+
283+ scenic::EntityNode* GetRetainedNode (const LayerRasterCacheKey& key) override {
284+ return nullptr ;
285+ }
286+
287+ void SubmitSurface (std::unique_ptr<SceneUpdateContext::SurfaceProducerSurface>
288+ surface) override {}
289+
290+ private:
291+ scenic::Session* session_;
252292};
253293
254294struct TestContext {
@@ -257,11 +297,12 @@ struct TestContext {
257297 fml::RefPtr<fml::TaskRunner> task_runner;
258298
259299 // Session.
260- fidl::InterfaceRequest<fuchsia::ui::scenic::SessionListener> listener_request;
261300 MockSession mock_session;
262- std::unique_ptr<MockSessionWrapper> mock_session_wrapper;
301+ fidl::InterfaceRequest<fuchsia::ui::scenic::SessionListener> listener_request;
302+ std::unique_ptr<scenic::Session> session;
263303
264304 // SceneUpdateContext.
305+ std::unique_ptr<MockSurfaceProducer> mock_surface_producer;
265306 std::unique_ptr<SceneUpdateContext> scene_update_context;
266307
267308 // PrerollContext.
@@ -283,13 +324,15 @@ std::unique_ptr<TestContext> InitTest() {
283324 fuchsia::ui::scenic::SessionListenerPtr listener;
284325 context->listener_request = listener.NewRequest ();
285326 context->mock_session .Bind (session_ptr.NewRequest (), std::move (listener));
286- context->mock_session_wrapper =
287- std::make_unique<MockSessionWrapper>(std::move (session_ptr));
327+ context->session = std::make_unique<scenic::Session>(std::move (session_ptr));
288328
289329 // Init SceneUpdateContext.
330+ context->mock_surface_producer =
331+ std::make_unique<MockSurfaceProducer>(context->session .get ());
290332 context->scene_update_context = std::make_unique<SceneUpdateContext>(
291- " fuchsia_layer_unittest" , fuchsia::ui::views::ViewToken (),
292- scenic::ViewRefPair::New (), *(context->mock_session_wrapper ));
333+ context->session .get (), context->mock_surface_producer .get ());
334+ context->scene_update_context ->set_metrics (
335+ fidl::MakeOptional (fuchsia::ui::gfx::Metrics{1 .f , 1 .f , 1 .f }));
293336
294337 // Init PrerollContext.
295338 context->preroll_context = std::unique_ptr<PrerollContext>(new PrerollContext{
@@ -305,6 +348,7 @@ std::unique_ptr<TestContext> InitTest() {
305348 context->unused_texture_registry , // texture registry (not
306349 // supported)
307350 false , // checkerboard_offscreen_layers
351+ 100 .f , // maximum depth allowed for rendering
308352 1 .f // ratio between logical and physical
309353 });
310354
@@ -558,7 +602,7 @@ TEST_F(FuchsiaLayerTest, DISABLED_PhysicalShapeLayersAndChildSceneLayers) {
558602 // against the list above.
559603 root->UpdateScene (*(test_context->scene_update_context ));
560604
561- test_context->mock_session_wrapper -> Present ();
605+ test_context->session -> Flush ();
562606
563607 // Run loop until idle, so that the Session receives and processes
564608 // its method calls.
@@ -740,7 +784,7 @@ TEST_F(FuchsiaLayerTest, DISABLED_OpacityAndTransformLayer) {
740784 // commands against the list above.
741785 root->UpdateScene (*(test_context->scene_update_context ));
742786
743- test_context->mock_session_wrapper -> Present ();
787+ test_context->session -> Flush ();
744788
745789 // Run loop until idle, so that the Session receives and processes
746790 // its method calls.
0 commit comments