зеркало из https://github.com/mozilla/pjs.git
Backend plumbin fix for bugs 17505 and 20046 r=dveditz
This commit is contained in:
Родитель
76e1e4e8f5
Коммит
b5779529a9
|
@ -285,7 +285,7 @@ nsInstall::AddDirectory(const nsString& aRegName,
|
||||||
const nsString& aJarSource,
|
const nsString& aJarSource,
|
||||||
nsInstallFolder *aFolder,
|
nsInstallFolder *aFolder,
|
||||||
const nsString& aSubdir,
|
const nsString& aSubdir,
|
||||||
PRBool aForceMode,
|
PRInt32 aMode,
|
||||||
PRInt32* aReturn)
|
PRInt32* aReturn)
|
||||||
{
|
{
|
||||||
nsInstallFile* ie = nsnull;
|
nsInstallFile* ie = nsnull;
|
||||||
|
@ -394,7 +394,7 @@ nsInstall::AddDirectory(const nsString& aRegName,
|
||||||
newJarSource,
|
newJarSource,
|
||||||
aFolder,
|
aFolder,
|
||||||
newSubDir,
|
newSubDir,
|
||||||
aForceMode,
|
aMode,
|
||||||
&result);
|
&result);
|
||||||
|
|
||||||
if (ie == nsnull)
|
if (ie == nsnull)
|
||||||
|
@ -433,7 +433,7 @@ nsInstall::AddDirectory(const nsString& aRegName,
|
||||||
aJarSource,
|
aJarSource,
|
||||||
aFolder,
|
aFolder,
|
||||||
aSubdir,
|
aSubdir,
|
||||||
PR_FALSE,
|
INSTALL_NO_COMPARE,
|
||||||
aReturn);
|
aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -449,7 +449,7 @@ nsInstall::AddDirectory(const nsString& aRegName,
|
||||||
aJarSource,
|
aJarSource,
|
||||||
aFolder,
|
aFolder,
|
||||||
aSubdir,
|
aSubdir,
|
||||||
PR_FALSE,
|
INSTALL_NO_COMPARE,
|
||||||
aReturn);
|
aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -468,7 +468,7 @@ nsInstall::AddDirectory(const nsString& aJarSource,
|
||||||
aJarSource,
|
aJarSource,
|
||||||
mPackageFolder,
|
mPackageFolder,
|
||||||
"",
|
"",
|
||||||
PR_FALSE,
|
INSTALL_NO_COMPARE,
|
||||||
aReturn);
|
aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
||||||
const nsString& aJarSource,
|
const nsString& aJarSource,
|
||||||
nsInstallFolder *aFolder,
|
nsInstallFolder *aFolder,
|
||||||
const nsString& aTargetName,
|
const nsString& aTargetName,
|
||||||
PRBool aForceMode,
|
PRInt32 aMode,
|
||||||
PRInt32* aReturn)
|
PRInt32* aReturn)
|
||||||
{
|
{
|
||||||
nsInstallFile* ie;
|
nsInstallFile* ie;
|
||||||
|
@ -538,7 +538,7 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
||||||
aJarSource,
|
aJarSource,
|
||||||
aFolder,
|
aFolder,
|
||||||
tempTargetName,
|
tempTargetName,
|
||||||
aForceMode,
|
aMode,
|
||||||
&errcode );
|
&errcode );
|
||||||
|
|
||||||
if (ie == nsnull)
|
if (ie == nsnull)
|
||||||
|
@ -573,7 +573,7 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
||||||
aJarSource,
|
aJarSource,
|
||||||
aFolder,
|
aFolder,
|
||||||
aTargetName,
|
aTargetName,
|
||||||
PR_FALSE,
|
INSTALL_NO_COMPARE,
|
||||||
aReturn);
|
aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -606,7 +606,7 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
||||||
aJarSource,
|
aJarSource,
|
||||||
aFolder,
|
aFolder,
|
||||||
aTargetName,
|
aTargetName,
|
||||||
PR_FALSE,
|
INSTALL_NO_COMPARE,
|
||||||
aReturn);
|
aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -641,7 +641,7 @@ nsInstall::AddSubcomponent(const nsString& aJarSource,
|
||||||
aJarSource,
|
aJarSource,
|
||||||
mPackageFolder,
|
mPackageFolder,
|
||||||
"",
|
"",
|
||||||
PR_FALSE,
|
INSTALL_NO_COMPARE,
|
||||||
aReturn);
|
aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,6 @@
|
||||||
#include "nsIEnumerator.h"
|
#include "nsIEnumerator.h"
|
||||||
#include "nsIZipReader.h"
|
#include "nsIZipReader.h"
|
||||||
|
|
||||||
|
|
||||||
class nsInstallInfo
|
class nsInstallInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -185,12 +184,12 @@ class nsInstall
|
||||||
|
|
||||||
PRInt32 AbortInstall(PRInt32 aErrorNumber);
|
PRInt32 AbortInstall(PRInt32 aErrorNumber);
|
||||||
|
|
||||||
PRInt32 AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn);
|
PRInt32 AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder* aFolder, const nsString& aSubdir, PRInt32 aMode, PRInt32* aReturn);
|
||||||
PRInt32 AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder* aFolder, const nsString& aSubdir, PRInt32* aReturn);
|
PRInt32 AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder* aFolder, const nsString& aSubdir, PRInt32* aReturn);
|
||||||
PRInt32 AddDirectory(const nsString& aRegName, const nsString& aJarSource, nsInstallFolder* aFolder, const nsString& aSubdir, PRInt32* aReturn);
|
PRInt32 AddDirectory(const nsString& aRegName, const nsString& aJarSource, nsInstallFolder* aFolder, const nsString& aSubdir, PRInt32* aReturn);
|
||||||
PRInt32 AddDirectory(const nsString& aJarSource, PRInt32* aReturn);
|
PRInt32 AddDirectory(const nsString& aJarSource, PRInt32* aReturn);
|
||||||
|
|
||||||
PRInt32 AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder *aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn);
|
PRInt32 AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder *aFolder, const nsString& aTargetName, PRInt32 aMode, PRInt32* aReturn);
|
||||||
PRInt32 AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder *aFolder, const nsString& aTargetName, PRInt32* aReturn);
|
PRInt32 AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsInstallFolder *aFolder, const nsString& aTargetName, PRInt32* aReturn);
|
||||||
PRInt32 AddSubcomponent(const nsString& aRegName, const nsString& aJarSource, nsInstallFolder *aFolder, const nsString& aTargetName, PRInt32* aReturn);
|
PRInt32 AddSubcomponent(const nsString& aRegName, const nsString& aJarSource, nsInstallFolder *aFolder, const nsString& aTargetName, PRInt32* aReturn);
|
||||||
PRInt32 AddSubcomponent(const nsString& aJarSource, PRInt32* aReturn);
|
PRInt32 AddSubcomponent(const nsString& aJarSource, PRInt32* aReturn);
|
||||||
|
@ -267,7 +266,6 @@ class nsInstall
|
||||||
|
|
||||||
PRInt32 SaveError(PRInt32 errcode);
|
PRInt32 SaveError(PRInt32 errcode);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
JSObject* mScriptObject;
|
JSObject* mScriptObject;
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ nsInstallFile::nsInstallFile(nsInstall* inInstall,
|
||||||
const nsString& inJarLocation,
|
const nsString& inJarLocation,
|
||||||
nsInstallFolder *folderSpec,
|
nsInstallFolder *folderSpec,
|
||||||
const nsString& inPartialPath,
|
const nsString& inPartialPath,
|
||||||
PRBool forceInstall,
|
PRInt32 mode,
|
||||||
PRInt32 *error)
|
PRInt32 *error)
|
||||||
: nsInstallObject(inInstall),
|
: nsInstallObject(inInstall),
|
||||||
mVersionInfo(nsnull),
|
mVersionInfo(nsnull),
|
||||||
|
@ -58,7 +58,7 @@ nsInstallFile::nsInstallFile(nsInstall* inInstall,
|
||||||
mExtractedFile(nsnull),
|
mExtractedFile(nsnull),
|
||||||
mFinalFile(nsnull),
|
mFinalFile(nsnull),
|
||||||
mVersionRegistryName(nsnull),
|
mVersionRegistryName(nsnull),
|
||||||
mForceInstall(forceInstall),
|
mMode(mode),
|
||||||
mReplaceFile(PR_FALSE),
|
mReplaceFile(PR_FALSE),
|
||||||
mChildFile(PR_TRUE),
|
mChildFile(PR_TRUE),
|
||||||
mUpgradeFile(PR_FALSE),
|
mUpgradeFile(PR_FALSE),
|
||||||
|
@ -86,7 +86,8 @@ nsInstallFile::nsInstallFile(nsInstall* inInstall,
|
||||||
// IFF it's not force, AND the new file has a version, AND it's been
|
// IFF it's not force, AND the new file has a version, AND it's been
|
||||||
// previously installed, THEN we have to do the version comparing foo.
|
// previously installed, THEN we have to do the version comparing foo.
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
if ( (forceInstall == PR_FALSE ) && (inVInfo != "") && ( VR_ValidateComponent( qualifiedRegNameString ) == 0 ) )
|
if ( !(mode & INSTALL_NO_COMPARE ) && (inVInfo != "") &&
|
||||||
|
( VR_ValidateComponent( qualifiedRegNameString ) == 0 ) )
|
||||||
{
|
{
|
||||||
nsInstallVersion *newVersion = new nsInstallVersion();
|
nsInstallVersion *newVersion = new nsInstallVersion();
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,13 @@
|
||||||
#include "nsInstall.h"
|
#include "nsInstall.h"
|
||||||
#include "nsInstallVersion.h"
|
#include "nsInstallVersion.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Global defines for file handling mode bitfield values */
|
||||||
|
#define INSTALL_NO_COMPARE 0x1
|
||||||
|
#define INSTALL_IF_NEWER 0x2
|
||||||
|
#define INSTALL_IF_EQUAL_OR_NEWER 0x4
|
||||||
|
|
||||||
|
|
||||||
class nsInstallFile : public nsInstallObject
|
class nsInstallFile : public nsInstallObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -55,7 +62,7 @@ class nsInstallFile : public nsInstallObject
|
||||||
const nsString& inJarLocation,
|
const nsString& inJarLocation,
|
||||||
nsInstallFolder *folderSpec,
|
nsInstallFolder *folderSpec,
|
||||||
const nsString& inPartialPath,
|
const nsString& inPartialPath,
|
||||||
PRBool forceInstall,
|
PRInt32 mode,
|
||||||
PRInt32 *error);
|
PRInt32 *error);
|
||||||
|
|
||||||
virtual ~nsInstallFile();
|
virtual ~nsInstallFile();
|
||||||
|
@ -86,9 +93,13 @@ class nsInstallFile : public nsInstallObject
|
||||||
PRBool mUpgradeFile; /* whether file is an upgrade */
|
PRBool mUpgradeFile; /* whether file is an upgrade */
|
||||||
PRBool mSkipInstall; /* if true don't install this file */
|
PRBool mSkipInstall; /* if true don't install this file */
|
||||||
|
|
||||||
|
PRInt32 mMode; /* an integer used like a bitfield to control *
|
||||||
|
* how a file is installed or registered */
|
||||||
|
|
||||||
PRInt32 CompleteFileMove();
|
PRInt32 CompleteFileMove();
|
||||||
PRInt32 RegisterInVersionRegistry();
|
PRInt32 RegisterInVersionRegistry();
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* nsInstallFile_h__ */
|
#endif /* nsInstallFile_h__ */
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
#include "nsString.h"
|
#include "nsString.h"
|
||||||
#include "nsInstall.h"
|
#include "nsInstall.h"
|
||||||
|
#include "nsInstallFile.h"
|
||||||
|
|
||||||
#include "nsIDOMInstallVersion.h"
|
#include "nsIDOMInstallVersion.h"
|
||||||
|
|
||||||
|
@ -389,7 +390,7 @@ InstallAddDirectory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval
|
||||||
nsAutoString b4;
|
nsAutoString b4;
|
||||||
JSObject *jsObj;
|
JSObject *jsObj;
|
||||||
nsInstallFolder *folder;
|
nsInstallFolder *folder;
|
||||||
PRBool b5;
|
PRInt32 b5;
|
||||||
|
|
||||||
*rval = INT_TO_JSVAL(nsInstall::UNEXPECTED_ERROR);
|
*rval = INT_TO_JSVAL(nsInstall::UNEXPECTED_ERROR);
|
||||||
|
|
||||||
|
@ -512,11 +513,21 @@ InstallAddDirectory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ConvertJSValToBool(&b5, cx, argv[5]))
|
if(JSVAL_IS_BOOLEAN(argv[5])) //Old form of the AddDirectory took a boolean
|
||||||
|
{
|
||||||
|
b5 = JSVAL_TO_BOOLEAN(argv[5]);
|
||||||
|
if( b5 == PR_TRUE )
|
||||||
|
b5 = INSTALL_NO_COMPARE; //convert to values that mean something in the bit field
|
||||||
|
else
|
||||||
|
b5 = INSTALL_IF_NEWER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!(b5 = JSVAL_TO_INT(argv[5]))) //File handling bit field
|
||||||
{
|
{
|
||||||
return JS_FALSE;
|
return JS_FALSE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
folder = (nsInstallFolder*)JS_GetPrivate(cx, jsObj);
|
folder = (nsInstallFolder*)JS_GetPrivate(cx, jsObj);
|
||||||
|
|
||||||
|
@ -552,7 +563,7 @@ InstallAddSubcomponent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js
|
||||||
nsAutoString b4;
|
nsAutoString b4;
|
||||||
JSObject* jsObj;
|
JSObject* jsObj;
|
||||||
nsInstallFolder* folder;
|
nsInstallFolder* folder;
|
||||||
PRBool b5;
|
PRInt32 b5;
|
||||||
|
|
||||||
*rval = INT_TO_JSVAL(nsInstall::UNEXPECTED_ERROR);
|
*rval = INT_TO_JSVAL(nsInstall::UNEXPECTED_ERROR);
|
||||||
|
|
||||||
|
@ -590,11 +601,21 @@ InstallAddSubcomponent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ConvertJSValToBool(&b5, cx, argv[5]))
|
if(JSVAL_IS_BOOLEAN(argv[5])) //Old form of the AddSubComponent took a boolean
|
||||||
|
{
|
||||||
|
b5 = JSVAL_TO_BOOLEAN(argv[5]);
|
||||||
|
if( b5 == PR_TRUE )
|
||||||
|
b5 = INSTALL_NO_COMPARE; //convert to values that mean something in the bit field
|
||||||
|
else
|
||||||
|
b5 = INSTALL_IF_NEWER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!(b5 = JSVAL_TO_INT(argv[5]))) //File handling bit field
|
||||||
{
|
{
|
||||||
return JS_FALSE;
|
return JS_FALSE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
folder = (nsInstallFolder*)JS_GetPrivate(cx, jsObj);
|
folder = (nsInstallFolder*)JS_GetPrivate(cx, jsObj);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче