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; ...@@ -92,9 +92,6 @@ vr::VrShell* g_vr_shell_instance;
constexpr base::TimeDelta kPollCapturingStateInterval = constexpr base::TimeDelta kPollCapturingStateInterval =
base::TimeDelta::FromSecondsD(0.2); base::TimeDelta::FromSecondsD(0.2);
constexpr base::TimeDelta kExitVrDueToUnsupportedModeDelay =
base::TimeDelta::FromSeconds(5);
constexpr base::TimeDelta kAssetsComponentWaitDelay = constexpr base::TimeDelta kAssetsComponentWaitDelay =
base::TimeDelta::FromSeconds(2); base::TimeDelta::FromSeconds(2);
...@@ -866,28 +863,15 @@ void VrShell::LogUnsupportedModeUserMetric(UiUnsupportedMode mode) { ...@@ -866,28 +863,15 @@ void VrShell::LogUnsupportedModeUserMetric(UiUnsupportedMode mode) {
UiUnsupportedMode::kCount); 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 { content::WebContents* VrShell::GetNonNativePageWebContents() const {
return !web_contents_is_native_page_ ? web_contents_ : nullptr; return !web_contents_is_native_page_ ? web_contents_ : nullptr;
} }
void VrShell::OnUnsupportedMode(UiUnsupportedMode mode) { void VrShell::OnUnsupportedMode(UiUnsupportedMode mode) {
switch (mode) { switch (mode) {
case UiUnsupportedMode::kUnhandledCodePoint: // Fall through. case UiUnsupportedMode::kUnhandledCodePoint:
case UiUnsupportedMode::kUnhandledCertificateInfo: // We should never have this case.
case UiUnsupportedMode::kUnhandledConnectionSecurityInfo: CHECK(false);
case UiUnsupportedMode::kGenericUnsupportedFeature:
ExitVrDueToUnsupportedMode(mode);
return; return;
case UiUnsupportedMode::kVoiceSearchNeedsRecordAudioOsPermission: { case UiUnsupportedMode::kVoiceSearchNeedsRecordAudioOsPermission: {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
...@@ -899,20 +883,21 @@ void VrShell::OnUnsupportedMode(UiUnsupportedMode mode) { ...@@ -899,20 +883,21 @@ void VrShell::OnUnsupportedMode(UiUnsupportedMode mode) {
Java_VrShellImpl_onNeedsKeyboardUpdate(env, j_vr_shell_); Java_VrShellImpl_onNeedsKeyboardUpdate(env, j_vr_shell_);
return; return;
} }
// Is not sent by the UI anymore. Enum value still exists to show correct // These modes are not sent by the UI anymore. Enum values still exist to
// exit prompt if vr-browsing-native-android-ui flag is false. // show correct exit prompt if vr-browsing-native-android-ui flag is false.
case UiUnsupportedMode::kUnhandledPageInfo: case UiUnsupportedMode::kUnhandledPageInfo:
case UiUnsupportedMode::kUnhandledCertificateInfo:
case UiUnsupportedMode::kUnhandledConnectionSecurityInfo:
case UiUnsupportedMode::kGenericUnsupportedFeature:
// kSearchEnginePromo should directly DOFF without showing a promo. So it // kSearchEnginePromo should directly DOFF without showing a promo. So it
// should never be used from VR ui thread. // should never be used from VR ui thread.
case UiUnsupportedMode::kSearchEnginePromo: case UiUnsupportedMode::kSearchEnginePromo:
// Should never be used as a mode.
case UiUnsupportedMode::kCount: case UiUnsupportedMode::kCount:
NOTREACHED(); NOTREACHED();
return; return;
} }
NOTREACHED(); NOTREACHED();
ExitVrDueToUnsupportedMode(mode);
} }
void VrShell::OnExitVrPromptResult(UiUnsupportedMode reason, void VrShell::OnExitVrPromptResult(UiUnsupportedMode reason,
......
...@@ -302,8 +302,6 @@ class VrShell : device::GvrGamepadDataProvider, ...@@ -302,8 +302,6 @@ class VrShell : device::GvrGamepadDataProvider,
bool HasDaydreamSupport(JNIEnv* env); bool HasDaydreamSupport(JNIEnv* env);
void ExitVrDueToUnsupportedMode(UiUnsupportedMode mode);
content::WebContents* GetNonNativePageWebContents() const; content::WebContents* GetNonNativePageWebContents() const;
void LoadAssets(); void LoadAssets();
......
...@@ -1244,13 +1244,6 @@ void VrShellGl::HandleControllerInput(const gfx::Point3F& laser_origin, ...@@ -1244,13 +1244,6 @@ void VrShellGl::HandleControllerInput(const gfx::Point3F& laser_origin,
const RenderInfo& render_info, const RenderInfo& render_info,
base::TimeTicks current_time) { base::TimeTicks current_time) {
gfx::Vector3dF head_direction = GetForwardVector(render_info.head_pose); 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; gfx::Vector3dF ergo_neutral_pose;
if (!controller_->IsConnected()) { if (!controller_->IsConnected()) {
// No controller detected, set up a gaze cursor that tracks the // No controller detected, set up a gaze cursor that tracks the
...@@ -1323,19 +1316,6 @@ void VrShellGl::HandleControllerInput(const gfx::Point3F& laser_origin, ...@@ -1323,19 +1316,6 @@ void VrShellGl::HandleControllerInput(const gfx::Point3F& laser_origin,
ui_->OnControllerUpdated(controller_model, reticle_model); 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) { bool VrShellGl::ResizeForWebVR(int16_t frame_index) {
// Process all pending_bounds_ changes targeted for before this frame, being // Process all pending_bounds_ changes targeted for before this frame, being
// careful of wrapping frame indices. // careful of wrapping frame indices.
......
...@@ -309,8 +309,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -309,8 +309,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
device::mojom::VRDisplayInfoPtr display_info, device::mojom::VRDisplayInfoPtr display_info,
device::mojom::XRDeviceRuntimeSessionOptionsPtr options); device::mojom::XRDeviceRuntimeSessionOptionsPtr options);
void set_is_exiting(bool exiting) { is_exiting_ = exiting; }
void OnSwapContents(int new_content_id); void OnSwapContents(int new_content_id);
void EnableAlertDialog(PlatformInputHandler* input_handler, void EnableAlertDialog(PlatformInputHandler* input_handler,
...@@ -362,7 +360,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -362,7 +360,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
void UpdateController(const RenderInfo& render_info, void UpdateController(const RenderInfo& render_info,
base::TimeTicks current_time); base::TimeTicks current_time);
void SendImmediateExitRequestIfNecessary();
void HandleControllerInput(const gfx::Point3F& laser_origin, void HandleControllerInput(const gfx::Point3F& laser_origin,
const RenderInfo& render_info, const RenderInfo& render_info,
base::TimeTicks current_time); base::TimeTicks current_time);
...@@ -530,7 +527,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -530,7 +527,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
bool paused_ = true; bool paused_ = true;
const bool surfaceless_rendering_; const bool surfaceless_rendering_;
bool daydream_support_; bool daydream_support_;
bool is_exiting_ = false;
bool content_paused_; bool content_paused_;
bool cardboard_trigger_pressed_ = false; bool cardboard_trigger_pressed_ = false;
bool cardboard_trigger_clicked_ = false; bool cardboard_trigger_clicked_ = false;
......
...@@ -467,17 +467,15 @@ TEST_F(UiTest, UiUpdatesForFullscreenChanges) { ...@@ -467,17 +467,15 @@ TEST_F(UiTest, UiUpdatesForFullscreenChanges) {
EXPECT_EQ(initial_position, content_group->LocalTransform()); EXPECT_EQ(initial_position, content_group->LocalTransform());
} }
TEST_F(UiTest, SecurityIconClickTriggersUnsupportedMode) { TEST_F(UiTest, SecurityIconClickShouldShowPageInfo) {
CreateScene(kNotInWebVr); CreateScene(kNotInWebVr);
// Initial state. // Initial state.
VerifyOnlyElementsVisible("Initial", kElementsVisibleInBrowsing); VerifyOnlyElementsVisible("Initial", kElementsVisibleInBrowsing);
// Clicking on security icon should trigger unsupported mode. EXPECT_CALL(*browser_, ShowPageInfo);
EXPECT_CALL(*browser_, auto* security_icon = scene_->GetUiElementByName(kUrlBarSecurityButton);
OnUnsupportedMode(UiUnsupportedMode::kUnhandledPageInfo)); ClickElement(security_icon);
browser_->OnUnsupportedMode(UiUnsupportedMode::kUnhandledPageInfo);
VerifyOnlyElementsVisible("Prompt invisible", kElementsVisibleInBrowsing);
} }
TEST_F(UiTest, ClickingOmniboxTriggersUnsupportedMode) { 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