Commit 1b874728 authored by Aldo Culquicondor's avatar Aldo Culquicondor Committed by Commit Bot

VR: Remove delayed exit codepath

We now use exit prompts. The only remaining case was the unhandled code
point when rendering URLs, but we should ever reach it.

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:linux_vr;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I1e7e715b146d0052b893dcac0abb762e9cfb00d2
Reviewed-on: https://chromium-review.googlesource.com/1147433Reviewed-by: default avatarIan Vollick <vollick@chromium.org>
Reviewed-by: default avatarAmirhossein Simjour <asimjour@chromium.org>
Commit-Queue: Aldo Culquicondor <acondor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577527}
parent 2d448779
......@@ -92,9 +92,6 @@ vr::VrShell* g_vr_shell_instance;
constexpr base::TimeDelta kPollCapturingStateInterval =
base::TimeDelta::FromSecondsD(0.2);
constexpr base::TimeDelta kExitVrDueToUnsupportedModeDelay =
base::TimeDelta::FromSeconds(5);
constexpr base::TimeDelta kAssetsComponentWaitDelay =
base::TimeDelta::FromSeconds(2);
......@@ -866,28 +863,15 @@ void VrShell::LogUnsupportedModeUserMetric(UiUnsupportedMode mode) {
UiUnsupportedMode::kCount);
}
void VrShell::ExitVrDueToUnsupportedMode(UiUnsupportedMode mode) {
ui_->SetIsExiting();
PostToGlThread(FROM_HERE, base::BindOnce(&VrShellGl::set_is_exiting,
gl_thread_->GetVrShellGl(), true));
main_thread_task_runner_->PostDelayedTask(
FROM_HERE,
base::BindOnce(&VrShell::ForceExitVr, weak_ptr_factory_.GetWeakPtr()),
kExitVrDueToUnsupportedModeDelay);
LogUnsupportedModeUserMetric(mode);
}
content::WebContents* VrShell::GetNonNativePageWebContents() const {
return !web_contents_is_native_page_ ? web_contents_ : nullptr;
}
void VrShell::OnUnsupportedMode(UiUnsupportedMode mode) {
switch (mode) {
case UiUnsupportedMode::kUnhandledCodePoint: // Fall through.
case UiUnsupportedMode::kUnhandledCertificateInfo:
case UiUnsupportedMode::kUnhandledConnectionSecurityInfo:
case UiUnsupportedMode::kGenericUnsupportedFeature:
ExitVrDueToUnsupportedMode(mode);
case UiUnsupportedMode::kUnhandledCodePoint:
// We should never have this case.
CHECK(false);
return;
case UiUnsupportedMode::kVoiceSearchNeedsRecordAudioOsPermission: {
JNIEnv* env = base::android::AttachCurrentThread();
......@@ -899,20 +883,21 @@ void VrShell::OnUnsupportedMode(UiUnsupportedMode mode) {
Java_VrShellImpl_onNeedsKeyboardUpdate(env, j_vr_shell_);
return;
}
// Is not sent by the UI anymore. Enum value still exists to show correct
// exit prompt if vr-browsing-native-android-ui flag is false.
// These modes are not sent by the UI anymore. Enum values still exist to
// show correct exit prompt if vr-browsing-native-android-ui flag is false.
case UiUnsupportedMode::kUnhandledPageInfo:
case UiUnsupportedMode::kUnhandledCertificateInfo:
case UiUnsupportedMode::kUnhandledConnectionSecurityInfo:
case UiUnsupportedMode::kGenericUnsupportedFeature:
// kSearchEnginePromo should directly DOFF without showing a promo. So it
// should never be used from VR ui thread.
case UiUnsupportedMode::kSearchEnginePromo:
// Should never be used as a mode.
case UiUnsupportedMode::kCount:
NOTREACHED();
return;
}
NOTREACHED();
ExitVrDueToUnsupportedMode(mode);
}
void VrShell::OnExitVrPromptResult(UiUnsupportedMode reason,
......
......@@ -302,8 +302,6 @@ class VrShell : device::GvrGamepadDataProvider,
bool HasDaydreamSupport(JNIEnv* env);
void ExitVrDueToUnsupportedMode(UiUnsupportedMode mode);
content::WebContents* GetNonNativePageWebContents() const;
void LoadAssets();
......
......@@ -1244,13 +1244,6 @@ void VrShellGl::HandleControllerInput(const gfx::Point3F& laser_origin,
const RenderInfo& render_info,
base::TimeTicks current_time) {
gfx::Vector3dF head_direction = GetForwardVector(render_info.head_pose);
if (is_exiting_) {
// When we're exiting, we don't show the reticle and the only input
// processing we do is to handle immediate exits.
SendImmediateExitRequestIfNecessary();
return;
}
gfx::Vector3dF ergo_neutral_pose;
if (!controller_->IsConnected()) {
// No controller detected, set up a gaze cursor that tracks the
......@@ -1323,19 +1316,6 @@ void VrShellGl::HandleControllerInput(const gfx::Point3F& laser_origin,
ui_->OnControllerUpdated(controller_model, reticle_model);
}
void VrShellGl::SendImmediateExitRequestIfNecessary() {
gvr::ControllerButton buttons[] = {
gvr::kControllerButtonClick, gvr::kControllerButtonApp,
gvr::kControllerButtonHome,
};
for (size_t i = 0; i < arraysize(buttons); ++i) {
if (controller_->ButtonUpHappened(buttons[i]) ||
controller_->ButtonDownHappened(buttons[i])) {
browser_->ForceExitVr();
}
}
}
bool VrShellGl::ResizeForWebVR(int16_t frame_index) {
// Process all pending_bounds_ changes targeted for before this frame, being
// careful of wrapping frame indices.
......
......@@ -309,8 +309,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
device::mojom::VRDisplayInfoPtr display_info,
device::mojom::XRDeviceRuntimeSessionOptionsPtr options);
void set_is_exiting(bool exiting) { is_exiting_ = exiting; }
void OnSwapContents(int new_content_id);
void EnableAlertDialog(PlatformInputHandler* input_handler,
......@@ -362,7 +360,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
void UpdateController(const RenderInfo& render_info,
base::TimeTicks current_time);
void SendImmediateExitRequestIfNecessary();
void HandleControllerInput(const gfx::Point3F& laser_origin,
const RenderInfo& render_info,
base::TimeTicks current_time);
......@@ -530,7 +527,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
bool paused_ = true;
const bool surfaceless_rendering_;
bool daydream_support_;
bool is_exiting_ = false;
bool content_paused_;
bool cardboard_trigger_pressed_ = false;
bool cardboard_trigger_clicked_ = false;
......
......@@ -467,17 +467,15 @@ TEST_F(UiTest, UiUpdatesForFullscreenChanges) {
EXPECT_EQ(initial_position, content_group->LocalTransform());
}
TEST_F(UiTest, SecurityIconClickTriggersUnsupportedMode) {
TEST_F(UiTest, SecurityIconClickShouldShowPageInfo) {
CreateScene(kNotInWebVr);
// Initial state.
VerifyOnlyElementsVisible("Initial", kElementsVisibleInBrowsing);
// Clicking on security icon should trigger unsupported mode.
EXPECT_CALL(*browser_,
OnUnsupportedMode(UiUnsupportedMode::kUnhandledPageInfo));
browser_->OnUnsupportedMode(UiUnsupportedMode::kUnhandledPageInfo);
VerifyOnlyElementsVisible("Prompt invisible", kElementsVisibleInBrowsing);
EXPECT_CALL(*browser_, ShowPageInfo);
auto* security_icon = scene_->GetUiElementByName(kUrlBarSecurityButton);
ClickElement(security_icon);
}
TEST_F(UiTest, ClickingOmniboxTriggersUnsupportedMode) {
......
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