testImeMacFirefox() {
    // TODO(user): Currently our code cannot distinguish preedit characters
    // from normal ones for Mac/Firefox.
    // Enable this test after we fix it.

    simulateMacFirefox();
    mh.fireEvent('focus', '');
    assertFalse('IME should not be triggered', mh.waitingForIme_);

    // ime_on

    // a
    mh.fireKeyEvents(KeyCodes.WIN_IME, true, true, false);
    assertTrue('IME should be triggered', mh.waitingForIme_);
    mh.fireKeyEvents(KeyCodes.A, true, false, true);
    assertTrue('IME should be triggered', mh.waitingForIme_);

    // enter
    mh.fireKeyEvents(KeyCodes.ENTER, true, true, true);
    assertFalse('IME should not be triggered', mh.waitingForIme_);

    // i
    mh.fireKeyEvents(KeyCodes.WIN_IME, true, true, false);
    mh.fireKeyEvents(KeyCodes.I, true, false, true);
    assertTrue('IME should be triggered', mh.waitingForIme_);

    // ime_off

    // u
    mh.fireKeyEvents(KeyCodes.U, true, true, true);
    assertFalse('IME should not be triggered', mh.waitingForIme_);

    mh.fireEvent('blur', '');
  }
This test simulates the key inputs generated by pressing
'<ime_on>a<enter>i<ime_off>u' using the Japanese IME
on Mac/Firefox.
@suppress {visibility} suppression added to enable type checking