/* 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/. */

"use strict";

/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: "role.js", dir: MOCHITESTS_DIR });

addAccessibleTask("doc_treeupdate_whitespace.html", async function(browser, accDoc) {
  let container1 = findAccessibleChildByID(accDoc, "container1");
  let container2Parent = findAccessibleChildByID(accDoc, "container2-parent");

  let tree = {
    SECTION: [
      { GRAPHIC: [] },
      { TEXT_LEAF: [] },
      { GRAPHIC: [] },
      { TEXT_LEAF: [] },
      { GRAPHIC: [] }
    ]
  };
  testAccessibleTree(container1, tree);

  let onReorder = waitForEvent(EVENT_REORDER, "container1");
  // Remove img1 from container1
  await ContentTask.spawn(browser, {}, () => {
    let doc = content.document;
    doc.getElementById("container1").removeChild(
      doc.getElementById("img1"));
  });
  await onReorder;

  tree = {
    SECTION: [
      { GRAPHIC: [] },
      { TEXT_LEAF: [] },
      { GRAPHIC: [] }
    ]
  };
  testAccessibleTree(container1, tree);

  tree = {
    SECTION: [
      { LINK: [] },
      { LINK: [ { GRAPHIC: [] } ] }
    ]
  };
  testAccessibleTree(container2Parent, tree);

  onReorder = waitForEvent(EVENT_REORDER, "container2-parent");
  // Append an img with valid src to container2
  await ContentTask.spawn(browser, {}, () => {
    let doc = content.document;
    let img = doc.createElement("img");
    img.setAttribute("src",
      "http://example.com/a11y/accessible/tests/mochitest/moz.png");
    doc.getElementById("container2").appendChild(img);
  });
  await onReorder;

  tree = {
    SECTION: [
      { LINK: [ { GRAPHIC: [ ] } ] },
      { TEXT_LEAF: [ ] },
      { LINK: [ { GRAPHIC: [ ] } ] }
    ]
  };
  testAccessibleTree(container2Parent, tree);
});
