toolkit/components/autocomplete/nsIAutoCompleteSearch.idl
author Marco Bonardo <mbonardo@mozilla.com>
Sun, 19 Nov 2017 21:58:14 +0100
changeset 701875 1676a2ff0da45c2ec95ffda90154ab9c26bdf8fb
parent 282620 397afd7d1e6bd7e6510502af3fe921244a863b5e
permissions -rw-r--r--
Bug 1415908 - Intermittent failure (nsIAutoCompleteController.getCommentAt) in browser_ext_omnibox.js. r=adw Fixes a timing bug where in certain moments matchCount may not be in sync with the current search status, due to previous results not being cleared immediately. Still delays tree updates to avoid UI flickering. Fixes a theorical timing issue in unifiedComplete where a stopped search could notify a result. Removes the no more used OnUpdateSearchResult API. MozReview-Commit-ID: COoIN4oQT4v

/* 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 nsIAutoCompleteResult;
interface nsIAutoCompleteObserver;

[scriptable, uuid(DE8DB85F-C1DE-4d87-94BA-7844890F91FE)]
interface nsIAutoCompleteSearch : nsISupports
{
  /*
   * Search for a given string and notify a listener (either synchronously
   * or asynchronously) of the result
   *
   * @param searchString - The string to search for
   * @param searchParam - An extra parameter
   * @param previousResult - A previous result to use for faster searching
   * @param listener - A listener to notify when the search is complete
   */
  void startSearch(in AString searchString,
                   in AString searchParam,
                   in nsIAutoCompleteResult previousResult,
                   in nsIAutoCompleteObserver listener);

  /*
   * Stop all searches that are in progress
   */
  void stopSearch();
};

[scriptable, uuid(8bd1dbbc-dcce-4007-9afa-b551eb687b61)]
interface nsIAutoCompleteObserver : nsISupports
{ 
  /*
   * Called when a search is complete and the results are ready
   *
   * @param search - The search object that processed this search
   * @param result - The search result object
   */
  void onSearchResult(in nsIAutoCompleteSearch search, in nsIAutoCompleteResult result);
};

[scriptable, uuid(4c3e7462-fbfb-4310-8f4b-239238392b75)]
interface nsIAutoCompleteSearchDescriptor : nsISupports
{
  // The search is started after the timeout specified by the corresponding
  // nsIAutoCompleteInput implementation.
  const unsigned short SEARCH_TYPE_DELAYED = 0;
  // The search is started synchronously, before any delayed searches.
  const unsigned short SEARCH_TYPE_IMMEDIATE = 1;

  /**
   * Identifies the search behavior.
   * Should be one of the SEARCH_TYPE_* constants above.
   * Defaults to SEARCH_TYPE_DELAYED.
   */
  readonly attribute unsigned short searchType;

  /*
   * Whether a new search should be triggered when the user deletes the
   * autofilled part.
   */
  readonly attribute boolean clearingAutoFillSearchesAgain;
};