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 @@
namespace blink {
Gamepad::Gamepad(NavigatorGamepad* navigator_gamepad)
Gamepad::Gamepad(NavigatorGamepad* navigator_gamepad, unsigned index)
: navigator_gamepad_(navigator_gamepad),
index_(0),
index_(index),
timestamp_(0.0),
has_vibration_actuator_(false),
vibration_actuator_type_(device::GamepadHapticActuatorType::kDualRumble),
......
......@@ -45,7 +45,7 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
explicit Gamepad(NavigatorGamepad* navigator_gamepad);
explicit Gamepad(NavigatorGamepad* navigator_gamepad, unsigned index);
~Gamepad() override;
typedef Vector<double> DoubleVector;
......@@ -54,7 +54,6 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable {
void SetId(const String& id) { id_ = id; }
unsigned index() const { return index_; }
void SetIndex(unsigned val) { index_ = val; }
bool connected() const { return connected_; }
void SetConnected(bool val) { connected_ = val; }
......@@ -99,7 +98,7 @@ class MODULES_EXPORT Gamepad final : public ScriptWrappable {
String id_;
// 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.
bool connected_;
......
......@@ -53,9 +53,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadButton buttons[1] = {{false, false, 0.0}};
device::GamepadPose null_pose;
auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr);
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true);
......@@ -69,9 +68,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadButton buttons[1] = {{false, false, 0.0}};
auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr);
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true);
......@@ -84,9 +82,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadButton buttons[1] = {{true, true, 1.0}};
auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr);
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true);
......@@ -104,9 +101,8 @@ class GamepadComparisonsTest : public testing::Test {
}};
auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr);
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true);
......@@ -124,9 +120,8 @@ class GamepadComparisonsTest : public testing::Test {
}};
auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr);
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true);
......@@ -140,9 +135,8 @@ class GamepadComparisonsTest : public testing::Test {
device::GamepadPose pose;
InitGamepadPose(pose);
auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr);
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true);
......@@ -159,9 +153,8 @@ class GamepadComparisonsTest : public testing::Test {
// Modify the linear velocity.
pose.linear_velocity.x = 100.f;
auto* list = MakeGarbageCollected<GamepadList>();
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr);
auto* gamepad = MakeGarbageCollected<Gamepad>(nullptr, 0);
gamepad->SetId("gamepad");
gamepad->SetIndex(0);
gamepad->SetAxes(1, axes);
gamepad->SetButtons(1, buttons);
gamepad->SetConnected(true);
......
......@@ -132,8 +132,8 @@ void NavigatorGamepad::SampleGamepads() {
} else if (device_gamepad.connected) {
Gamepad* gamepad = gamepads_back_->item(i);
if (!gamepad)
gamepad = MakeGarbageCollected<Gamepad>(this);
SampleGamepad(i, *gamepad, device_gamepad);
gamepad = MakeGarbageCollected<Gamepad>(this, i);
SampleGamepad(device_gamepad, *gamepad);
gamepads_back_->Set(i, gamepad);
} else {
gamepads_back_->Set(i, nullptr);
......@@ -141,9 +141,8 @@ void NavigatorGamepad::SampleGamepads() {
}
}
void NavigatorGamepad::SampleGamepad(uint32_t index,
Gamepad& gamepad,
const device::Gamepad& device_gamepad) {
void NavigatorGamepad::SampleGamepad(const device::Gamepad& device_gamepad,
Gamepad& gamepad) {
bool newly_connected;
GamepadComparisons::HasGamepadConnectionChanged(
gamepad.connected(), // Old connected.
......@@ -182,7 +181,6 @@ void NavigatorGamepad::SampleGamepad(uint32_t index,
// gamepad is newly connected.
if (newly_connected) {
gamepad.SetId(device_gamepad.id);
gamepad.SetIndex(index);
gamepad.SetMapping(device_gamepad.mapping);
if (device_gamepad.is_xr && device_gamepad.display_id) {
......
......@@ -70,9 +70,7 @@ class MODULES_EXPORT NavigatorGamepad final
private:
void SampleGamepads();
void SampleGamepad(uint32_t index,
Gamepad& gamepad,
const device::Gamepad& device_gamepad);
void SampleGamepad(const device::Gamepad& device_gamepad, Gamepad& gamepad);
void DidRemoveGamepadEventListeners();
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