blob: bcff53cad836941fc783d86a61cb411bd84b8b54 [file] [log] [blame]
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Mozilla XPInstall.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Daniel Veditz <dveditz@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
interface nsIDOMWindow;
interface nsIXPIProgressDialog;
interface nsIObserver;
/**
* A service provided by embedding applications to override
* the default XUL implmementation of XPInstall dialogs.
*
* Embedding applications which wish to override the default
* XUL dialogs need to create a component which implements
* this interface and registers with the Contract ID
* "@mozilla.org/embedui/xpinstall-dialog-service;1"
*
* @status UNDER_REVIEW
*/
[scriptable, uuid(8cdd8baa-1dd2-11b2-909a-f0178da5c5ff)]
interface nsIXPIDialogService : nsISupports
{
/**
* @brief Ask the user if it's OK to install
*
* When called the XPIDialogService implementation should pose an
* install confirmation dialog and return the user's response
*
* @param parent a window that can be used to parent the modal dialog
*
* @param packageList For each install package there will be three strings,
* a display name, a source URL, and a the name of the
* organization that signed this install. Note that the
* name of the signer is not verified. Verification
* happens when the the install has completely downloaded.
* Your user interface should only suggest that the
* install may be signed by this organization name.
* Note that an unsigned archive is indicated by an
* empty string.
*
* @param count The number of strings in the packageList. This
* will always be three times the number of
* packages.
*
* @return true to install, false to cancel
*/
boolean confirmInstall(in nsIDOMWindow parent,
[array, size_is(count)] in wstring packageList,
in unsigned long count);
/**
* @brief Create and open a download-and-install progress dialog
*
* When called the XPIDialogService implementation creates and opens
* a dialog to display the status of the install. When the dialog
* is ready to be used then the observer must be called: the subject
* is an nsIXPIProgressDialog that nsXPInstallManager can use to control
* the dialog, the topic is "xpinstall-progress" and the data is "open".
*
* If the user wishes to cancel the download, the dialog can call the
* observe method with the same subject and topic and the data "cancel".
*
* @note Unless this routine throws an exception the observer <b>must</b>
* be called or nsXPInstallManager will wait forever and never clean
* itself up.
*
* @param packageList three strings per package as in confirmInstall()
* @param count the number of strings in the list
* @param observer nsIObserver to receive messages from the dialog
*/
void openProgressDialog([array, size_is(count)] in wstring packageList,
in unsigned long count,
in nsIObserver observer);
};