author Samael Wang <>
Fri, 24 Mar 2017 15:10:07 +0800
changeset 393130 cbc61557e638cec7ce467956ed6525f93ef0441f
parent 173469 20ba1c3ccad8d5f6f0d38885cc47187b81cb5c37
child 425909 397cfed5073f34740aed9e20460810316ee8ec25
permissions -rw-r--r--
Bug 1283947 - Clear pending transactions when ClientLayerManager is assigning to a different refresh driver. r=mattwoodrow a=gchang

/* 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 */

#include "nsISupports.idl"

interface nsAString;
interface inISearchObserver;

[scriptable, uuid(D5FA765B-2448-4686-B7C1-5FF13ACB0FC9)]
interface inISearchProcess : nsISupports
  // indicates if an asynchronous search is in progress
  readonly attribute boolean isActive;

  // the number of results returned 
  readonly attribute long resultCount;

  // for optimization when doing an async search, this will optionally
  // destroy old results, assuming they will be fetched as soon as 
  // the observer is notified of their presence.  If true, then indices
  // pass to the get*ResultAt methods will return null for any index
  // other than the most recent one, and getResults will return null always.
  attribute boolean holdResults;

  // start a synchronous search
  void searchSync();

  // start an asynchronous search
  void searchAsync(in inISearchObserver aObserver);

  // command an async process to stop immediately
  void searchStop();

  // performs a step in the asynchronous search loop
  // return indicates true if loop is done, false if it should continue
  // This is there only for the benefit of asynchronous search controllers,
  // and is not for use by those who just wish to call searchAsync
  boolean searchStep();

  // methods for getting results of specific types
  AString getStringResultAt(in long aIndex);
  long getIntResultAt(in long aIndex);
  unsigned long getUIntResultAt(in long aIndex);