Commit 2e115acb authored by David Dorwin's avatar David Dorwin Committed by Commit Bot

Set Gamepad's index when creating the object

The index of the object does not change when newly_connected so we can
set it once upon creation.

Change-Id: I15eaedad1b299b0ff6cc840496eb9cef5828e42f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1566458
Commit-Queue: David Dorwin <ddorwin@chromium.org>
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Auto-Submit: David Dorwin <ddorwin@chromium.org>
Reviewed-by: default avatarMatt Reynolds <mattreynolds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#650551}
parent d4a2bb57
...@@ -31,9 +31,9 @@ ...@@ -31,9 +31,9 @@
namespace blink { namespace blink {
Gamepad::Gamepad(NavigatorGamepad* navigator_gamepad) Gamepad::Gamepad(NavigatorGamepad* navigator_gamepad, unsigned index)
: navigator_gamepad_(navigator_gamepad), : navigator_gamepad_(navigator_gamepad),
index_(0), index_(index),
timestamp_(0.0), timestamp_(0.0),
has_vibration_actuator_(false), has_vibration_actuator_(false),
vibration_actuator_type_(device::GamepadHapticActuatorType::kDualRumble), vibration_actuator_type_(device::GamepadHapticActuatorType::kDualRumble),
......
...@@ -45,7 +45,7 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable { ...@@ -45,7 +45,7 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO(); DEFINE_WRAPPERTYPEINFO();
public: public:
explicit Gamepad(NavigatorGamepad* navigator_gamepad); explicit Gamepad(NavigatorGamepad* navigator_gamepad, unsigned index);
~Gamepad() override; ~Gamepad() override;
typedef Vector<double> DoubleVector; typedef Vector<double> DoubleVector;
...@@ -54,7 +54,6 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable { ...@@ -54,7 +54,6 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable {
void SetId(const String& id) { id_ = id; } void SetId(const String& id) { id_ = id; }
unsigned index() const { return index_; } unsigned index() const { return index_; }
void SetIndex(unsigned val) { index_ = val; }
bool connected() const { return connected_; } bool connected() const { return connected_; }
void SetConnected(bool val) { connected_ = val; } void SetConnected(bool val) { connected_ = val; }
...@@ -99,7 +98,7 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable { ...@@ -99,7 +98,7 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable {
String id_; String id_;
// The index of this gamepad within the GamepadList. // The index of this gamepad within the GamepadList.
unsigned index_; const unsigned index_;
// True if this gamepad was still connected when gamepad state was captured. // True if this gamepad was still connected when gamepad state was captured.
bool connected_; bool connected_;
......
...@@ -53,9 +53,8 @@ class GamepadComparisonsTest : public testing::Test { ...@@ -53,9 +53,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadButton buttons[1] = {{false, false, 0.0}}; device::GamepadButton buttons[1] = {{false, false, 0.0}};
device::GamepadPose null_pose; device::GamepadPose null_pose;
auto* list = MakeGarbageCollected<GamepadList>(); auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr); auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad"); gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes); gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons); gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true); gamepad->SetConnected(true);
...@@ -69,9 +68,8 @@ class GamepadComparisonsTest : public testing::Test { ...@@ -69,9 +68,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadButton buttons[1] = {{false, false, 0.0}}; device::GamepadButton buttons[1] = {{false, false, 0.0}};
auto* list = MakeGarbageCollected<GamepadList>(); auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr); auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad"); gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes); gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons); gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true); gamepad->SetConnected(true);
...@@ -84,9 +82,8 @@ class GamepadComparisonsTest : public testing::Test { ...@@ -84,9 +82,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadButton buttons[1] = {{true, true, 1.0}}; device::GamepadButton buttons[1] = {{true, true, 1.0}};
auto* list = MakeGarbageCollected<GamepadList>(); auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr); auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad"); gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes); gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons); gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true); gamepad->SetConnected(true);
...@@ -104,9 +101,8 @@ class GamepadComparisonsTest : public testing::Test { ...@@ -104,9 +101,8 @@ class GamepadComparisonsTest : public testing::Test {
}}; }};
auto* list = MakeGarbageCollected<GamepadList>(); auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr); auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad"); gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes); gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons); gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true); gamepad->SetConnected(true);
...@@ -124,9 +120,8 @@ class GamepadComparisonsTest : public testing::Test { ...@@ -124,9 +120,8 @@ class GamepadComparisonsTest : public testing::Test {
}}; }};
auto* list = MakeGarbageCollected<GamepadList>(); auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr); auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad"); gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes); gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons); gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true); gamepad->SetConnected(true);
...@@ -140,9 +135,8 @@ class GamepadComparisonsTest : public testing::Test { ...@@ -140,9 +135,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadPose pose; device::GamepadPose pose;
InitGamepadPose(pose); InitGamepadPose(pose);
auto* list = MakeGarbageCollected<GamepadList>(); auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr); auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad"); gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes); gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons); gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true); gamepad->SetConnected(true);
...@@ -159,9 +153,8 @@ class GamepadComparisonsTest : public testing::Test { ...@@ -159,9 +153,8 @@ class GamepadComparisonsTest : public testing::Test {
// Modify the linear velocity. // Modify the linear velocity.
pose.linear_velocity.x = 100.f; pose.linear_velocity.x = 100.f;
auto* list = MakeGarbageCollected<GamepadList>(); auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr); auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad"); gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes); gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons); gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true); gamepad->SetConnected(true);
......
...@@ -132,8 +132,8 @@ void NavigatorGamepad::SampleGamepads() { ...@@ -132,8 +132,8 @@ void NavigatorGamepad::SampleGamepads() {
} else if (device_gamepad.connected) { } else if (device_gamepad.connected) {
Gamepad* gamepad = gamepads_back_->item(i); Gamepad* gamepad = gamepads_back_->item(i);
if (!gamepad) if (!gamepad)
gamepad = MakeGarbageCollected<Gamepad>(this); gamepad = MakeGarbageCollected<Gamepad>(this, i);
SampleGamepad(i, *gamepad, device_gamepad); SampleGamepad(device_gamepad, *gamepad);
gamepads_back_->Set(i, gamepad); gamepads_back_->Set(i, gamepad);
} else { } else {
gamepads_back_->Set(i, nullptr); gamepads_back_->Set(i, nullptr);
...@@ -141,9 +141,8 @@ void NavigatorGamepad::SampleGamepads() { ...@@ -141,9 +141,8 @@ void NavigatorGamepad::SampleGamepads() {
} }
} }
void NavigatorGamepad::SampleGamepad(uint32_t index, void NavigatorGamepad::SampleGamepad(const device::Gamepad& device_gamepad,
Gamepad& gamepad, Gamepad& gamepad) {
const device::Gamepad& device_gamepad) {
bool newly_connected; bool newly_connected;
GamepadComparisons::HasGamepadConnectionChanged( GamepadComparisons::HasGamepadConnectionChanged(
gamepad.connected(), // Old connected. gamepad.connected(), // Old connected.
...@@ -182,7 +181,6 @@ void NavigatorGamepad::SampleGamepad(uint32_t index, ...@@ -182,7 +181,6 @@ void NavigatorGamepad::SampleGamepad(uint32_t index,
// gamepad is newly connected. // gamepad is newly connected.
if (newly_connected) { if (newly_connected) {
gamepad.SetId(device_gamepad.id); gamepad.SetId(device_gamepad.id);
gamepad.SetIndex(index);
gamepad.SetMapping(device_gamepad.mapping); gamepad.SetMapping(device_gamepad.mapping);
if (device_gamepad.is_xr && device_gamepad.display_id) { if (device_gamepad.is_xr && device_gamepad.display_id) {
......
...@@ -70,9 +70,7 @@ class MODULES_EXPORT NavigatorGamepad final ...@@ -70,9 +70,7 @@ class MODULES_EXPORT NavigatorGamepad final
private: private:
void SampleGamepads(); void SampleGamepads();
void SampleGamepad(uint32_t index, void SampleGamepad(const device::Gamepad& device_gamepad, Gamepad& gamepad);
Gamepad& gamepad,
const device::Gamepad& device_gamepad);
void DidRemoveGamepadEventListeners(); void DidRemoveGamepadEventListeners();
bool StartUpdatingIfAttached(); bool StartUpdatingIfAttached();
......
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