testSetStateWithDisabled() {
    control.render(sandbox);
    control.setHighlighted(true);
    control.setActive(true);
    control.getKeyEventTarget().focus();

    resetEventCount();

    control.setState(Component.State.DISABLED, false);
    assertTrue('No events must have been dispatched', noEventsDispatched());
    assertTrue('Control must be enabled', control.isEnabled());
    assertTrue('Control must be highlighted', control.isHighlighted());
    assertTrue('Control must be active', control.isActive());
    assertTrue(
        'Control element must not have aria-disabled',
        googString.isEmptyOrWhitespace(
            aria.getState(control.getElementStrict(), State.DISABLED)));
    assertEquals(
        'Control element must have a tabIndex of 0', 0,
        googString.toNumber(
            control.getElement().getAttribute('tabIndex') || ''));

    if (testFocus) {
      // Expected to fail on IE and Mac Safari 3.  IE calls focus handlers
      // asynchronously, and Mac Safari 3 doesn't support keyboard focus.
      expectedFailures.expectFailureFor(userAgent.IE);
      try {
        assertTrue('Control must be focused', control.isFocused());
      } catch (e) {
        expectedFailures.handleException(e);
      }
    }

    resetEventCount();

    control.setState(Component.State.DISABLED, true);
    assertEquals(
        'One DISABLE event must have been dispatched', 1,
        getEventCount(control, Component.EventType.DISABLE));
    assertFalse('Control must be disabled', control.isEnabled());
    assertFalse('Control must not be highlighted', control.isHighlighted());
    assertFalse('Control must not be active', control.isActive());
    assertFalse('Control must not be focused', control.isFocused());
    assertEquals(
        'Control element must have aria-disabled true', 'true',
        aria.getState(control.getElementStrict(), State.DISABLED));
    assertNull(
        'Control element must not have a tabIndex',
        control.getElement().getAttribute('tabIndex'));

    control.setState(Component.State.DISABLED, false);
    control.exitDocument();
    const cssClass = goog.getCssName(ControlRenderer.CSS_CLASS, 'disabled');
    const element = dom.createDom(TagName.DIV, {tabIndex: 0});
    element.className = cssClass;
    dom.appendChild(sandbox, element);
    control.decorate(element);
    assertEquals(
        'Control element must have aria-disabled true', 'true',
        aria.getState(control.getElementStrict(), State.DISABLED));
    assertNull(
        'Control element must not have a tabIndex',
        control.getElement().getAttribute('tabIndex'));
    control.setState(Component.State.DISABLED, false);
    let elem = control.getElementStrict();
    assertEquals(
        'Control element must have aria-disabled false', 'false',
        aria.getState(elem, State.DISABLED));
    assertEquals(
        'Control element must have tabIndex 0', 0,
        googString.toNumber(elem.getAttribute('tabIndex') || ''));
  }
Tests {@link Control#setState} when using
Component.State.DISABLED.