michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- michael@0: * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ : michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "nsISupports.idl" michael@0: michael@0: interface mozIStorageConnection; michael@0: michael@0: /** michael@0: * This interface contains the information that the Storage service needs to michael@0: * vacuum a database. This interface is created as a service through the michael@0: * category manager with the category "vacuum-participant". michael@0: * Please see https://developer.mozilla.org/en/mozIStorageVacuumParticipant for michael@0: * more information. michael@0: */ michael@0: [scriptable, uuid(8f367508-1d9a-4d3f-be0c-ac11b6dd7dbf)] michael@0: interface mozIStorageVacuumParticipant : nsISupports { michael@0: /** michael@0: * The expected page size in bytes for the database. The vacuum manager will michael@0: * try to correct the page size during idle based on this value. michael@0: * michael@0: * @note If the database is using the WAL journal mode, the page size won't michael@0: * be changed to the requested value. See bug 634374. michael@0: * @note Valid page size values are powers of 2 between 512 and 65536. michael@0: * The suggested value is mozIStorageConnection::defaultPageSize. michael@0: */ michael@0: readonly attribute long expectedDatabasePageSize; michael@0: michael@0: /** michael@0: * Connection to the database file to be vacuumed. michael@0: */ michael@0: readonly attribute mozIStorageConnection databaseConnection; michael@0: michael@0: /** michael@0: * Notifies when a vacuum operation begins. Listeners should avoid using the michael@0: * database till onEndVacuum is received. michael@0: * michael@0: * @return true to proceed with the vacuum, false if the participant wants to michael@0: * opt-out for now, it will be retried later. Useful when participant michael@0: * is running some other heavy operation that can't be interrupted. michael@0: * michael@0: * @note When a vacuum operation starts or ends it will also dispatch a global michael@0: * "heavy-io-task" notification through the observer service with the michael@0: * data argument being either "vacuum-begin" or "vacuum-end". michael@0: */ michael@0: boolean onBeginVacuum(); michael@0: michael@0: /** michael@0: * Notifies when a vacuum operation ends. michael@0: * michael@0: * @param aSucceeded michael@0: * reports if the vacuum succeeded or failed. michael@0: */ michael@0: void onEndVacuum(in boolean aSucceeded); michael@0: };