author Masayuki Nakano <>
Thu, 10 Jan 2019 08:50:41 +0000
changeset 453219 99a977d519a0b78e267d3dce4afb009b8d3be769
parent 244681 ad01543457e739b4eee7a245e16734a3ecfd10ad
child 475212 020c8c871c0d3b3920fe95935cfef06501976c0f
permissions -rw-r--r--
Bug 181137 - part 8: Make ContentIteratorBase and its subclasses non-refcountable r=smaug This patch makes ContentIteratorBase, PostContentIterator, PreContentIterator and ContentSubtreeIterator classes non-refcountable because most users can create their instances in stack and such users may be in a hot path. So, we can save a lot of cost of instantiation. Unfortunately, only ScriptableContentIterator creates one of the concrete classes and needs to destroy it properly. Therefore, its EnsureContentIterator(), destructor, traverse and unlink code becomes messy. However, ScriptableContentIterator was designed for automated tests and we need to maintain it not so many times. Therefore, improvement of other users must be worthwhiler than this demerit. Differential Revision:

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: sw=2 ts=2 sts=2 expandtab 
 * 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 mozIStorageResultSet;
interface mozIStorageError;

[scriptable, uuid(29383d00-d8c4-4ddd-9f8b-c2feb0f2fcfa)]
interface mozIStorageStatementCallback : nsISupports {

   * Called when some result is obtained from the database.  This function can
   * be called more than once with a different storageIResultSet each time for
   * any given asynchronous statement.
   * @param aResultSet
   *        The result set containing the data from the database.
  void handleResult(in mozIStorageResultSet aResultSet);

   * Called when some error occurs while executing the statement.  This function
   * may be called more than once with a different storageIError each time for
   * any given asynchronous statement.
   * @param aError
   *        An object containing information about the error.
  void handleError(in mozIStorageError aError);

   * Called when the statement has finished executing.  This function will only
   * be called once for any given asynchronous statement.
   * @param aReason
   *        Indicates if the statement is no longer executing because it either
   *        finished (REASON_FINISHED), was canceled (REASON_CANCELED), or
   *        a fatal error occurred (REASON_ERROR).
  const unsigned short REASON_FINISHED = 0;
  const unsigned short REASON_CANCELED = 1;
  const unsigned short REASON_ERROR = 2;
  void handleCompletion(in unsigned short aReason);