editor/nsIEditorMailSupport.idl
author Masayuki Nakano <masayuki@d-toybox.com>
Fri, 04 Aug 2017 13:57:56 +0900
changeset 373518 cddc1b05b8760e76c0621c402047adaa553be468
parent 314108 8c5a17252bb320c82ef5665b1640c43e7a6c8653
child 419716 96a208d3cceee2f0f0b7aac7fac3278d5a897330
permissions -rw-r--r--
Bug 1060051 - Make editor related interfaces builtin classes if it's possible r=Ehsan,smaug If we make nsIEditor a builtin class, that means that its instance can be only TextEditor or HTMLEditor. Then, users of nsIEditor can use concrete classes such as EditorBase, TextEditor or HTMLEditor instead. Then, the users can reduce unnecessary QI and a lot of virtual calls if we'll create non-virtual methods. So, let's make editor related interfaces builtin classes. MozReview-Commit-ID: 93WfsSDuJiJ

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIArray;
interface nsIDOMNode;

[scriptable, builtinclass, uuid(fdf23301-4a94-11d3-9ce4-9960496c41bc)]

interface nsIEditorMailSupport : nsISupports
{
  /** Paste the text in the OS clipboard at the cursor position,
    * as a quotation (whose representation is dependant on the editor type),
    * replacing the selected text (if any).
    * @param aSelectionType Text or html?
    */
  void pasteAsQuotation(in long aSelectionType);

  /** Insert a string as quoted text
    * (whose representation is dependant on the editor type),
    * replacing the selected text (if any).
    * @param aQuotedText  The actual text to be quoted
    * @return             The node which was inserted
    */
  nsIDOMNode insertAsQuotation(in AString aQuotedText);

  /**
   * Inserts a plaintext string at the current location,
   * with special processing for lines beginning with ">",
   * which will be treated as mail quotes and inserted
   * as plaintext quoted blocks.
   * If the selection is not collapsed, the selection is deleted
   * and the insertion takes place at the resulting collapsed selection.
   *
   * @param aString   the string to be inserted
   */
   void insertTextWithQuotations(in DOMString aStringToInsert);

  /** Paste a string as quoted text,
    * whose representation is dependant on the editor type,
    * replacing the selected text (if any)
    * @param aCitation    The "mid" URL of the source message
    * @param aSelectionType Text or html?
    */
  void pasteAsCitedQuotation(in AString aCitation,
                             in long aSelectionType);

  /** Insert a string as quoted text
    * (whose representation is dependant on the editor type),
    * replacing the selected text (if any),
    * including, if possible, a "cite" attribute.
    * @param aQuotedText  The actual text to be quoted
    * @param aCitation    The "mid" URL of the source message
    * @param aInsertHTML  Insert as html?  (vs plaintext)
    * @return             The node which was inserted
    */
  nsIDOMNode insertAsCitedQuotation(in AString aQuotedText,
                                    in AString aCitation,
                                    in boolean aInsertHTML);

  /**
   * Rewrap the selected part of the document, re-quoting if necessary.
   * @param aRespectNewlines  Try to maintain newlines in the original?
   */
  void rewrap(in boolean aRespectNewlines);

  /**
   * Strip any citations in the selected part of the document.
   */
  void stripCites();


  /**
   * Get a list of IMG and OBJECT tags in the current document.
   */
  nsIArray getEmbeddedObjects();
};