Commit 9b13163c authored by dougt%netscape.com's avatar dougt%netscape.com
Browse files

Getting closer to milestone 2. More additions to the functionality of

xpinstall.

This is not part of the build process yet.
parent 2c0336ef
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ interface Install


	long AddSubcomponent(  in wstring regName, 
						   in InstallVersion version, 
						   in wstring version, 
						   in wstring jarSource,         
						   in InstallFolder folder, 
						   in wstring targetName, 
@@ -84,7 +84,7 @@ interface Install
	InstallFolder GetComponentFolder( in wstring regName, 
						              in wstring subdirectory);

	InstallFolder GetFolder(in InstallFolder targetFolder, 
	InstallFolder GetFolder(in wstring targetFolder, 
				            in wstring subdirectory);

	long GetLastError();
@@ -110,7 +110,4 @@ interface Install

	long Uninstall( in wstring packageName);

	long ExtractFileFromJar(in wstring jarfile, in wstring finalFile, out wstring tempFile);


};
 No newline at end of file
+6 −11
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@
#include "nsIScriptContext.h"

class nsIDOMInstallFolder;
class nsIDOMInstallVersion;

#define NS_IDOMINSTALL_IID \
 { 0x18c2f988, 0xb09f, 0x11d2, \
@@ -80,7 +79,7 @@ public:

  NS_IMETHOD    AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn)=0;

  NS_IMETHOD    AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn)=0;
  NS_IMETHOD    AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn)=0;

  NS_IMETHOD    DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn)=0;

@@ -96,7 +95,7 @@ public:

  NS_IMETHOD    GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn)=0;

  NS_IMETHOD    GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn)=0;
  NS_IMETHOD    GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn)=0;

  NS_IMETHOD    GetLastError(PRInt32* aReturn)=0;

@@ -113,8 +112,6 @@ public:
  NS_IMETHOD    StartInstall(const nsString& aUserPackageName, const nsString& aPackageName, const nsString& aVersion, PRInt32 aFlags, PRInt32* aReturn)=0;

  NS_IMETHOD    Uninstall(const nsString& aPackageName, PRInt32* aReturn)=0;

  NS_IMETHOD    ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aReturn)=0;
};


@@ -123,7 +120,7 @@ public:
  NS_IMETHOD    GetRegPackageName(nsString& aRegPackageName);  \
  NS_IMETHOD    AbortInstall();  \
  NS_IMETHOD    AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn);  \
  NS_IMETHOD    AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn);  \
  NS_IMETHOD    AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn);  \
  NS_IMETHOD    DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn);  \
  NS_IMETHOD    DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn);  \
  NS_IMETHOD    DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn);  \
@@ -131,7 +128,7 @@ public:
  NS_IMETHOD    FinalizeInstall(PRInt32* aReturn);  \
  NS_IMETHOD    Gestalt(const nsString& aSelector, PRInt32* aReturn);  \
  NS_IMETHOD    GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn);  \
  NS_IMETHOD    GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn);  \
  NS_IMETHOD    GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn);  \
  NS_IMETHOD    GetLastError(PRInt32* aReturn);  \
  NS_IMETHOD    GetWinProfile(nsIDOMInstallFolder* aFolder, const nsString& aFile, PRInt32* aReturn);  \
  NS_IMETHOD    GetWinRegistry(PRInt32* aReturn);  \
@@ -140,7 +137,6 @@ public:
  NS_IMETHOD    SetPackageFolder(nsIDOMInstallFolder* aFolder);  \
  NS_IMETHOD    StartInstall(const nsString& aUserPackageName, const nsString& aPackageName, const nsString& aVersion, PRInt32 aFlags, PRInt32* aReturn);  \
  NS_IMETHOD    Uninstall(const nsString& aPackageName, PRInt32* aReturn);  \
  NS_IMETHOD    ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aReturn);  \



@@ -149,7 +145,7 @@ public:
  NS_IMETHOD    GetRegPackageName(nsString& aRegPackageName) { return _to##GetRegPackageName(aRegPackageName); } \
  NS_IMETHOD    AbortInstall() { return _to##AbortInstall(); }  \
  NS_IMETHOD    AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn) { return _to##AddDirectory(aRegName, aVersion, aJarSource, aFolder, aSubdir, aForceMode, aReturn); }  \
  NS_IMETHOD    AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn) { return _to##AddSubcomponent(aRegName, aVersion, aJarSource, aFolder, aTargetName, aForceMode, aReturn); }  \
  NS_IMETHOD    AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn) { return _to##AddSubcomponent(aRegName, aVersion, aJarSource, aFolder, aTargetName, aForceMode, aReturn); }  \
  NS_IMETHOD    DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn) { return _to##DeleteComponent(aRegistryName, aReturn); }  \
  NS_IMETHOD    DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn) { return _to##DeleteFile(aFolder, aRelativeFileName, aReturn); }  \
  NS_IMETHOD    DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn) { return _to##DiskSpaceAvailable(aFolder, aReturn); }  \
@@ -157,7 +153,7 @@ public:
  NS_IMETHOD    FinalizeInstall(PRInt32* aReturn) { return _to##FinalizeInstall(aReturn); }  \
  NS_IMETHOD    Gestalt(const nsString& aSelector, PRInt32* aReturn) { return _to##Gestalt(aSelector, aReturn); }  \
  NS_IMETHOD    GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn) { return _to##GetComponentFolder(aRegName, aSubdirectory, aReturn); }  \
  NS_IMETHOD    GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn) { return _to##GetFolder(aTargetFolder, aSubdirectory, aReturn); }  \
  NS_IMETHOD    GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn) { return _to##GetFolder(aTargetFolder, aSubdirectory, aReturn); }  \
  NS_IMETHOD    GetLastError(PRInt32* aReturn) { return _to##GetLastError(aReturn); }  \
  NS_IMETHOD    GetWinProfile(nsIDOMInstallFolder* aFolder, const nsString& aFile, PRInt32* aReturn) { return _to##GetWinProfile(aFolder, aFile, aReturn); }  \
  NS_IMETHOD    GetWinRegistry(PRInt32* aReturn) { return _to##GetWinRegistry(aReturn); }  \
@@ -166,7 +162,6 @@ public:
  NS_IMETHOD    SetPackageFolder(nsIDOMInstallFolder* aFolder) { return _to##SetPackageFolder(aFolder); }  \
  NS_IMETHOD    StartInstall(const nsString& aUserPackageName, const nsString& aPackageName, const nsString& aVersion, PRInt32 aFlags, PRInt32* aReturn) { return _to##StartInstall(aUserPackageName, aPackageName, aVersion, aFlags, aReturn); }  \
  NS_IMETHOD    Uninstall(const nsString& aPackageName, PRInt32* aReturn) { return _to##Uninstall(aPackageName, aReturn); }  \
  NS_IMETHOD    ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aReturn) { return _to##ExtractFileFromJar(aJarfile, aFinalFile, aTempFile, aReturn); }  \


extern nsresult NS_InitInstallClass(nsIScriptContext *aContext, void **aPrototype);
+3 −0
Original line number Diff line number Diff line
@@ -76,6 +76,9 @@ OBJS = \
    .\$(OBJDIR)\nsSoftwareUpdateStream.obj   \
    .\$(OBJDIR)\nsInstallErrorMessages.obj   \
    .\$(OBJDIR)\nsInstallFile.obj   \
    .\$(OBJDIR)\nsInstallDelete.obj   \
    .\$(OBJDIR)\nsInstallExecute.obj   \
    .\$(OBJDIR)\nsInstallPatch.obj   \
    $(NULL)

include <$(DEPTH)\config\rules.mak>
+319 −25
Original line number Diff line number Diff line
@@ -24,12 +24,16 @@
#include "nsIDOMInstallVersion.h"

#include "nsInstallFile.h"
#include "nsInstallDelete.h"
#include "nsInstallExecute.h"


#include "nscore.h"
#include "nsIFactory.h"
#include "nsISupports.h"

#include "nsVector.h"
#include "nsHashtable.h"

#include "prmem.h"
#include "pratom.h"
@@ -41,6 +45,7 @@ static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);

static NS_DEFINE_IID(kIInstall_IID, NS_IDOMINSTALL_IID);
static NS_DEFINE_IID(kIInstallFolder_IID, NS_IDOMINSTALLFOLDER_IID);



@@ -145,18 +150,182 @@ nsInstall::GetRegPackageName(nsString& aRegPackageName)
NS_IMETHODIMP    
nsInstall::AbortInstall()
{
    return NS_OK;
    nsInstallObject* ie;
    if (mInstalledFiles != nsnull) 
    {
        PRUint32 i=0;
        for (i=0; i < mInstalledFiles->GetSize(); i++) 
        {
            ie = (nsInstallObject *)mInstalledFiles->Get(i);
            if (ie == nsnull)
                continue;
            ie->Abort();
        }
    }
    
    CleanUp();
    
    return NS_OK;
}
//FIX:  Should we use empty strings or nulls for parameters that do not need values.
NS_IMETHODIMP    
nsInstall::AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn)
{
    nsInstallFile* ie = nsnull;
    PRInt32 result;
    
    if ( aJarSource == "null" || aFolder == nsnull) 
    {
        *aReturn = SaveError(nsIDOMInstall::SUERR_INVALID_ARGUMENTS);
        return NS_OK;
    }
    
    result = SanityCheck();
    
    if (result != nsIDOMInstall::SU_SUCCESS)
    {
        *aReturn = SaveError( result );
        return NS_OK;
    }
    
    nsString* qualifiedRegName = nsnull;
    
    if ( aRegName == "" ) 
    {
        // Default subName = location in jar file
        qualifiedRegName = GetQualifiedRegName( aJarSource );
    } 
    else 
    {
        qualifiedRegName = GetQualifiedRegName( aRegName );
    }

    if (qualifiedRegName == nsnull)
    {
        *aReturn = SaveError( SUERR_BAD_PACKAGE_NAME );
        return NS_OK;
    }
    
    nsString subdirectory(aSubdir);

    if (subdirectory != "")
    {
        subdirectory.Append("/");
    }

    PRBool bInstall;
    
    nsVector paths;
    
    result = ExtractDirEntries(aJarSource, &paths);
    
    PRInt32  pathsUpperBound = paths.GetUpperBound();

    if (result != nsIDOMInstall::SU_SUCCESS)
    {
        *aReturn = SaveError( result );
        return NS_OK;
    }


    
    for (int i=0; i< pathsUpperBound; i++)
    {
        nsInstallVersion* newVersion = new nsInstallVersion();
            
        nsString *fullRegName = new nsString(*qualifiedRegName);
        fullRegName->Append("/");
        fullRegName->Append(*(nsString *)paths[i]);
        
        char* fullRegNameCString = fullRegName->ToNewCString();
        
        if ( (aForceMode == PR_FALSE) && (aVersion == "null") &&
            (VR_ValidateComponent(fullRegNameCString) == 0))
        {
            VERSION versionStruct;
            VR_GetVersion( fullRegNameCString, &versionStruct);

            //fix: when we have overloading!
            nsInstallVersion* oldVer = new nsInstallVersion();
            oldVer->Init(versionStruct.major,
                         versionStruct.minor,
                         versionStruct.release,
                         versionStruct.build);
             
            
            newVersion->Init(aVersion);
            
            PRInt32 areTheyEqual;
            newVersion->CompareTo(oldVer, &areTheyEqual);
            delete newVersion;

            bInstall = ( areTheyEqual > 0 );
      
            if (oldVer)
		        delete oldVer;
        
        }
        else
        {
            // file doesn't exist or "forced" install
            bInstall = PR_TRUE;
        }
        
        delete fullRegNameCString;
        
        if (bInstall)
        {
            nsString *newJarSource = new nsString(aJarSource);
            newJarSource->Append("/");
            newJarSource->Append(*(nsString *)paths[i]);

            nsString* newSubDir;

            if (subdirectory != "")
            {
                newSubDir = new nsString(subdirectory);
                newSubDir->Append(*(nsString*)paths[i]);
            }
            else
            {
                newSubDir = new nsString(*(nsString*)paths[i]);
            }
            
            ie = new nsInstallFile( this,
                                    *fullRegName,
                                    newVersion,
                                    *newJarSource,
                                    aFolder,
                                    *newSubDir,
                                    aForceMode,
                                    &result);
            delete fullRegName;
            delete newJarSource;
            delete newSubDir;
            delete newVersion;

            if (result == SU_SUCCESS)
            {
                result = ScheduleForInstall( ie );
            }
            else
            {
                delete ie;
            }
        }
    }
    
    if (qualifiedRegName != nsnull)
        delete qualifiedRegName;
    
    *aReturn = SaveError( result );
  
    return NS_OK;
}

NS_IMETHODIMP    
nsInstall::AddSubcomponent(const nsString& aRegName, 
                           nsIDOMInstallVersion* aVersion, 
                           const nsString& aVersion, 
                           const nsString& aJarSource, 
                           nsIDOMInstallFolder* aFolder, 
                           const nsString& aTargetName, 
@@ -164,13 +333,14 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
                           PRInt32* aReturn)
{
    nsInstallFile*  ie;
    nsString*       qualifiedRegName;
    nsString*       qualifiedRegName = nsnull;
    
    PRInt32         errcode = SU_SUCCESS;
    
    if ( aJarSource == "null" || aFolder == nsnull) 
    {
        return nsIDOMInstall::SUERR_INVALID_ARGUMENTS;
        *aReturn = SaveError( nsIDOMInstall::SUERR_INVALID_ARGUMENTS );
        return NS_OK;
    }
    
    PRInt32 result = SanityCheck();
@@ -200,10 +370,13 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
    
    /* Check for existence of the newer	version	*/
    
    nsInstallVersion *newVersion = new nsInstallVersion();
    newVersion->Init(aVersion);

    PRBool versionNewer = PR_FALSE;
    char* qualifiedRegNameString = qualifiedRegName->ToNewCString();

    if ( (aForceMode == PR_FALSE ) && (aVersion !=  nsnull) && ( VR_ValidateComponent( qualifiedRegNameString ) == 0 ) ) 
    if ( (aForceMode == PR_FALSE ) && (aVersion !=  "null") && ( VR_ValidateComponent( qualifiedRegNameString ) == 0 ) ) 
    {
        VERSION versionStruct;
        
@@ -217,7 +390,7 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
                         versionStruct.build);

        PRInt32 areTheyEqual;
        aVersion->CompareTo((nsInstallVersion*)oldVersion, &areTheyEqual);
        newVersion->CompareTo((nsInstallVersion*)oldVersion, &areTheyEqual);
        
        if ( areTheyEqual != nsIDOMInstallVersion::SU_EQUAL )
            versionNewer = PR_TRUE;
@@ -236,41 +409,93 @@ nsInstall::AddSubcomponent(const nsString& aRegName,

    if (versionNewer) 
    {
        PRInt32 error;
    
        ie = new nsInstallFile( this, 
                                *qualifiedRegName, 
                                aVersion, 
                                newVersion, 
                                aJarSource,
                                aFolder,
                                aTargetName, 
                                aForceMode, 
                                &error );
                                &errcode );

        if (error == SU_SUCCESS) 
        if (errcode == SU_SUCCESS) 
        {
            error = ScheduleForInstall( ie );
            errcode = ScheduleForInstall( ie );
        }
    
        if (error != SU_SUCCESS) 
        else
        {
            *aReturn = SaveError( error );
            return NS_OK;
            delete ie;
        }    
    }
    
    if (qualifiedRegName != nsnull)
        delete qualifiedRegName;

    if (newVersion != nsnull)
        delete newVersion;

    *aReturn = SaveError( errcode );
    return NS_OK;
}

NS_IMETHODIMP    
nsInstall::DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn)
{
    PRInt32 result = SanityCheck();

    if (result != nsIDOMInstall::SU_SUCCESS)
    {
        *aReturn = SaveError( result );
        return NS_OK;
    }

    
    nsString* qualifiedRegName = GetQualifiedRegName( aRegistryName);
    
    if (qualifiedRegName == nsnull)
    {
        *aReturn = SaveError( SUERR_BAD_PACKAGE_NAME );
        return NS_OK;
    }
    
    nsInstallDelete* id = new nsInstallDelete(this, NULL, *qualifiedRegName, &result);
    if (result == SU_SUCCESS) 
    {
        result = ScheduleForInstall( id );
    }
    
    delete qualifiedRegName;

    *aReturn = SaveError(result);

    return NS_OK;
}

NS_IMETHODIMP    
nsInstall::DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn)
{
    PRInt32 result = SanityCheck();

    if (result != nsIDOMInstall::SU_SUCCESS)
    {
        *aReturn = SaveError( result );
        return NS_OK;
    }
   
    nsInstallDelete* id = new nsInstallDelete(this, aFolder, aRelativeFileName, &result);

    if (result == SU_SUCCESS) 
    {
        result = ScheduleForInstall( id );
    }
        
    if (result == SUERR_FILE_DOES_NOT_EXIST) 
    {
        result = SU_SUCCESS;
    }

    *aReturn = SaveError(result);

    return NS_OK;
}

@@ -283,6 +508,22 @@ nsInstall::DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn)
NS_IMETHODIMP    
nsInstall::Execute(const nsString& aJarSource, const nsString& aArgs, PRInt32* aReturn)
{
    PRInt32 result = SanityCheck();

    if (result != nsIDOMInstall::SU_SUCCESS)
    {
        *aReturn = SaveError( result );
        return NS_OK;
    }
   nsInstallExecute* ie = new nsInstallExecute(this, aJarSource, aArgs, &result);

    if (result == SU_SUCCESS) 
    {
        result = ScheduleForInstall( ie );
    }
        
    *aReturn = SaveError(result);

    return NS_OK;
}

@@ -348,24 +589,41 @@ nsInstall::FinalizeInstall(PRInt32* aReturn)
NS_IMETHODIMP    
nsInstall::Gestalt(const nsString& aSelector, PRInt32* aReturn)
{
    *aReturn = nsnull;
    return NS_OK;    
}

NS_IMETHODIMP    
nsInstall::GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder)
{
    *aFolder = nsnull;
    return NS_OK;
}

NS_IMETHODIMP    
nsInstall::GetFolder(nsIDOMInstallFolder* targetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder)
nsInstall::GetFolder(const nsString& targetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder)
{
    nsInstallFolder* spec = nsnull;
    *aFolder = nsnull;

// FIX: What was this for?    if ((! targetFolder.EqualsIgnoreCase("Installed")) && (! targetFolder.EqualsIgnoreCase("file:///")) )
    {
        spec = new nsInstallFolder();
        spec->Init(targetFolder, aSubdirectory, mUserPackageName);   
    }

     nsresult result =  spec->QueryInterface(kIInstallFolder_IID, (void**)aFolder);
     
     if (result != NS_OK)
        *aFolder = nsnull;

     return NS_OK;    
}

NS_IMETHODIMP    
nsInstall::GetLastError(PRInt32* aReturn)
{
    *aReturn = mLastError;
    return NS_OK;
}

@@ -458,9 +716,10 @@ nsInstall::StartInstall(const nsString& aUserPackageName, const nsString& aPacka
        delete mVersionInfo;

    mVersionInfo    = new nsInstallVersion();
    mVersionInfo->Init(aVersion); /* this will go away when we have params in constructs in XPCOM */
    mVersionInfo->Init(aVersion);

    mInstalledFiles = new nsVector();
    mPatchList      = new nsHashtable();

    /* this function should also check security!!! */
    *aReturn = OpenJARFile();
@@ -515,12 +774,34 @@ nsInstall::Uninstall(const nsString& aPackageName, PRInt32* aReturn)
    return NS_OK;
}

NS_IMETHODIMP    
////////////////////////////////////////

PRInt32    
nsInstall::ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* error)
{
    *error = SU_SUCCESS;
    return NS_OK;
}


void       
nsInstall::AddPatch(nsHashKey *aKey, nsString* fileName)
{
    if (mPatchList != nsnull)
    {
        mPatchList->Put(aKey, fileName);
    }
}

void       
nsInstall::GetPatch(nsHashKey *aKey, nsString* fileName)
{
    if (mPatchList != nsnull)
    {
        fileName = (nsString*) mPatchList->Get(aKey);
    }
}

/////////////////////////////////////////////////////////////////////////
// Private Methods
/////////////////////////////////////////////////////////////////////////
@@ -673,7 +954,7 @@ nsInstall::GetQualifiedRegName(const nsString& name )
        if (mUserPackageName != "")
        {
            qualifiedRegName = new nsString(mUserPackageName);
            qualifiedRegName += '/';
            qualifiedRegName->Append("/");
            qualifiedRegName->Append(name);
        }
        else
@@ -790,6 +1071,12 @@ nsInstall::CleanUp(void)
        mInstalledFiles = nsnull;
    }

    if (mPatchList)
    {
        // do I need to delete every entry?
        delete mPatchList;
    }
    
    mPackageName = ""; // used to see if StartInstall() has been called

    //CloseProgressDialog();
@@ -805,6 +1092,13 @@ void
nsInstall::CloseJARFile(void)
{
}

PRInt32 
nsInstall::ExtractDirEntries(const nsString& directory, nsVector *paths)
{
    return SU_SUCCESS;
}

/////////////////////////////////////////////////////////////////////////
// 
/////////////////////////////////////////////////////////////////////////
+13 −6
Original line number Diff line number Diff line
@@ -8,15 +8,17 @@
#include "nsIScriptObjectOwner.h"

#include "nsVector.h"
#include "nsHashtable.h"

#include "nsIDOMInstall.h"
#include "nsInstallObject.h"

#include "nsSoftwareUpdate.h"

#include "nsInstallFolder.h"
#include "nsInstallVersion.h"

#include "nsInstallObject.h"

class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
{
    public:
@@ -35,7 +37,7 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall

        NS_IMETHOD    AbortInstall();
        NS_IMETHOD    AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn);
        NS_IMETHOD    AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn);
        NS_IMETHOD    AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn);
        NS_IMETHOD    DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn);
        NS_IMETHOD    DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn);
        NS_IMETHOD    DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn);
@@ -43,7 +45,7 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
        NS_IMETHOD    FinalizeInstall(PRInt32* aReturn);
        NS_IMETHOD    Gestalt(const nsString& aSelector, PRInt32* aReturn);
        NS_IMETHOD    GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder);
        NS_IMETHOD    GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder);
        NS_IMETHOD    GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder);
        NS_IMETHOD    GetLastError(PRInt32* aReturn);
        NS_IMETHOD    GetWinProfile(nsIDOMInstallFolder* aFolder, const nsString& aFile, PRInt32* aReturn);
        NS_IMETHOD    GetWinRegistry(PRInt32* aReturn);
@@ -54,9 +56,10 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
        NS_IMETHOD    Uninstall(const nsString& aPackageName, PRInt32* aReturn);
        

/*needs to be noscript*/
        NS_IMETHOD    ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aError);

        PRInt32    ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aError);
        void       AddPatch(nsHashKey *aKey, nsString* fileName);
        void       GetPatch(nsHashKey *aKey, nsString* fileName);

    private:
        void *mScriptObject;
@@ -72,7 +75,9 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall

        nsInstallVersion*   mVersionInfo;        /* Component version info */
        nsInstallFolder*    mPackageFolder;
        
        nsVector*           mInstalledFiles;        
        nsHashtable*        mPatchList;

        PRInt32             mLastError;

@@ -89,9 +94,11 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall

        PRInt32     OpenJARFile(void);
        void        CloseJARFile(void);
        PRInt32     ExtractDirEntries(const nsString& directory, nsVector *paths);

        PRInt32     ScheduleForInstall(nsInstallObject* ob);
        

};


Loading