/* -*- 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 http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIURI;

/**
 * This is a private interface used by Places components to notify history
 * listeners about important notifications.  These should not be used by any
 * code that is not part of core.
 *
 * @note See also: nsINavHistoryObserver
 */
[scriptable, uuid(808cf36c-4c9a-4bdb-91a4-d60a6fc25add)]
interface nsPIPlacesHistoryListenersNotifier : nsISupports
{
  /**
   * Calls onDeleteVisits and onDeleteURI notifications on registered listeners
   * with the history service.
   *
   * @param aURI
   *        The nsIURI object representing the URI of the page being expired.
   * @param aVisitTime
   *        The time, in microseconds, that the page being expired was visited.
   * @param aWholeEntry
   *        Indicates if this is the last visit for this URI.
   * @param aGUID
   *        The unique ID associated with the page.
   * @param aReason
   *        Indicates the reason for the removal.
   *        See nsINavHistoryObserver::REASON_* constants.
   * @param aTransitionType
   *        If it's a valid TRANSITION_* value, all visits of the specified type
   *        have been removed.
   */
  void notifyOnPageExpired(in nsIURI aURI,
                           in PRTime aVisitTime,
                           in boolean aWholeEntry,
                           in ACString aGUID,
                           in unsigned short aReason,
                           in unsigned long aTransitionType);
};
