get selectionNode_() {
    var adjustedNode = this.node;
    if (!adjustedNode)
      return null;

    // Make no adjustments if we're within non-rich editable content.
    if (adjustedNode.state[StateType.EDITABLE] &&
        !adjustedNode.state[StateType.RICHLY_EDITABLE])
      return adjustedNode;

    // Selections over line break nodes are broken.
    var parent = adjustedNode.parent;
    var grandparent = parent && parent.parent;
    if (parent && parent.role == RoleType.LINE_BREAK) {
      adjustedNode = grandparent;
    } else if (grandparent && grandparent.role == RoleType.LINE_BREAK) {
      adjustedNode = grandparent.parent;
    } else if (
        this.index_ == cursors.NODE_INDEX ||
        adjustedNode.role == RoleType.INLINE_TEXT_BOX ||
        adjustedNode.nameFrom != chrome.automation.NameFromType.CONTENTS) {
      // A node offset or unselectable character offset.
      adjustedNode = parent;
    } else {
      // A character offset into content.
      adjustedNode =
          adjustedNode.find({role: RoleType.STATIC_TEXT}) || adjustedNode;
    }

    return adjustedNode || null;
  }
/**
   * A node appropriate for making selections.
   * @return {AutomationNode}
   * @private
   */
A node appropriate for making selections.
A node appropriate for making selections .
get selectionNode_() {
    var adjustedNode = this.node;
    if (!adjustedNode)
      return null;
    if (adjustedNode.state[StateType.EDITABLE] &&
        !adjustedNode.state[StateType.RICHLY_EDITABLE])
      return adjustedNode;
    var parent = adjustedNode.parent;
    var grandparent = parent && parent.parent;
    if (parent && parent.role == RoleType.LINE_BREAK) {
      adjustedNode = grandparent;
    } else if (grandparent && grandparent.role == RoleType.LINE_BREAK) {
      adjustedNode = grandparent.parent;
    } else if (
        this.index_ == cursors.NODE_INDEX ||
        adjustedNode.role == RoleType.INLINE_TEXT_BOX ||
        adjustedNode.nameFrom != chrome.automation.NameFromType.CONTENTS) {
      adjustedNode = parent;
    } else {
      adjustedNode =
          adjustedNode.find({role: RoleType.STATIC_TEXT}) || adjustedNode;
    }
    return adjustedNode || null;
  }
get selectionNode_ ( ) { var adjustedNode = this . node ; if ( ! adjustedNode ) return null ; if ( adjustedNode . state [ StateType . EDITABLE ] && ! adjustedNode . state [ StateType . RICHLY_EDITABLE ] ) return adjustedNode ; var parent = adjustedNode . parent ; var grandparent = parent && parent . parent ; if ( parent && parent . role == RoleType . LINE_BREAK ) { adjustedNode = grandparent ; } else if ( grandparent && grandparent . role == RoleType . LINE_BREAK ) { adjustedNode = grandparent . parent ; } else if ( this . index_ == cursors . NODE_INDEX || adjustedNode . role == RoleType . INLINE_TEXT_BOX || adjustedNode . nameFrom != chrome . automation . NameFromType . CONTENTS ) { adjustedNode = parent ; } else { adjustedNode = adjustedNode . find ( { role : RoleType . STATIC_TEXT } ) || adjustedNode ; } return adjustedNode || null ; }
A node appropriate for making selections.
A node appropriate for making selections .
// Make no adjustments if we're within non-rich editable content. // Selections over line break nodes are broken. // A node offset or unselectable character offset. // A character offset into content.