docs: function (cfg, ctxt, lineNumber, controller) {
          this.$InputWithFrame.constructor.apply(this, arguments);
  
          /**
           * Minimum width in px that must be kept for the input markup.
           * @type Number
           * @protected
           * @override
           */
          this._minInputMarkupWidth = 8;
  
          /**
           * Default value to assign to _inputMarkupWidth if no constraint apply
           * @type Number
           * @protected
           * @override
           */
          this._defaultInputMarkupWidth = 170;
  
          /**
           * Tells if the field is of type text or password
           * @protected
           * @type Boolean
           */
          this._isPassword = false;
  
          /**
           * Tells if it is input or textarea
           * @protected
           * @type Boolean
           */
  
          this._isTextarea = false;
          /**
           * Internal timer ID used to validate a keyup event.
           * @see _dom_onkeyup
           * @protected
           * @type String
           */
          this._valTimer = null;
  
          /**
           * Use to skip the focus or blur handling because the widgets keeps focus and is just changing things resulting
           * on a lost of focus
           * @protected
           * @type Boolean
           */
          this._keepFocus = false;
  
          /**
           * Use on keep focus to restore selection. Keep selection start and end.
           * @protected
           * @type Object
           */
          this._currentCaretPosition = null;
  
          /**
           * Controller for this input - used for validation
           * @type aria.widgets.controllers.TextDataController
           */
          this.controller = controller;
  
          if (controller) {
              controller.$on({
                  'onCheck' : this._reactToControllerReportEvent,
                  scope : this
              });
  
              controller.setDefaultErrorMessages(cfg.defaultErrorMessages);
          }
  
          /**
           * DOM reference of the input field.
           * @protected
           * @type HTMLElement
           */
          this._textInputField = null;
  
          /**
           * true if text input has focus
           * @protected
           * @type Boolean
           */
          this._hasFocus = false;
  
          /**
           * Custom tab index flag
           * @protected
           * @type Boolean
           */
          this._customTabIndexProvided = true;
  
          /**
           * Set to true when the widget should be in prefill state
           * @type Boolean
           * @protected
           */
          this._isPrefilled = false;
  
          /**
           * Flag for the simpleHTML skin
           * @protected
           * @type Boolean
           */
          this._simpleHTML = this._skinObj.simpleHTML;
  
          /**
           * Flag set to false after first focus, and set back to true after a blur. Used for the autoselect behavior.<br />
           * This value is true when the field receives focus for the first time (user action) and false when the focus is
           * given programmatically by the controller
           * @type Boolean
           */
          this._firstFocus = true;
  
      }