From 53af9707345f5d30e1b65d230d1aac1cdb5f4a40 Mon Sep 17 00:00:00 2001 From: Josh Gargus <jjosh@google.com> Date: Sat, 27 Apr 2019 00:10:32 +0000 Subject: [PATCH] [scenic] Remove hit-testing APIs from Scenic session. These were only used by ViewManager, which is no longer used. SCN-1318 #comment Change-Id: Ie9778af954992b9bef96079cdc67281d4da3c1e5 --- garnet/lib/ui/gfx/engine/session.cc | 54 ---- garnet/lib/ui/gfx/engine/session.h | 10 - garnet/lib/ui/gfx/engine/session_handler.cc | 15 - garnet/lib/ui/gfx/engine/session_handler.h | 11 - garnet/lib/ui/gfx/tests/BUILD.gn | 1 - garnet/lib/ui/gfx/tests/hittest_unittest.cc | 301 ------------------ garnet/lib/ui/scenic/command_dispatcher.h | 10 - garnet/lib/ui/scenic/session.cc | 26 -- garnet/lib/ui/scenic/session.h | 12 - .../fuchsia.ui.scenic/fuchsia.ui.scenic.api | 2 +- sdk/fidl/fuchsia.ui.scenic/session.fidl | 7 - sdk/lib/ui/scenic/cpp/scenic_cpp.api | 2 +- sdk/lib/ui/scenic/cpp/session.cc | 35 -- sdk/lib/ui/scenic/cpp/session.h | 14 - .../mediaplayer/test/fakes/fake_session.cc | 14 - .../mediaplayer/test/fakes/fake_session.h | 8 - 16 files changed, 2 insertions(+), 520 deletions(-) delete mode 100644 garnet/lib/ui/gfx/tests/hittest_unittest.cc diff --git a/garnet/lib/ui/gfx/engine/session.cc b/garnet/lib/ui/gfx/engine/session.cc index 2d36d4d7920..525631594f1 100644 --- a/garnet/lib/ui/gfx/engine/session.cc +++ b/garnet/lib/ui/gfx/engine/session.cc @@ -35,23 +35,6 @@ namespace { #define SESSION_TRACE_ID(session_id, count) \ (((uint64_t)(session_id) << 32) | (count)) -// Converts the provided vector of Hits into a fidl array of HitPtrs. -fidl::VectorPtr<::fuchsia::ui::gfx::Hit> WrapHits( - const std::vector<Hit>& hits) { - fidl::VectorPtr<::fuchsia::ui::gfx::Hit> wrapped_hits; - wrapped_hits.resize(hits.size()); - for (size_t i = 0; i < hits.size(); ++i) { - const Hit& hit = hits[i]; - fuchsia::ui::gfx::Hit wrapped_hit; - wrapped_hit.tag_value = hit.tag_value; - wrapped_hit.ray_origin = Wrap(hit.ray.origin); - wrapped_hit.ray_direction = Wrap(hit.ray.direction); - wrapped_hit.inverse_transform = Wrap(hit.inverse_transform); - wrapped_hit.distance = hit.distance; - wrapped_hits->at(i) = std::move(wrapped_hit); - } - return wrapped_hits; -} } // anonymous namespace Session::Session(SessionId id, SessionContext session_context, @@ -331,42 +314,5 @@ bool Session::ApplyUpdate(CommandContext* command_context, // consumed by the FrameScheduler. } -void Session::HitTest(uint32_t node_id, fuchsia::ui::gfx::vec3 ray_origin, - fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback) { - if (auto node = resources_.FindResource<Node>(node_id)) { - SessionHitTester hit_tester(node->session()); - std::vector<Hit> hits = hit_tester.HitTest( - node.get(), escher::ray4{escher::vec4(Unwrap(ray_origin), 1.f), - escher::vec4(Unwrap(ray_direction), 0.f)}); - callback(WrapHits(hits)); - } else { - // TODO(SCN-162): Currently the test fails if the node isn't presented yet. - // Perhaps we should given clients more control over which state of - // the scene graph will be consulted for hit testing purposes. - error_reporter_->WARN() - << "Cannot perform hit test because node " << node_id - << " does not exist in the currently presented content."; - callback(nullptr); - } -} - -void Session::HitTestDeviceRay( - fuchsia::ui::gfx::vec3 ray_origin, fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback) { - escher::ray4 ray = - escher::ray4{{Unwrap(ray_origin), 1.f}, {Unwrap(ray_direction), 0.f}}; - - // The layer stack expects the input to the hit test to be in unscaled device - // coordinates. - SessionHitTester hit_tester(this); - // TODO(SCN-1170): get rid of SceneGraph::first_compositor(). - std::vector<Hit> layer_stack_hits = - session_context_.scene_graph->first_compositor()->layer_stack()->HitTest( - ray, &hit_tester); - - callback(WrapHits(layer_stack_hits)); -} - } // namespace gfx } // namespace scenic_impl diff --git a/garnet/lib/ui/gfx/engine/session.h b/garnet/lib/ui/gfx/engine/session.h index b726fdba8e1..b480dd2d85a 100644 --- a/garnet/lib/ui/gfx/engine/session.h +++ b/garnet/lib/ui/gfx/engine/session.h @@ -120,16 +120,6 @@ class Session { void EnqueueEvent(::fuchsia::ui::gfx::Event event); void EnqueueEvent(::fuchsia::ui::input::InputEvent event); - // Called by SessionHandler::HitTest(). - void HitTest(uint32_t node_id, fuchsia::ui::gfx::vec3 ray_origin, - fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback); - - // Called by SessionHandler::HitTestDeviceRay(). - void HitTestDeviceRay(::fuchsia::ui::gfx::vec3 ray_origin, - fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback); - void SetDebugName(const std::string& debug_name) { debug_name_ = debug_name; } private: diff --git a/garnet/lib/ui/gfx/engine/session_handler.cc b/garnet/lib/ui/gfx/engine/session_handler.cc index 4661dbf8aaa..37234e09d14 100644 --- a/garnet/lib/ui/gfx/engine/session_handler.cc +++ b/garnet/lib/ui/gfx/engine/session_handler.cc @@ -38,21 +38,6 @@ void SessionHandler::Present( } } -void SessionHandler::HitTest( - uint32_t node_id, fuchsia::ui::gfx::vec3 ray_origin, - fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback) { - session_->HitTest(node_id, std::move(ray_origin), std::move(ray_direction), - std::move(callback)); -} - -void SessionHandler::HitTestDeviceRay( - fuchsia::ui::gfx::vec3 ray_origin, fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestDeviceRayCallback callback) { - session_->HitTestDeviceRay(std::move(ray_origin), std::move(ray_direction), - std::move(callback)); -} - void SessionHandler::DispatchCommand(fuchsia::ui::scenic::Command command) { FXL_DCHECK(command.Which() == fuchsia::ui::scenic::Command::Tag::kGfx); buffered_commands_.emplace_back(std::move(command.gfx())); diff --git a/garnet/lib/ui/gfx/engine/session_handler.h b/garnet/lib/ui/gfx/engine/session_handler.h index 560a7ab7f73..47bc5dc3899 100644 --- a/garnet/lib/ui/gfx/engine/session_handler.h +++ b/garnet/lib/ui/gfx/engine/session_handler.h @@ -47,17 +47,6 @@ class SessionHandler : public TempSessionDelegate { ::std::vector<zx::event> release_fences, fuchsia::ui::scenic::Session::PresentCallback callback) override; - // |fuchsia::ui::scenic::Session / scenic::TempSessionDelegate| - void HitTest(uint32_t node_id, ::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback) override; - - // |fuchsia::ui::scenic::Session / scenic::TempSessionDelegate| - void HitTestDeviceRay( - ::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback) override; - // |fuchsia::ui::scenic::Session / scenic::TempSessionDelegate| void SetDebugName(const std::string& debug_name) override { session_->SetDebugName(debug_name); diff --git a/garnet/lib/ui/gfx/tests/BUILD.gn b/garnet/lib/ui/gfx/tests/BUILD.gn index 8a756985cf4..e4138d3d561 100644 --- a/garnet/lib/ui/gfx/tests/BUILD.gn +++ b/garnet/lib/ui/gfx/tests/BUILD.gn @@ -82,7 +82,6 @@ executable("unittests") { "gfx_command_applier_unittest.cc", "hardware_layer_assignment_unittest.cc", "hittest_global_unittest.cc", - "hittest_unittest.cc", "image_pipe_unittest.cc", "import_unittest.cc", "memory_unittest.cc", diff --git a/garnet/lib/ui/gfx/tests/hittest_unittest.cc b/garnet/lib/ui/gfx/tests/hittest_unittest.cc deleted file mode 100644 index e886e8a8402..00000000000 --- a/garnet/lib/ui/gfx/tests/hittest_unittest.cc +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright 2017 The Fuchsia Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include <math.h> - -#include "garnet/lib/ui/gfx/tests/session_test.h" -#include "garnet/lib/ui/gfx/util/unwrap.h" -#include "lib/ui/scenic/cpp/commands.h" - -#include "gtest/gtest.h" - -namespace scenic_impl { -namespace gfx { -namespace test { -namespace { -using vec3 = escher::vec3; - -constexpr vec3 kDownVector{0.f, 0.f, 1.f}; -constexpr vec3 kUpVector{0.f, 0.f, -1.f}; -} // namespace - -/* - * We assume that the various ray-intersection tests for each shape - * have been covered by other unit tests. So for ease of testing, - * we only use rectangles and most use simple downward pointing rays. - * - * To make things even easier, the rectangles are all 8x8. - * The number indicated is the tag id. - * - * +------+ +------+ - * | | | | #10 corners: (0, 0, 2) .. (8, 8, 2) - * | 10 +--+ 30 | #20 corners: (5, 5, 1) .. (13, 13, 1) - * | | | | #30 corners: (10, 0, 1) .. (18, 8, 1) - * +----+-+20+-+----+ - * | | - * +------+ - * - * These rectangles are arranged such that their front-to-back drawing - * order is #30, #20, #10 which forces a tie-break for distance sorting - * at the intersections of #20 and #30. - * - * The node tree looks like this: - * @1: entity node - * + @2: entity node, tag #100 - * + @3: entity node, tag #25, translate x+4, y+4 - * + @4: shape node, tag #10, translate z+2 - * + @5: entity node, tag #20, translate x+5, y+5, z+1 - * + @6: shape node - * + @7: entity node, tag #35, translate x+10, z+1 - * + @8: shape node, tag #30, translate x+4, y+4 - * + @9: entity node, tag #1 - * - * The 8x8 square used for testing has shape id 20. - */ - -class HitTestTest : public SessionTest { - public: - void SetUp() override { - SessionTest::SetUp(); - - Apply(scenic::NewCreateRectangleCmd(20, 8.f, 8.f)); - - Apply(scenic::NewCreateEntityNodeCmd(1)); - - Apply(scenic::NewCreateEntityNodeCmd(2)); - Apply(scenic::NewSetTagCmd(2, 100)); - Apply(scenic::NewAddChildCmd(1, 2)); - - Apply(scenic::NewCreateEntityNodeCmd(3)); - Apply(scenic::NewSetTagCmd(3, 25)); - Apply(scenic::NewSetTranslationCmd(3, (float[3]){4.f, 4.f, 0.f})); - Apply(scenic::NewAddChildCmd(2, 3)); - - Apply(scenic::NewCreateShapeNodeCmd(4)); - Apply(scenic::NewSetTagCmd(4, 10)); - Apply(scenic::NewSetShapeCmd(4, 20)); - Apply(scenic::NewSetTranslationCmd(4, (float[3]){0.f, 0.f, -2.f})); - Apply(scenic::NewAddChildCmd(3, 4)); - - Apply(scenic::NewCreateEntityNodeCmd(5)); - Apply(scenic::NewSetTagCmd(5, 20)); - Apply(scenic::NewSetTranslationCmd(5, (float[3]){5.f, 5.f, -1.f})); - Apply(scenic::NewAddChildCmd(3, 5)); - - Apply(scenic::NewCreateShapeNodeCmd(6)); - Apply(scenic::NewSetShapeCmd(6, 20)); - Apply(scenic::NewAddChildCmd(5, 6)); - - Apply(scenic::NewCreateEntityNodeCmd(7)); - Apply(scenic::NewSetTagCmd(7, 35)); - Apply(scenic::NewSetTranslationCmd(7, (float[3]){10.f, 0.f, -1.f})); - Apply(scenic::NewAddChildCmd(2, 7)); - - Apply(scenic::NewCreateShapeNodeCmd(8)); - Apply(scenic::NewSetTagCmd(8, 30)); - Apply(scenic::NewSetShapeCmd(8, 20)); - Apply(scenic::NewSetTranslationCmd(8, (float[3]){4.f, 4.f, 0.f})); - Apply(scenic::NewAddChildCmd(7, 8)); - - Apply(scenic::NewCreateEntityNodeCmd(9)); - Apply(scenic::NewSetTagCmd(9, 1)); - Apply(scenic::NewAddChildCmd(1, 9)); - } - - protected: - struct ExpectedHit { - uint32_t tag; - float tx; // inverse transform translation components - float ty; - float tz; - float d; // distance - }; - - void ExpectHits(uint32_t node_id, const vec3& ray_origin, - const vec3& ray_direction, - std::vector<ExpectedHit> expected_hits, - bool expected_null = false) { - ::fuchsia::ui::gfx::vec3 wrapped_ray_origin; - wrapped_ray_origin.x = ray_origin.x; - wrapped_ray_origin.y = ray_origin.y; - wrapped_ray_origin.z = ray_origin.z; - - ::fuchsia::ui::gfx::vec3 wrapped_ray_direction; - wrapped_ray_direction.x = ray_direction.x; - wrapped_ray_direction.y = ray_direction.y; - wrapped_ray_direction.z = ray_direction.z; - - fidl::VectorPtr<::fuchsia::ui::gfx::Hit> actual_hits; - session_->HitTest( - node_id, wrapped_ray_origin, wrapped_ray_direction, - [&actual_hits](fidl::VectorPtr<::fuchsia::ui::gfx::Hit> hits) { - actual_hits = std::move(hits); - }); - - EXPECT_EQ(expected_null, actual_hits.is_null()); - EXPECT_EQ(expected_hits.size(), actual_hits->size()); - for (uint32_t i = 0; - i < std::min(expected_hits.size(), actual_hits->size()); i++) { - EXPECT_EQ(expected_hits[i].tag, actual_hits->at(i).tag_value) - << "i=" << i; - const auto& m = actual_hits->at(i).inverse_transform.matrix; - EXPECT_EQ(1.f, m[0]) << "i=" << i; - EXPECT_EQ(0.f, m[1]) << "i=" << i; - EXPECT_EQ(0.f, m[2]) << "i=" << i; - EXPECT_EQ(0.f, m[3]) << "i=" << i; - EXPECT_EQ(0.f, m[4]) << "i=" << i; - EXPECT_EQ(1.f, m[5]) << "i=" << i; - EXPECT_EQ(0.f, m[6]) << "i=" << i; - EXPECT_EQ(0.f, m[7]) << "i=" << i; - EXPECT_EQ(0.f, m[8]) << "i=" << i; - EXPECT_EQ(0.f, m[9]) << "i=" << i; - EXPECT_EQ(1.f, m[10]) << "i=" << i; - EXPECT_EQ(0.f, m[11]) << "i=" << i; - EXPECT_EQ(expected_hits[i].tx, m[12]) << "i=" << i; - EXPECT_EQ(expected_hits[i].ty, m[13]) << "i=" << i; - EXPECT_EQ(expected_hits[i].tz, m[14]) << "i=" << i; - EXPECT_EQ(1.f, m[15]) << "i=" << i; - EXPECT_EQ(expected_hits[i].d, actual_hits->at(i).distance) << "i=" << i; - } - } -}; - -TEST_F(HitTestTest, InvalidNodeId) { - ExpectHits(0, vec3(0.f, 0.f, 0.f), kDownVector, {}, true); -} - -TEST_F(HitTestTest, RayBelowScenePointingDown) { - ExpectHits(1, vec3(0.f, 0.f, 10.f), kDownVector, {}); -} - -TEST_F(HitTestTest, RayBelowScenePointingUp) { - ExpectHits(1, vec3(0.f, 0.f, 10.f), kUpVector, {}); -} - -TEST_F(HitTestTest, RayAboveScenePointingUp) { - ExpectHits(1, vec3(0.f, 0.f, -10.f), kUpVector, {}); -} - -TEST_F(HitTestTest, Hit10InTopLeftCornerFromNode1) { - ExpectHits(1, vec3(0.f, 0.f, -10.f), kDownVector, - {{.tag = 10, .tx = -4.f, .ty = -4.f, .tz = 2.f, .d = 8.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 8.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 8.f}}); -} - -TEST_F(HitTestTest, Hit10InTopLeftCornerFromNode2) { - ExpectHits(2, vec3(0.f, 0.f, -10.f), kDownVector, - {{.tag = 10, .tx = -4.f, .ty = -4.f, .tz = 2.f, .d = 8.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 8.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 8.f}}); -} - -TEST_F(HitTestTest, Hit10InTopLeftCornerFromNode3) { - ExpectHits(3, vec3(-4.f, -4.f, -10.f), kDownVector, - {{.tag = 10, .tx = 0.f, .ty = 0.f, .tz = 2.f, .d = 8.f}, - {.tag = 25, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 8.f}}); -} - -TEST_F(HitTestTest, Hit10InTopLeftCornerFromNode4) { - ExpectHits(4, vec3(-4.f, -4.f, -10.f), kDownVector, - {{.tag = 10, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 10.f}}); -} - -TEST_F(HitTestTest, Hit20InMiddleFromNode1) { - ExpectHits(1, vec3(9.f, 9.f, -10.f), kDownVector, - {{.tag = 20, .tx = -9.f, .ty = -9.f, .tz = 1.f, .d = 9.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 9.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 9.f}}); -} - -TEST_F(HitTestTest, Hit20InMiddleFromNode2) { - ExpectHits(2, vec3(9.f, 9.f, -10.f), kDownVector, - {{.tag = 20, .tx = -9.f, .ty = -9.f, .tz = 1.f, .d = 9.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 9.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 9.f}}); -} - -TEST_F(HitTestTest, Hit20InMiddleFromNode3) { - ExpectHits(3, vec3(5.f, 5.f, -10.f), kDownVector, - {{.tag = 20, .tx = -5.f, .ty = -5.f, .tz = 1.f, .d = 9.f}, - {.tag = 25, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 9.f}}); -} - -TEST_F(HitTestTest, Hit20InMiddleFromNode5) { - ExpectHits(5, vec3(0.f, 0.f, -10.f), kDownVector, - {{.tag = 20, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 10.f}}); -} - -TEST_F(HitTestTest, Hit20InMiddleFromNode6) { - ExpectHits(6, vec3(0.f, 0.f, -10.f), kDownVector, {}); -} - -TEST_F(HitTestTest, HitBoth10And20FromNode1) { - // 10 is nearer so it comes before 20 - ExpectHits(1, vec3(6.f, 6.f, -10.f), kDownVector, - {{.tag = 10, .tx = -4.f, .ty = -4.f, .tz = 2.f, .d = 8.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 8.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 8.f}, - {.tag = 20, .tx = -9.f, .ty = -9.f, .tz = 1.f, .d = 9.f}}); -} - -TEST_F(HitTestTest, HitBoth20And30FromNode1) { - // 20 and 30 are same distance but 30 is closer in draw order so it - // comes before 20 - ExpectHits(1, vec3(12.f, 6.f, -10.f), kDownVector, - {{.tag = 30, .tx = -14.f, .ty = -4.f, .tz = 1.f, .d = 9.f}, - {.tag = 35, .tx = -10.f, .ty = 0.f, .tz = 1.f, .d = 9.f}, - {.tag = 20, .tx = -9.f, .ty = -9.f, .tz = 1.f, .d = 9.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 9.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 9.f}}); -} - -TEST_F(HitTestTest, SuppressNode25FromNode1) { - Apply(scenic::NewSetHitTestBehaviorCmd( - 3, ::fuchsia::ui::gfx::HitTestBehavior::kSuppress)); - - // While we would have hit 20 and 25, we suppressed node 3 so neither appears. - ExpectHits(1, vec3(12.f, 6.f, -10.f), kDownVector, - {{.tag = 30, .tx = -14.f, .ty = -4.f, .tz = 1.f, .d = 9.f}, - {.tag = 35, .tx = -10.f, .ty = 0.f, .tz = 1.f, .d = 9.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 9.f}}); -} - -TEST_F(HitTestTest, Clipping) { - // Try to hit 10 from the top left corner, with clipping applied - // to a rectangle added as a part in 25, which contains 10. - // We move this part around and turn clipping on and off to see what happens - // when the clip is intersected or not. - Apply(scenic::NewCreateEntityNodeCmd(11)); - Apply(scenic::NewAddPartCmd(3, 11)); - Apply(scenic::NewCreateShapeNodeCmd(12)); - Apply(scenic::NewSetShapeCmd(12, 20)); - Apply(scenic::NewAddChildCmd(11, 12)); - - // Initially, position the clip shape someplace far away from the content. - // This causes 10 to be outside of its containing clip region. - Apply(scenic::NewSetTranslationCmd(11, (float[3]){20.f, 20.f, 0.f})); - Apply(scenic::NewSetClipCmd(3, 0, true)); - ExpectHits(1, vec3(0.f, 0.f, 10.f), kDownVector, {}); - - // Now disable clipping and try again. - Apply(scenic::NewSetClipCmd(3, 0, false)); - ExpectHits(1, vec3(0.f, 0.f, -10.f), kDownVector, - {{.tag = 10, .tx = -4.f, .ty = -4.f, .tz = 2.f, .d = 8.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 8.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 8.f}}); - - // Move the clip shape so it covers the part of 10 that we're hitting - // and reenable clipping. - Apply(scenic::NewSetTranslationCmd(11, (float[3]){-4.f, -4.f, 0.f})); - Apply(scenic::NewSetClipCmd(3, 0, true)); - ExpectHits(1, vec3(0.f, 0.f, -10.f), kDownVector, - {{.tag = 10, .tx = -4.f, .ty = -4.f, .tz = 2.f, .d = 8.f}, - {.tag = 25, .tx = -4.f, .ty = -4.f, .tz = 0.f, .d = 8.f}, - {.tag = 100, .tx = 0.f, .ty = 0.f, .tz = 0.f, .d = 8.f}}); -} - -} // namespace test -} // namespace gfx -} // namespace scenic_impl diff --git a/garnet/lib/ui/scenic/command_dispatcher.h b/garnet/lib/ui/scenic/command_dispatcher.h index 55c71f18e71..f612c7f37bb 100644 --- a/garnet/lib/ui/scenic/command_dispatcher.h +++ b/garnet/lib/ui/scenic/command_dispatcher.h @@ -69,16 +69,6 @@ class TempSessionDelegate : public CommandDispatcher { ::std::vector<zx::event> release_fences, fuchsia::ui::scenic::Session::PresentCallback callback) = 0; - virtual void HitTest( - uint32_t node_id, ::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback) = 0; - - virtual void HitTestDeviceRay( - ::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - fuchsia::ui::scenic::Session::HitTestCallback callback) = 0; - virtual void SetDebugName(const std::string& debug_name) = 0; private: diff --git a/garnet/lib/ui/scenic/session.cc b/garnet/lib/ui/scenic/session.cc index 9ad82634877..47c60e05af9 100644 --- a/garnet/lib/ui/scenic/session.cc +++ b/garnet/lib/ui/scenic/session.cc @@ -63,21 +63,6 @@ void Session::SetCommandDispatchers( } } -void Session::HitTest(uint32_t node_id, ::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - HitTestCallback callback) { - // TODO(SCN-1265): Come up with a better solution to avoid children - // calling into us during destruction. - if (!valid_) - return; - auto& dispatcher = dispatchers_[System::TypeId::kGfx]; - FXL_DCHECK(dispatcher); - TempSessionDelegate* delegate = - static_cast<TempSessionDelegate*>(dispatcher.get()); - delegate->HitTest(node_id, std::move(ray_origin), std::move(ray_direction), - std::move(callback)); -} - void Session::SetDebugName(std::string debug_name) { // TODO(SCN-1265): Come up with a better solution to avoid children // calling into us during destruction. @@ -90,17 +75,6 @@ void Session::SetDebugName(std::string debug_name) { delegate->SetDebugName(debug_name); } -void Session::HitTestDeviceRay(::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - HitTestCallback callback) { - auto& dispatcher = dispatchers_[System::TypeId::kGfx]; - FXL_DCHECK(dispatcher); - TempSessionDelegate* delegate = - reinterpret_cast<TempSessionDelegate*>(dispatcher.get()); - delegate->HitTestDeviceRay(std::move(ray_origin), std::move(ray_direction), - std::move(callback)); -} - void Session::PostFlushTask() { // If this is the first EnqueueEvent() since the last FlushEvent(), post a // task to ensure that FlushEvents() is called. diff --git a/garnet/lib/ui/scenic/session.h b/garnet/lib/ui/scenic/session.h index b7c47ecacf1..e9b377cb492 100644 --- a/garnet/lib/ui/scenic/session.h +++ b/garnet/lib/ui/scenic/session.h @@ -49,18 +49,6 @@ class Session final : public fuchsia::ui::scenic::Session, ::std::vector<zx::event> release_fences, PresentCallback callback) override; - // |fuchsia::ui::scenic::Session| - // TODO(SCN-422): Remove this after it's removed from session.fidl. - void HitTest(uint32_t node_id, ::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - HitTestCallback callback) override; - - // |fuchsia::ui::scenic::Session| - // TODO(SCN-422): Remove this after it's removed from session.fidl. - void HitTestDeviceRay(::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - HitTestCallback callback) override; - // |fuchsia::ui::scenic::Session| void SetDebugName(std::string debug_name) override; diff --git a/sdk/fidl/fuchsia.ui.scenic/fuchsia.ui.scenic.api b/sdk/fidl/fuchsia.ui.scenic/fuchsia.ui.scenic.api index edfb01e7153..d49a88603fb 100644 --- a/sdk/fidl/fuchsia.ui.scenic/fuchsia.ui.scenic.api +++ b/sdk/fidl/fuchsia.ui.scenic/fuchsia.ui.scenic.api @@ -2,5 +2,5 @@ "fidl/fuchsia.ui.scenic/commands.fidl": "6710eee1f3c859bdeb5fd4279bbdd48f", "fidl/fuchsia.ui.scenic/events.fidl": "0b2de80e3dfc14c02961196c6827f0d2", "fidl/fuchsia.ui.scenic/scenic.fidl": "a02fbcb8be1b00d385c9bebb1c3c43ee", - "fidl/fuchsia.ui.scenic/session.fidl": "e51c510b1327b1504063a8d98a08f832" + "fidl/fuchsia.ui.scenic/session.fidl": "8b639668afb95f72ea20abc0c2f8bf41" } \ No newline at end of file diff --git a/sdk/fidl/fuchsia.ui.scenic/session.fidl b/sdk/fidl/fuchsia.ui.scenic/session.fidl index b20e4ad12f5..34494f677ec 100644 --- a/sdk/fidl/fuchsia.ui.scenic/session.fidl +++ b/sdk/fidl/fuchsia.ui.scenic/session.fidl @@ -127,13 +127,6 @@ protocol Session { vector<handle<event>> acquire_fences, vector<handle<event>> release_fences) -> (fuchsia.images.PresentationInfo presentation_info); - // TODO(SCN-422) Remove these methods from the FIDL; they should just be - // exposed to View Manager directly using a C++ interface. - HitTest(uint32 node_id, fuchsia.ui.gfx.vec3 ray_origin, fuchsia.ui.gfx.vec3 ray_direction) - -> (vector<fuchsia.ui.gfx.Hit>? hits); - HitTestDeviceRay(fuchsia.ui.gfx.vec3 ray_origin, fuchsia.ui.gfx.vec3 ray_direction) - -> (vector<fuchsia.ui.gfx.Hit>? hits); - // Set an optional debug name for the session. The debug name will be // output in things such as logging and trace events. SetDebugName(string debug_name); diff --git a/sdk/lib/ui/scenic/cpp/scenic_cpp.api b/sdk/lib/ui/scenic/cpp/scenic_cpp.api index 13777052c92..9da59da0248 100644 --- a/sdk/lib/ui/scenic/cpp/scenic_cpp.api +++ b/sdk/lib/ui/scenic/cpp/scenic_cpp.api @@ -3,7 +3,7 @@ "pkg/scenic_cpp/include/lib/ui/scenic/cpp/host_memory.h": "d9c14240ee79c58d60260a9d4c680681", "pkg/scenic_cpp/include/lib/ui/scenic/cpp/id.h": "4442d6e024bba018b7a8038d0a069713", "pkg/scenic_cpp/include/lib/ui/scenic/cpp/resources.h": "c34d6a22311f5f81e6d7c571f178049f", - "pkg/scenic_cpp/include/lib/ui/scenic/cpp/session.h": "3055e2a58ffb264559fe73e14774cf85", + "pkg/scenic_cpp/include/lib/ui/scenic/cpp/session.h": "379efdac3f9e986cd4da7b87fc944f41", "pkg/scenic_cpp/include/lib/ui/scenic/cpp/util/mesh_utils.h": "41dd823e1bd4cf48c560873547a689ea", "pkg/scenic_cpp/include/lib/ui/scenic/cpp/view_token_pair.h": "1d32d345d5e1746ada8a36d45b1ebf56" } \ No newline at end of file diff --git a/sdk/lib/ui/scenic/cpp/session.cc b/sdk/lib/ui/scenic/cpp/session.cc index 8e656f44a41..efb3a794ebe 100644 --- a/sdk/lib/ui/scenic/cpp/session.cc +++ b/sdk/lib/ui/scenic/cpp/session.cc @@ -109,41 +109,6 @@ void Session::Present(uint64_t presentation_time, PresentCallback callback) { std::move(release_fences_), std::move(callback)); } -void Session::HitTest(uint32_t node_id, const float ray_origin[3], - const float ray_direction[3], HitTestCallback callback) { - ZX_DEBUG_ASSERT(session_); - fuchsia::ui::gfx::vec3 ray_origin_vec; - ray_origin_vec.x = ray_origin[0]; - ray_origin_vec.y = ray_origin[1]; - ray_origin_vec.z = ray_origin[2]; - - fuchsia::ui::gfx::vec3 ray_direction_vec; - ray_direction_vec.x = ray_direction[0]; - ray_direction_vec.y = ray_direction[1]; - ray_direction_vec.z = ray_direction[2]; - - session_->HitTest(node_id, std::move(ray_origin_vec), - std::move(ray_direction_vec), std::move(callback)); -} - -void Session::HitTestDeviceRay( - const float ray_origin[3], const float ray_direction[3], - fuchsia::ui::scenic::Session::HitTestDeviceRayCallback callback) { - ZX_DEBUG_ASSERT(session_); - fuchsia::ui::gfx::vec3 ray_origin_vec; - ray_origin_vec.x = ray_origin[0]; - ray_origin_vec.y = ray_origin[1]; - ray_origin_vec.z = ray_origin[2]; - - fuchsia::ui::gfx::vec3 ray_direction_vec; - ray_direction_vec.x = ray_direction[0]; - ray_direction_vec.y = ray_direction[1]; - ray_direction_vec.z = ray_direction[2]; - - session_->HitTestDeviceRay(std::move(ray_origin_vec), - std::move(ray_direction_vec), std::move(callback)); -} - void Session::Unbind() { ZX_DEBUG_ASSERT(session_); ZX_DEBUG_ASSERT(!session_handle_); diff --git a/sdk/lib/ui/scenic/cpp/session.h b/sdk/lib/ui/scenic/cpp/session.h index 480a3c415d0..aa9c5a766ca 100644 --- a/sdk/lib/ui/scenic/cpp/session.h +++ b/sdk/lib/ui/scenic/cpp/session.h @@ -34,10 +34,6 @@ class Session : private fuchsia::ui::scenic::SessionListener { using PresentCallback = fit::function<void(fuchsia::images::PresentationInfo info)>; - // Provide information about hits. - using HitTestCallback = - fit::function<void(fidl::VectorPtr<fuchsia::ui::gfx::Hit> hits)>; - // Called when session events are received. using EventHandler = fit::function<void(std::vector<fuchsia::ui::scenic::Event>)>; @@ -106,16 +102,6 @@ class Session : private fuchsia::ui::scenic::SessionListener { // Invokes the callback when the scene manager applies the presentation. void Present(uint64_t presentation_time, PresentCallback callback); - // Performs a hit test along the specified ray. - void HitTest(uint32_t node_id, const float ray_origin[3], - const float ray_direction[3], HitTestCallback callback); - - // Performs a hit test along the specified ray into the engine's first - // compositor. - void HitTestDeviceRay( - const float ray_origin[3], const float ray_direction[3], - fuchsia::ui::scenic::Session::HitTestDeviceRayCallback callback); - // Unbinds the internal SessionPtr; this allows moving this across threads. void Unbind(); diff --git a/src/media/playback/mediaplayer/test/fakes/fake_session.cc b/src/media/playback/mediaplayer/test/fakes/fake_session.cc index 3bea449e962..2a2528393c6 100644 --- a/src/media/playback/mediaplayer/test/fakes/fake_session.cc +++ b/src/media/playback/mediaplayer/test/fakes/fake_session.cc @@ -137,20 +137,6 @@ void FakeSession::Present(uint64_t presentation_time, }); } -void FakeSession::HitTest(uint32_t node_id, ::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - HitTestCallback callback) { - FXL_LOG(INFO) << "HitTest (not implemented)"; - // fit::function<void(fidl::VectorPtr<::fuchsia::ui::gfx::Hit>)> -} - -void FakeSession::HitTestDeviceRay(::fuchsia::ui::gfx::vec3 ray_origin, - ::fuchsia::ui::gfx::vec3 ray_direction, - HitTestDeviceRayCallback callback) { - FXL_LOG(INFO) << "HitTestDeviceRay (not implemented)"; - // fit::function<void(fidl::VectorPtr<::fuchsia::ui::gfx::Hit>)> -} - FakeSession::Resource* FakeSession::FindResource(uint32_t id) { auto iter = resources_by_id_.find(id); return (iter == resources_by_id_.end()) ? nullptr : &iter->second; diff --git a/src/media/playback/mediaplayer/test/fakes/fake_session.h b/src/media/playback/mediaplayer/test/fakes/fake_session.h index 4ddcc6497bc..90d20f6bd31 100644 --- a/src/media/playback/mediaplayer/test/fakes/fake_session.h +++ b/src/media/playback/mediaplayer/test/fakes/fake_session.h @@ -57,14 +57,6 @@ class FakeSession : public fuchsia::ui::scenic::Session { std::vector<::zx::event> release_fences, PresentCallback callback) override; - void HitTest(uint32_t node_id, fuchsia::ui::gfx::vec3 ray_origin, - fuchsia::ui::gfx::vec3 ray_direction, - HitTestCallback callback) override; - - void HitTestDeviceRay(fuchsia::ui::gfx::vec3 ray_origin, - fuchsia::ui::gfx::vec3 ray_direction, - HitTestDeviceRayCallback callback) override; - void SetDebugName(std::string debug_name) override {} private: -- GitLab