testDispatchBlur() {
    if (!BrowserFeature.HAS_CONTENT_EDITABLE &&
        !BrowserFeature.CLEARS_SELECTION_WHEN_FOCUS_LEAVES) {
      const blendedField = initSeamlessField('Hi!', {'border': '2px 5px'});
      const iframe = createSeamlessIframe();
      blendedField.attachIframe(iframe);

      let blurCalled = false;
      events.listenOnce(blendedField, Field.EventType.BLUR, () => {
        blurCalled = true;
      });

      const clearSelection = Range.clearSelection;
      let cleared = false;
      let clearedWindow;
      /** @suppress {visibility} suppression added to enable type checking */
      blendedField.editableDomHelper = new DomHelper();
      /** @suppress {visibility} suppression added to enable type checking */
      blendedField.editableDomHelper.getWindow =
          functions.constant(iframe.contentWindow);
      const mockRange = new MockRange();
      blendedField.getRange = () => mockRange;
      Range.clearSelection = (opt_window) => {
        clearSelection(opt_window);
        cleared = true;
        clearedWindow = opt_window;
      };
      const clock = new MockClock(true);

      mockRange.collapse(true);
      mockRange.select();
      mockRange.$replay();
      blendedField.dispatchBlur();
      clock.tick(1);

      assertTrue('Blur must be dispatched.', blurCalled);
      assertTrue('Selection must be cleared.', cleared);
      assertEquals(
          'Selection must be cleared in iframe', iframe.contentWindow,
          clearedWindow);
      mockRange.$verify();
      clock.dispose();
    }
  }
@suppress {visibility,missingProperties} suppression added to enable type
     checking