author Carsten "Tomcat" Book <>
Mon, 03 Nov 2014 16:46:20 +0100
changeset 213691 01d2a65554f75eb41666c57229d7507224f5cb69
parent 127719 d4130427c3130ec27434c0cadb29b8cf12fe0aaa
permissions -rw-r--r--
Backed out changeset f0651992278c (bug 1092813) for bustage on a CLOSED TREE

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
 * 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 mozIStorageConnection;

 * This interface contains the information that the Storage service needs to
 * vacuum a database.  This interface is created as a service through the
 * category manager with the category "vacuum-participant".
 * Please see for
 * more information.
[scriptable, uuid(8f367508-1d9a-4d3f-be0c-ac11b6dd7dbf)]
interface mozIStorageVacuumParticipant : nsISupports {
   * The expected page size in bytes for the database.  The vacuum manager will
   * try to correct the page size during idle based on this value.
   * @note If the database is using the WAL journal mode, the page size won't
  *        be changed to the requested value.  See bug 634374.
   * @note Valid page size values are powers of 2 between 512 and 65536.
   *       The suggested value is mozIStorageConnection::defaultPageSize.
  readonly attribute long expectedDatabasePageSize;

   * Connection to the database file to be vacuumed.
  readonly attribute mozIStorageConnection databaseConnection;

   * Notifies when a vacuum operation begins.  Listeners should avoid using the
   * database till onEndVacuum is received.
   * @return true to proceed with the vacuum, false if the participant wants to
   *         opt-out for now, it will be retried later.  Useful when participant
   *         is running some other heavy operation that can't be interrupted.
   * @note When a vacuum operation starts or ends it will also dispatch a global
   *       "heavy-io-task" notification through the observer service with the
   *       data argument being either "vacuum-begin" or "vacuum-end".
  boolean onBeginVacuum();

   * Notifies when a vacuum operation ends.
   * @param aSucceeded
   *        reports if the vacuum succeeded or failed.
  void onEndVacuum(in boolean aSucceeded);