Bug 237231 make xpistub interface description and implementation agree

patch by ajschult@mindspring.com r=bsmedberg sr=dveditz
This commit is contained in:
timeless%mozdev.org 2004-04-25 18:37:44 +00:00
Родитель 8d004584b6
Коммит fb3cd5fd6b
2 изменённых файлов: 18 добавлений и 178 удалений

Просмотреть файл

@ -70,11 +70,6 @@
#define COMPONENT_REG "component.reg"
#endif
#ifdef XP_MAC
#define COMPONENT_REG "\pComponent Registry"
#include "MoreFilesExtras.h"
#endif
#ifdef XP_UNIX
#include <unistd.h>
#define COMPONENT_REG "component.reg"
@ -97,34 +92,16 @@ PRInt32 gInstallStatus;
//------------------------------------------------------------------------
// XPI_Init()
//------------------------------------------------------------------------
PR_PUBLIC_API(nsresult) XPI_Init(
#ifdef XP_MAC
const FSSpec& aXPIStubDir,
const FSSpec& aProgramDir,
#else
const char* aProgramDir,
#endif
const char* aLogName,
pfnXPIProgress progressCB )
PR_PUBLIC_API(nsresult) XPI_Init( const char* aProgramDir,
const char* aLogName,
pfnXPIProgress progressCB )
{
nsresult rv;
//--------------------------------------------------------------------
// Initialize XPCOM and AutoRegister() its components
//--------------------------------------------------------------------
#ifdef XP_MAC
nsCOMPtr<nsILocalFileMac> binDir;
rv = NS_NewLocalFileWithFSSpec((FSSpec*)&aXPIStubDir, PR_FALSE, getter_AddRefs(binDir));
if (NS_FAILED(rv)) return rv;
rv = NS_InitXPCOM2(&gServiceMgr, binDir, nsnull);
// binDir is contaminated now. Need compDir to pass to AutoRegister.
nsCOMPtr<nsILocalFileMac> compDir;
rv = NS_NewLocalFileWithFSSpec((FSSpec*)&aXPIStubDir, PR_FALSE, getter_AddRefs(compDir));
if (NS_FAILED(rv)) return rv;
#elif defined(XP_WIN) || defined(XP_OS2)
#if defined(XP_WIN) || defined(XP_OS2)
#ifdef XP_OS2_EMX
char componentPath[MAX_PATH];
@ -173,7 +150,7 @@ PR_PUBLIC_API(nsresult) XPI_Init(
nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(gServiceMgr);
NS_ASSERTION(registrar, "Null nsIComponentRegistrar");
#if defined(XP_UNIX) || defined(XP_MAC)
#if defined(XP_UNIX)
rv = registrar->AutoRegister(compDir);
#else
rv = registrar->AutoRegister(nsnull);
@ -204,14 +181,19 @@ PR_PUBLIC_API(nsresult) XPI_Init(
nsCOMPtr<nsPIXPIStubHook> hook = do_QueryInterface(gXPI);
nsCOMPtr<nsILocalFile> iDirSpec;
#if XP_MAC
nsCOMPtr<nsILocalFileMac> iMacDirSpec;
NS_NewLocalFileWithFSSpec((FSSpec *)&aProgramDir, PR_TRUE, getter_AddRefs(iMacDirSpec));
iDirSpec = do_QueryInterface(iMacDirSpec);
#else
if (aProgramDir)
{
NS_NewNativeLocalFile(nsDependentCString(aProgramDir), PR_TRUE, getter_AddRefs(iDirSpec));
#endif
}
else
{
nsCOMPtr<nsIProperties> directoryService =
do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
directoryService->Get(NS_XPCOM_CURRENT_PROCESS_DIR, NS_GET_IID(nsILocalFile),
getter_AddRefs(iDirSpec));
}
if (hook && iDirSpec)
{
rv = hook->StubInitialize( iDirSpec, aLogName );
@ -261,11 +243,7 @@ PR_PUBLIC_API(void) XPI_Exit()
// XPI_Install()
//------------------------------------------------------------------------
PR_PUBLIC_API(PRInt32) XPI_Install(
#ifdef XP_MAC
const FSSpec& aFile,
#else
const char* aFile,
#endif
const char* aArgs,
long aFlags )
{
@ -275,13 +253,7 @@ PR_PUBLIC_API(PRInt32) XPI_Install(
gInstallStatus = -322; // unique stub error code
#if XP_MAC
nsCOMPtr<nsILocalFileMac> iMacFile;
NS_NewLocalFileWithFSSpec((FSSpec *)&aFile, PR_TRUE, getter_AddRefs(iMacFile));
iFile = do_QueryInterface(iMacFile);
#else
NS_NewNativeLocalFile(nsDependentCString(aFile), PR_TRUE, getter_AddRefs(iFile));
#endif
NS_NewNativeLocalFile(nsDependentCString(aFile), PR_TRUE, getter_AddRefs(iFile));
if (iFile && gXPI)
rv = gXPI->InstallJar( iFile,

Просмотреть файл

@ -1,132 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** 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 Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* 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 of 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 "nsError.h"
#include "prtypes.h"
#ifdef XP_MAC
#include <Files.h>
#endif
PR_BEGIN_EXTERN_C
/** pfnXPIStart -- script start callback
*
* When an install script gets to StartInstall() this function
* will be called to tell the observer the pretty-name of the
* install package. You are not guaranteed this will be called
* for all scripts--there might be a fatal error before it gets
* to StartInstall(), either in the script itself or in the
* engine trying to set up for it.
*/
typedef void (*pfnXPIStart) (const char* URL, const char* UIName);
/** pfnXPIProgress -- individual install item callback
*
* This callback will be called twice for each installed item,
* First when it is scheduled (val and max will both be 0) and
* then during the finalize step.
*/
typedef void (*pfnXPIProgress)(const char* msg, PRInt32 val, PRInt32 max);
/** pfnXPIFinal -- script end callback
*
* This function will be called when the script calls either
* AbortInstall() or FinalizeInstall() and will return the
* last error code.
*/
typedef void (*pfnXPIFinal) (const char* URL, PRInt32 finalStatus);
/** XPI_Init
*
* call XPI_Init() to initialize XPCOM and the XPInstall
* engine, and to pass in your callback functions.
*
* @param aXPIStubDir [MAC only] directory of the xpistub shlb off of which
* the component manager derives the components directory.
* @param aProgramDir directory to use as "program" directory. If NULL default
* will be used -- the location of the calling executable.
* Must be native filename format.
* @param startCB Called when script started
* @param progressCB Called for each installed file
* @param finalCB Called with status code at end
*
* @returns XPCOM status code indicating success or failure
*/
PR_EXTERN(nsresult) XPI_Init(
#ifdef XP_MAC
const FSSpec& aXPIStubDir,
const FSSpec& aProgramDir,
#else
const char* aProgramDir,
#endif
const char* aLogName,
pfnXPIProgress progressCB );
/** XPI_Install
*
* Install an XPI package from a local file
*
* @param file Native filename of XPI archive
* @param args Install.arguments, if any
* @param flags the old SmartUpdate trigger flags. This may go away
*
* @returns status Status from the installed archive
*/
PR_EXTERN(PRInt32) XPI_Install(
#ifdef XP_MAC
const FSSpec& file,
#else
const char* file,
#endif
const char* args,
long flags );
/** XPI_Exit
*
* call when done to shut down the XPInstall and XPCOM engines
* and free allocated memory
*/
PR_EXTERN(void) XPI_Exit();
PR_END_EXTERN_C