Commit b5eeb2df authored by Marcos Cáceres's avatar Marcos Cáceres
Browse files

Bug 1741343 - getGamePads() should return empty array if document is not fully active r=saschanaz

parent fb4d6993
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1541,8 +1541,7 @@ already_AddRefed<LegacyMozTCPSocket> Navigator::MozTCPSocket() {

void Navigator::GetGamepads(nsTArray<RefPtr<Gamepad>>& aGamepads,
                            ErrorResult& aRv) {
  if (!mWindow || !mWindow->GetExtantDoc()) {
    aRv.Throw(NS_ERROR_UNEXPECTED);
  if (!mWindow || !mWindow->IsFullyActive()) {
    return;
  }
  NS_ENSURE_TRUE_VOID(mWindow->GetDocShell());
+21 −0
Original line number Diff line number Diff line
<!DOCTYPE html>
<meta charset="utf-8" />
<title>Gamepad tests for non-fully-active document</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
  promise_test(async () => {
    const iframe = document.createElement('iframe');
    iframe.srcdoc = `<h1>test</h1>`
    await new Promise(resolve => {
      iframe.onload = resolve;
      document.body.appendChild(iframe);
    });
    const navigator = iframe.contentWindow.navigator;
    iframe.remove();
    const gamepads = navigator.getGamepads();
    assert_true(Array.isArray(gamepads), 'getGamepads should return an array');
    assert_equals(gamepads.length, 0, "No gamepads should be available");
  }, "calling getGamepads() in a non-fully-active document");
</script>