Bug 1154435 - [nsDumpUtil] Refine nsDumpUtils::OpenTempFile to make this function more flexible. r=dhylands

- Add one more mode in this function (CREATE/CREATE_UNIQUE)
- export the header file for the usage of other components
This commit is contained in:
Alphan Chen 2015-06-04 14:47:09 +08:00
parent 2cb037411f
commit a7f16b9ea6
3 changed files with 17 additions and 6 deletions

View File

@ -53,6 +53,7 @@ EXPORTS += [
'nscore.h',
'nsCycleCollector.h',
'nsDebugImpl.h',
'nsDumpUtils.h',
'nsError.h',
'nsGZFileWriter.h',
'nsIID.h',

View File

@ -435,7 +435,7 @@ FifoWatcher::OnFileCanReadWithoutBlocking(int aFd)
// Otherwise, it will open a file named aFilename under "NS_OS_TEMP_DIR".
/* static */ nsresult
nsDumpUtils::OpenTempFile(const nsACString& aFilename, nsIFile** aFile,
const nsACString& aFoldername)
const nsACString& aFoldername, Mode aMode)
{
#ifdef ANDROID
// For Android, first try the downloads directory which is world-readable
@ -488,9 +488,13 @@ nsDumpUtils::OpenTempFile(const nsACString& aFilename, nsIFile** aFile,
return rv;
}
rv = file->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0666);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
if (aMode == CREATE_UNIQUE) {
rv = file->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0666);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
} else {
file->Create(nsIFile::NORMAL_FILE_TYPE, 0666);
}
#ifdef ANDROID

View File

@ -180,10 +180,15 @@ private:
#endif // XP_UNIX }
class nsDumpUtils
{
public:
enum Mode {
CREATE,
CREATE_UNIQUE
};
/**
* This function creates a new unique file based on |aFilename| in a
* world-readable temp directory. This is the system temp directory
@ -193,7 +198,8 @@ public:
*/
static nsresult OpenTempFile(const nsACString& aFilename,
nsIFile** aFile,
const nsACString& aFoldername = EmptyCString());
const nsACString& aFoldername = EmptyCString(),
Mode aMode = CREATE_UNIQUE);
};
#endif