Commit 0338da53 authored by Ian Vollick's avatar Ian Vollick Committed by Commit Bot

[vr] The reticle/laser group should not be hit testable

This causes issues where the controller hits itself.

Bug: None
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_vr;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ie02035042d329bc6ec7f5ace16436a5c890b34dd
Reviewed-on: https://chromium-review.googlesource.com/900244
Commit-Queue: Ian Vollick <vollick@chromium.org>
Reviewed-by: default avatarChristopher Grant <cjgrant@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534461}
parent f3f1d2bc
......@@ -25,14 +25,11 @@ constexpr float kDefaultHoverOffsetDMM = 0.048f;
Button::Button(base::RepeatingCallback<void()> click_handler)
: click_handler_(click_handler), hover_offset_(kDefaultHoverOffsetDMM) {
set_hit_testable(false);
auto background = std::make_unique<Rect>();
background->SetType(kTypeButtonBackground);
background->set_bubble_events(true);
background->set_contributes_to_parent_bounds(false);
background->SetTransitionedProperties({TRANSFORM});
background->set_hit_testable(false);
background_ = background.get();
AddChild(std::move(background));
......
......@@ -253,7 +253,6 @@ void AddSquare(size_t num_rings,
Controller::Controller() {
SetName(kController);
set_hit_testable(false);
SetVisible(true);
}
......
......@@ -28,7 +28,6 @@ DiscButton::DiscButton(base::RepeatingCallback<void()> click_handler,
vector_icon->SetIcon(icon);
vector_icon->set_bubble_events(true);
vector_icon->SetTransitionedProperties({TRANSFORM});
vector_icon->set_hit_testable(false);
foreground_ = vector_icon.get();
// We now need to reparent the hit target so that it is a child of the
......
......@@ -141,7 +141,6 @@ float RemapLatitude(float t) {
} // namespace
Background::Background() {
set_hit_testable(false);
SetTransitionedProperties(
{NORMAL_COLOR_FACTOR, INCOGNITO_COLOR_FACTOR, FULLSCREEN_COLOR_FACTOR});
SetTransitionDuration(base::TimeDelta::FromMilliseconds(2500));
......
......@@ -67,10 +67,7 @@ static constexpr char const* kFragmentShader = SHADER(
} // namespace
Stars::Stars() {
set_hit_testable(false);
}
Stars::Stars() = default;
Stars::~Stars() = default;
void Stars::Render(UiElementRenderer* renderer,
......
......@@ -44,8 +44,6 @@ static constexpr char const* kFragmentShader = SHADER(
GltfController::GltfController() {
SetName(kController);
set_hit_testable(false);
SetVisible(true);
}
GltfController::~GltfController() = default;
......
......@@ -13,6 +13,7 @@ namespace vr {
Keyboard::Keyboard() {
SetName(kKeyboard);
set_focusable(false);
set_hit_testable(true);
SetVisibleImmediately(false);
}
......
......@@ -65,8 +65,6 @@ static constexpr int kLaserDataHeight = 1;
Laser::Laser(Model* model) : model_(model) {
SetName(kLaser);
set_hit_testable(false);
SetVisible(true);
}
Laser::~Laser() = default;
......
......@@ -17,10 +17,7 @@ constexpr float kSnapThresholdDegrees = 10.0f;
} // namespace
Repositioner::Repositioner() {
set_hit_testable(false);
}
Repositioner::Repositioner() = default;
Repositioner::~Repositioner() = default;
gfx::Transform Repositioner::LocalTransform() const {
......
......@@ -77,8 +77,6 @@ static constexpr float kReticleColor[] = {1.0f, 1.0f, 1.0f, 1.0f};
Reticle::Reticle(UiScene* scene, Model* model) : scene_(scene), model_(model) {
SetName(kReticle);
SetDrawPhase(kPhaseForeground);
set_hit_testable(false);
SetVisible(true);
}
Reticle::~Reticle() = default;
......
......@@ -8,7 +8,6 @@ namespace vr {
ScaledDepthAdjuster::ScaledDepthAdjuster(float delta_z) : delta_z_(delta_z) {
SetType(kTypeScaledDepthAdjuster);
set_hit_testable(false);
}
ScaledDepthAdjuster::~ScaledDepthAdjuster() = default;
......
......@@ -121,7 +121,6 @@ static constexpr float kYShadowOffset = 0.06f;
Shadow::Shadow() {
set_bounds_contain_children(true);
set_hit_testable(false);
}
Shadow::~Shadow() {}
......
......@@ -23,7 +23,6 @@ TextInput::TextInput(float font_height_meters,
auto text = std::make_unique<Text>(font_height_meters);
text->SetType(kTypeTextInputHint);
text->SetDrawPhase(kPhaseForeground);
text->set_hit_testable(false);
text->set_focusable(false);
text->set_x_anchoring(LEFT);
text->set_x_centering(LEFT);
......@@ -52,7 +51,6 @@ TextInput::TextInput(float font_height_meters,
cursor->SetVisible(false);
cursor->SetType(kTypeTextInputCursor);
cursor->SetDrawPhase(kPhaseForeground);
cursor->set_hit_testable(false);
cursor->set_focusable(false);
cursor->set_x_anchoring(LEFT);
cursor->set_y_anchoring(BOTTOM);
......
......@@ -87,7 +87,6 @@ class TextInputSceneTest : public UiTest {
base::Unretained(text_input_model));
text_input->set_event_handlers(event_handlers);
text_input->SetDrawPhase(kPhaseNone);
text_input->set_hit_testable(false);
text_input->SetTextInputDelegate(text_input_delegate);
text_input->AddBinding(std::make_unique<Binding<TextInputInfo>>(
VR_BIND_LAMBDA([](TextInputInfo* info) { return *info; },
......
......@@ -21,12 +21,10 @@ Toast::Toast() {
auto background = std::make_unique<Rect>();
background->SetType(kTypeToastBackground);
background->set_contributes_to_parent_bounds(false);
background->set_hit_testable(false);
background_ = background.get();
auto container = std::make_unique<LinearLayout>(LinearLayout::kRight);
container->SetType(kTypeToastContainer);
container->set_hit_testable(false);
container_ = container.get();
AddChild(std::move(background));
......@@ -44,7 +42,6 @@ void Toast::AddIcon(const gfx::VectorIcon& icon,
DCHECK(!icon_);
auto vector_icon = std::make_unique<VectorIcon>(width_pixels);
vector_icon->SetType(kTypeToastIcon);
vector_icon->set_hit_testable(false);
vector_icon->SetDrawPhase(draw_phase());
vector_icon->SetIcon(icon);
vector_icon->SetSize(icon_size, icon_size);
......@@ -60,7 +57,6 @@ void Toast::AddText(const base::string16& text,
DCHECK(!text_);
auto text_element = std::make_unique<Text>(font_height_dmm);
text_element->SetType(kTypeToastText);
text_element->set_hit_testable(false);
text_element->SetDrawPhase(draw_phase());
text_element->SetText(text);
text_element->SetLayoutMode(text_layout_mode);
......
......@@ -463,7 +463,7 @@ class UiElement : public cc::AnimationTarget {
int id_ = -1;
// If false, the reticle will not hit the element, even if visible.
bool hit_testable_ = true;
bool hit_testable_ = false;
// If false, clicking on the element doesn't give it focus.
bool focusable_ = true;
......
......@@ -60,6 +60,7 @@ static const char* g_ui_element_name_strings[] = {
"kOmniboxSuggestions",
"kOmniboxSuggestionsOuterLayout",
"kOmniboxOuterLayout",
"kOmniboxOuterLayoutSpacer",
"kOmniboxShadow",
"k2dBrowsingVisibiltyControlForVoice",
"k2dBrowsingVisibiltyControlForSiteInfoPrompt",
......@@ -125,7 +126,9 @@ static const char* g_ui_element_name_strings[] = {
"kControllerTrackpadRepositionLabel",
"kControllerExitButtonLabel",
"kControllerBackButtonLabel",
"kContentRepositionLabel",
"kContentRepositionHitPlane",
"kContentRepositionVisibilityToggle",
};
static_assert(
......
......@@ -59,6 +59,7 @@ enum UiElementName {
kOmniboxSuggestions,
kOmniboxSuggestionsOuterLayout,
kOmniboxOuterLayout,
kOmniboxOuterLayoutSpacer,
kOmniboxShadow,
k2dBrowsingVisibiltyControlForVoice,
k2dBrowsingVisibiltyControlForSiteInfoPrompt,
......@@ -124,7 +125,9 @@ enum UiElementName {
kControllerTrackpadRepositionLabel,
kControllerExitButtonLabel,
kControllerBackButtonLabel,
kContentRepositionLabel,
kContentRepositionHitPlane,
kContentRepositionVisibilityToggle,
// This must be last.
kNumUiElementNames,
......
......@@ -82,6 +82,7 @@ class UiInputManagerTest : public testing::Test {
auto element = std::make_unique<StrictMock<MockRect>>();
StrictMock<MockRect>* p_element = element.get();
element->SetTranslate(0, 0, z_position);
element->set_hit_testable(true);
scene_->AddUiElement(kRoot, std::move(element));
scene_->OnBeginFrame(base::TimeTicks(), kStartHeadPose);
return p_element;
......@@ -91,6 +92,7 @@ class UiInputManagerTest : public testing::Test {
auto element = std::make_unique<StrictMock<MockTextInput>>();
StrictMock<MockTextInput>* p_element = element.get();
element->SetTranslate(0, 0, z_position);
element->set_hit_testable(true);
scene_->AddUiElement(kRoot, std::move(element));
scene_->OnBeginFrame(base::TimeTicks(), kStartHeadPose);
return p_element;
......@@ -232,6 +234,7 @@ TEST_F(UiInputManagerTest, ReticleRenderTarget) {
auto element = std::make_unique<Rect>();
UiElement* p_element = element.get();
element->SetTranslate(0, 0, -1.f);
element->set_hit_testable(true);
scene_->AddUiElement(kRoot, std::move(element));
scene_->OnBeginFrame(base::TimeTicks(), kStartHeadPose);
......@@ -367,6 +370,7 @@ TEST_F(UiInputManagerTest, HitTestStrategy) {
auto* p_element = element.get();
element->SetTranslate(0, 0, -2.5);
element->SetSize(1000.0f, 1000.0f);
element->set_hit_testable(true);
scene_->AddUiElement(kRoot, std::move(element));
scene_->OnBeginFrame(base::TimeTicks(), kStartHeadPose);
......
......@@ -201,8 +201,6 @@ UiScene::Elements UiScene::GetPotentiallyVisibleElements() const {
UiScene::UiScene() {
root_element_ = std::make_unique<UiElement>();
root_element_->SetName(kRoot);
root_element_->SetDrawPhase(kPhaseNone);
root_element_->set_hit_testable(false);
}
UiScene::~UiScene() = default;
......
This diff is collapsed.
......@@ -1193,4 +1193,12 @@ TEST_F(UiTest, RepositionButton) {
EXPECT_EQ(kRepositionButtonMinOpacity, button->GetTargetOpacity());
}
// No element in the controller root's subtree should be hit testable.
TEST_F(UiTest, ControllerHitTest) {
CreateScene(kNotInCct, kNotInWebVr);
auto* controller = scene_->GetUiElementByName(kControllerRoot);
for (auto& child : *controller)
EXPECT_FALSE(child.IsHitTestable());
}
} // namespace vr
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment