Commit 57da8a13 authored by Jacob DeWitt's avatar Jacob DeWitt Committed by Commit Bot

Remove CardboardGamepadDataFetcher

Now that WebVR is gone, the gamepad data fetchers and providres are
dead code. WebXR has a different way of exposing gamepad data.

Bug: 1017848
Change-Id: Ic784b9ea5db3ef8f0399b0fa800b2d1a467e63cc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1893737Reviewed-by: default avatarAlexander Cooper <alcooper@chromium.org>
Commit-Queue: Jacob DeWitt <jacde@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713040}
parent b810f7ac
......@@ -65,7 +65,6 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/referrer.h"
#include "content/public/common/url_constants.h"
#include "device/vr/android/gvr/cardboard_gamepad_data_fetcher.h"
#include "device/vr/android/gvr/gvr_device.h"
#include "gpu/command_buffer/common/mailbox.h"
#include "services/device/public/mojom/constants.mojom.h"
......@@ -290,15 +289,6 @@ VrShell::~VrShell() {
DVLOG(1) << __FUNCTION__ << "=" << this;
content_surface_texture_ = nullptr;
overlay_surface_texture_ = nullptr;
if (gvr_gamepad_source_active_) {
device::GamepadDataFetcherManager::GetInstance()->RemoveSourceFactory(
device::GAMEPAD_SOURCE_GVR);
}
if (cardboard_gamepad_source_active_) {
device::GamepadDataFetcherManager::GetInstance()->RemoveSourceFactory(
device::GAMEPAD_SOURCE_CARDBOARD);
}
delegate_provider_->RemoveDelegate();
{
......@@ -408,9 +398,6 @@ void VrShell::CloseHostedDialog() {
void VrShell::ToggleCardboardGamepad(bool enabled) {
// Enable/disable updating gamepad state.
if (cardboard_gamepad_source_active_ && !enabled) {
device::GamepadDataFetcherManager::GetInstance()->RemoveSourceFactory(
device::GAMEPAD_SOURCE_CARDBOARD);
cardboard_gamepad_data_fetcher_ = nullptr;
cardboard_gamepad_source_active_ = false;
}
......@@ -418,10 +405,6 @@ void VrShell::ToggleCardboardGamepad(bool enabled) {
device::GvrDevice* gvr_device = delegate_provider_->GetGvrDevice();
if (!gvr_device)
return;
device::GamepadDataFetcherManager::GetInstance()->AddFactory(
new device::CardboardGamepadDataFetcher::Factory(this,
gvr_device->GetId()));
cardboard_gamepad_source_active_ = true;
if (pending_cardboard_trigger_) {
OnTriggerEvent(nullptr, JavaParamRef<jobject>(nullptr), true);
......@@ -440,8 +423,6 @@ void VrShell::ToggleGvrGamepad(bool enabled) {
gvr_gamepad_source_active_ = true;
} else {
DCHECK(gvr_gamepad_source_active_);
device::GamepadDataFetcherManager::GetInstance()->RemoveSourceFactory(
device::GAMEPAD_SOURCE_GVR);
gvr_gamepad_source_active_ = false;
}
}
......@@ -451,12 +432,7 @@ void VrShell::OnTriggerEvent(JNIEnv* env,
bool touched) {
// If we are running cardboard, update gamepad state.
if (cardboard_gamepad_source_active_) {
device::CardboardGamepadData pad;
pad.timestamp = cardboard_gamepad_timer_++;
pad.is_screen_touching = touched;
if (cardboard_gamepad_data_fetcher_) {
cardboard_gamepad_data_fetcher_->SetGamepadData(pad);
}
cardboard_gamepad_timer_++;
} else {
pending_cardboard_trigger_ = touched;
}
......@@ -1102,12 +1078,6 @@ void VrShell::UpdateGamepadData(device::GvrGamepadData pad) {
ToggleGvrGamepad(pad.connected);
}
void VrShell::RegisterCardboardGamepadDataFetcher(
device::CardboardGamepadDataFetcher* fetcher) {
DVLOG(1) << __FUNCTION__ << "(" << fetcher << ")";
cardboard_gamepad_data_fetcher_ = fetcher;
}
bool VrShell::HasDaydreamSupport(JNIEnv* env) {
return Java_VrShell_hasDaydreamSupport(env, j_vr_shell_);
}
......
......@@ -28,7 +28,6 @@
#include "chrome/browser/vr/ui_initial_state.h"
#include "chrome/browser/vr/ui_unsupported_mode.h"
#include "content/public/browser/web_contents_observer.h"
#include "device/vr/android/gvr/cardboard_gamepad_data_provider.h"
#include "device/vr/android/gvr/gvr_gamepad_data_provider.h"
#include "device/vr/public/cpp/session_mode.h"
#include "device/vr/public/mojom/vr_service.mojom.h"
......@@ -67,7 +66,6 @@ struct AutocompleteRequest;
// The native instance of the Java VrShell. This class is not threadsafe and
// must only be used on the UI thread.
class VrShell : device::GvrGamepadDataProvider,
device::CardboardGamepadDataProvider,
VoiceResultDelegate,
public ChromeLocationBarModelDelegate,
public PageInfoUI {
......@@ -260,10 +258,6 @@ class VrShell : device::GvrGamepadDataProvider,
// device::GvrGamepadDataProvider implementation.
void UpdateGamepadData(device::GvrGamepadData) override;
// device::CardboardGamepadDataProvider implementation.
void RegisterCardboardGamepadDataFetcher(
device::CardboardGamepadDataFetcher*) override;
// ChromeLocationBarModelDelegate implementation.
content::WebContents* GetActiveWebContents() const override;
bool ShouldDisplayURL() const override;
......@@ -380,10 +374,6 @@ class VrShell : device::GvrGamepadDataProvider,
bool cardboard_gamepad_source_active_ = false;
bool pending_cardboard_trigger_ = false;
// Registered fetchers, must remain alive for UpdateGamepadData calls.
// That's ok since the fetcher is only destroyed from VrShell's destructor.
device::CardboardGamepadDataFetcher* cardboard_gamepad_data_fetcher_ =
nullptr;
int64_t cardboard_gamepad_timer_ = 0;
// Content id
......
......@@ -56,9 +56,6 @@ if (enable_vr) {
if (enable_gvr_services) {
sources += [
"android/gvr/cardboard_gamepad_data_fetcher.cc",
"android/gvr/cardboard_gamepad_data_fetcher.h",
"android/gvr/cardboard_gamepad_data_provider.h",
"android/gvr/gvr_delegate.cc",
"android/gvr/gvr_delegate.h",
"android/gvr/gvr_delegate_provider.h",
......
// Copyright 2017 The Chromium 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 "device/vr/android/gvr/cardboard_gamepad_data_fetcher.h"
#include "base/memory/ptr_util.h"
#include "base/strings/utf_string_conversions.h"
#include "device/gamepad/public/cpp/gamepads.h"
#include "device/vr/android/gvr/cardboard_gamepad_data_provider.h"
namespace device {
CardboardGamepadDataFetcher::Factory::Factory(
CardboardGamepadDataProvider* data_provider,
device::mojom::XRDeviceId display_id)
: data_provider_(data_provider), display_id_(display_id) {
DVLOG(1) << __FUNCTION__ << "=" << this;
}
CardboardGamepadDataFetcher::Factory::~Factory() {
DVLOG(1) << __FUNCTION__ << "=" << this;
}
std::unique_ptr<GamepadDataFetcher>
CardboardGamepadDataFetcher::Factory::CreateDataFetcher() {
return std::make_unique<CardboardGamepadDataFetcher>(data_provider_,
display_id_);
}
GamepadSource CardboardGamepadDataFetcher::Factory::source() {
return GAMEPAD_SOURCE_CARDBOARD;
}
CardboardGamepadDataFetcher::CardboardGamepadDataFetcher(
CardboardGamepadDataProvider* data_provider,
device::mojom::XRDeviceId display_id)
: display_id_(display_id) {
// Called on UI thread.
DVLOG(1) << __FUNCTION__ << "=" << this;
data_provider->RegisterCardboardGamepadDataFetcher(this);
}
CardboardGamepadDataFetcher::~CardboardGamepadDataFetcher() {
DVLOG(1) << __FUNCTION__ << "=" << this;
}
GamepadSource CardboardGamepadDataFetcher::source() {
return GAMEPAD_SOURCE_CARDBOARD;
}
void CardboardGamepadDataFetcher::OnAddedToProvider() {
PauseHint(false);
}
void CardboardGamepadDataFetcher::SetGamepadData(CardboardGamepadData data) {
// Called from UI thread.
gamepad_data_ = data;
}
void CardboardGamepadDataFetcher::GetGamepadData(bool devices_changed_hint) {
// Called from gamepad polling thread.
PadState* state = GetPadState(0);
if (!state)
return;
CardboardGamepadData provided_data = gamepad_data_;
Gamepad& pad = state->data;
if (!state->is_initialized) {
state->is_initialized = true;
// This is the first time we've seen this device, so do some one-time
// initialization
pad.connected = true;
pad.is_xr = true;
pad.mapping = GamepadMapping::kNone;
pad.SetID(base::UTF8ToUTF16("Cardboard Button"));
pad.buttons_length = 1;
pad.axes_length = 0;
pad.display_id = static_cast<unsigned int>(display_id_);
pad.hand = GamepadHand::kNone;
}
pad.timestamp = CurrentTimeInMicroseconds();
bool pressed = provided_data.is_screen_touching;
pad.buttons[0].touched = pressed;
pad.buttons[0].pressed = pressed;
pad.buttons[0].value = pressed ? 1.0f : 0.0f;
pad.pose.not_null = false;
}
void CardboardGamepadDataFetcher::PauseHint(bool paused) {}
} // namespace device
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_VR_ANDROID_CARDBOARD_GAMEPAD_DATA_FETCHER_H_
#define DEVICE_VR_ANDROID_CARDBOARD_GAMEPAD_DATA_FETCHER_H_
#include <string>
#include "device/gamepad/gamepad_data_fetcher.h"
#include "device/vr/android/gvr/cardboard_gamepad_data_provider.h"
#include "device/vr/public/mojom/vr_service.mojom.h"
#include "device/vr/vr_export.h"
namespace device {
class DEVICE_VR_EXPORT CardboardGamepadDataFetcher : public GamepadDataFetcher {
public:
class Factory : public GamepadDataFetcherFactory {
public:
Factory(CardboardGamepadDataProvider*,
device::mojom::XRDeviceId display_id);
~Factory() override;
std::unique_ptr<GamepadDataFetcher> CreateDataFetcher() override;
GamepadSource source() override;
private:
CardboardGamepadDataProvider* data_provider_;
device::mojom::XRDeviceId display_id_;
};
CardboardGamepadDataFetcher(CardboardGamepadDataProvider*,
device::mojom::XRDeviceId display_id);
~CardboardGamepadDataFetcher() override;
GamepadSource source() override;
void GetGamepadData(bool devices_changed_hint) override;
void PauseHint(bool paused) override;
void OnAddedToProvider() override;
// Called from CardboardGamepadDataProvider
void SetGamepadData(CardboardGamepadData);
private:
device::mojom::XRDeviceId display_id_;
CardboardGamepadData gamepad_data_;
DISALLOW_COPY_AND_ASSIGN(CardboardGamepadDataFetcher);
};
} // namespace device
#endif // DEVICE_VR_ANDROID_CARDBOARD_GAMEPAD_DATA_FETCHER_H_
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_VR_ANDROID_CARDBOARD_GAMEPAD_DATA_PROVIDER_H
#define DEVICE_VR_ANDROID_CARDBOARD_GAMEPAD_DATA_PROVIDER_H
namespace device {
class CardboardGamepadDataFetcher;
// Filled in by vr_shell and consumed by CardboardGamepadDataFetcher.
struct CardboardGamepadData {
CardboardGamepadData() : timestamp(0), is_screen_touching(false) {}
int64_t timestamp;
bool is_screen_touching;
};
// This class exposes Cardboard controller (screen touch) data to the gamepad
// API. Data is reported by VrShell, which implements the
// CardboardGamepadDataProvider interface.
//
// More specifically, here's the lifecycle, assuming VrShell
// implements GvrGamepadDataProvider:
//
// - VrShell creates CardboardGamepadDataFetcherFactory during initialization if
// a cardboard is in use, or when WebVR presentation starts.
//
// - CardboardGamepadDataFetcherFactory creates CardboardGamepadDataFetcher.
//
// - CardboardGamepadDataFetcher registers itself with VrShell via
// VrShell::RegisterCardboardGamepadDataFetcher.
//
// - While presenting, VrShell::OnTouch calls
// CardboardGamepadDataFetcher->SetGamepadData to push button state,
// CardboardGamepadDataFetcher::GetGamepadData returns this when polled.
//
// - VrShell starts executing its destructor or WebVR presentation ends.
//
// - VrShell destructor unregisters CardboardGamepadDataFetcherFactory.
//
// - CardboardGamepadDataFetcherFactory destructor destroys
// CardboardGamepadDataFetcher.
//
class CardboardGamepadDataProvider {
public:
// Called by the gamepad data fetcher constructor to register itself
// for receiving data via SetGamepadData. The fetcher must remain
// alive while the provider is calling SetGamepadData on it.
virtual void RegisterCardboardGamepadDataFetcher(
CardboardGamepadDataFetcher*) = 0;
};
} // namespace device
#endif // DEVICE_VR_ANDROID_CARDBOARD_GAMEPAD_DATA_PROVIDER_H
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