/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

// Test to verify that the filter value input works in the sidebar.

"use strict";

add_task(async function () {
  await openTabAndSetupStorage(
    MAIN_URL_SECURED + "storage-complex-values.html"
  );

  const updated = gUI.once("sidebar-updated");
  await selectTreeItem(["localStorage", MAIN_ORIGIN_SECURED]);
  await selectTableItem("ls1");
  await updated;

  const doc = gPanelWindow.document;

  let properties = doc.querySelectorAll(`.variables-view-property`);
  let unmatched = doc.querySelectorAll(`.variables-view-property[unmatched]`);
  is(properties.length, 5, "5 properties in total before filtering");
  is(unmatched.length, 0, "No unmatched properties before filtering");

  info("Focus the filter input and type 'es6' to filter out entries");
  doc.querySelector(".variables-view-searchinput").focus();
  EventUtils.synthesizeKey("es6", {}, gPanelWindow);

  await waitFor(
    () =>
      doc.querySelectorAll(`.variables-view-property[unmatched]`).length == 3
  );

  info("Updates performed, going to verify result");
  properties = doc.querySelectorAll(`.variables-view-property`);
  unmatched = doc.querySelectorAll(`.variables-view-property[unmatched]`);
  is(properties.length, 5, "5 properties in total after filtering");
  // Note: even though only one entry matches, since the VariablesView displays
  // it as a tree, we also have one matched .variables-view-property for the
  // parent.
  is(unmatched.length, 3, "Three unmatched properties after filtering");
});
