/* 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';

/* global EVENT_REORDER */

loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });

addAccessibleTask('doc_treeupdate_removal.xhtml', function*(browser, accDoc) {
  ok(isAccessible(findAccessibleChildByID(accDoc, 'the_table')),
    'table should be accessible');

  // Move the_table element into hidden subtree.
  let onReorder = waitForEvent(EVENT_REORDER, 'body');
  yield ContentTask.spawn(browser, {}, () => content.document.getElementById(
    'the_displaynone').appendChild(content.document.getElementById(
      'the_table')));
  yield onReorder;

  ok(!isAccessible(findAccessibleChildByID(accDoc, 'the_table')),
    'table in display none tree shouldn\'t be accessible');
  ok(!isAccessible(findAccessibleChildByID(accDoc, 'the_row')),
    'row shouldn\'t be accessible');

  // Remove the_row element (since it did not have accessible, no event needed).
  yield ContentTask.spawn(browser, {}, () =>
    content.document.body.removeChild(
      content.document.getElementById('the_row')));

  // make sure no accessibles have stuck around.
  ok(!isAccessible(findAccessibleChildByID(accDoc, 'the_row')),
    'row shouldn\'t be accessible');
  ok(!isAccessible(findAccessibleChildByID(accDoc, 'the_table')),
    'table shouldn\'t be accessible');
  ok(!isAccessible(findAccessibleChildByID(accDoc, 'the_displayNone')),
    'display none things shouldn\'t be accessible');
});