bug 380421 - get crash reporter params from nsXULAppInfo. r=bsmedberg

This commit is contained in:
ted.mielczarek%gmail.com 2007-07-25 01:06:43 +00:00
Родитель 8ecfc976fc
Коммит 875f7deebb
7 изменённых файлов: 42 добавлений и 32 удалений

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

@ -39,6 +39,8 @@
#include "crashreporter.h"
// Disable exception handler warnings.
#pragma warning( disable : 4530 )
#include <fstream>
#include <sstream>
@ -53,12 +55,9 @@ StringTable gStrings;
int gArgc;
const char** gArgv;
static string gSendURL;
static string gDumpFile;
static string gExtraFile;
static string gSettingsPath;
static bool gDeleteDump = true;
static string kExtraDataExtension = ".extra";
@ -98,11 +97,6 @@ static bool ReadConfig()
if (!ReadStringsFromFile(iniPath, gStrings))
return false;
gSendURL = gStrings["URL"];
string deleteSetting = gStrings["Delete"];
gDeleteDump = deleteSetting.empty() || atoi(deleteSetting.c_str()) != 0;
return true;
}
@ -196,12 +190,10 @@ bool CrashReporterSendCompleted(bool success,
const string& serverResponse)
{
if (success) {
if (gDeleteDump) {
if (!gDumpFile.empty())
UIDeleteFile(gDumpFile);
if (!gExtraFile.empty())
UIDeleteFile(gExtraFile);
}
if (!gDumpFile.empty())
UIDeleteFile(gDumpFile);
if (!gExtraFile.empty())
UIDeleteFile(gExtraFile);
return AddSubmittedReport(serverResponse);
}
@ -246,6 +238,11 @@ int main(int argc, const char** argv)
return 0;
}
if (queryParameters.find("ServerURL") == queryParameters.end()) {
UIError("No server URL specified");
return 0;
}
string product = queryParameters["ProductName"];
string vendor = queryParameters["Vendor"];
if (!UIGetSettingsPath(vendor, product, gSettingsPath)) {
@ -259,7 +256,19 @@ int main(int argc, const char** argv)
return 0;
}
UIShowCrashUI(gDumpFile, queryParameters, gSendURL);
string sendURL = queryParameters["ServerURL"];
// we don't need to actually send this
queryParameters.erase("ServerURL");
// allow override of the server url via environment variable
//XXX: remove this in the far future when our robot
// masters force everyone to use XULRunner
char* urlEnv = getenv("MOZ_CRASHREPORTER_URL");
if (urlEnv && *urlEnv) {
sendURL = urlEnv;
}
UIShowCrashUI(gDumpFile, queryParameters, sendURL);
}
UIShutdown();

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

@ -1,6 +1,9 @@
#ifndef CRASHREPORTER_H__
#define CRASHREPORTER_H__
#pragma warning( push )
// Disable exception handler warnings.
#pragma warning( disable : 4530 )
#include <string>
#include <map>
#include <stdlib.h>
@ -71,4 +74,5 @@ bool UIEnsurePathExists(const std::string& path);
bool UIMoveFile(const std::string& oldfile, const std::string& newfile);
bool UIDeleteFile(const std::string& oldfile);
#pragma warning( pop )
#endif

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

@ -14,6 +14,3 @@ SubmitSuccess=Crash report submitted successfully
SubmitFailed=Failed to submit crash report
CrashID=Crash ID: %s
CrashDetailsURL=You can view details of this crash at %s
[Settings]
URL=https://crash-reports.mozilla.com/submit

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

@ -430,10 +430,11 @@ bool UIEnsurePathExists(const string& path)
bool UIMoveFile(const string& oldfile, const string& newfile)
{
return MoveFile(UTF8ToWide(oldfile).c_str(), UTF8ToWide(newfile).c_str());
return MoveFile(UTF8ToWide(oldfile).c_str(), UTF8ToWide(newfile).c_str())
== TRUE;
}
bool UIDeleteFile(const string& oldfile)
{
return DeleteFile(UTF8ToWide(oldfile).c_str());
return DeleteFile(UTF8ToWide(oldfile).c_str()) == TRUE;
}

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

@ -288,21 +288,14 @@ static nsresult GetExecutablePath(nsString& exePath)
#endif
}
nsresult SetExceptionHandler(nsILocalFile* aXREDirectory)
nsresult SetExceptionHandler(nsILocalFile* aXREDirectory,
const char* aServerURL)
{
nsresult rv;
if (gExceptionHandler)
return NS_ERROR_ALREADY_INITIALIZED;
// check environment var to see if we're enabled.
// we're off by default until we sort out the
// rest of the infrastructure,
// so it must exist and be set to a non-empty value.
const char* airbagEnv = PR_GetEnv("MOZ_AIRBAG");
if (airbagEnv == NULL || *airbagEnv == '\0')
return NS_ERROR_NOT_AVAILABLE;
// this environment variable prevents us from launching
// the crash reporter client
const char* noReportEnv = PR_GetEnv("MOZ_CRASHREPORTER_NO_REPORT");
@ -363,7 +356,7 @@ nsresult SetExceptionHandler(nsILocalFile* aXREDirectory)
return NS_ERROR_NOT_IMPLEMENTED;
#endif
// finally, set the exception handler
// now set the exception handler
gExceptionHandler = new google_breakpad::
ExceptionHandler(CONVERT_UTF16_TO_XP_CHAR(tempPath).get(),
nsnull,
@ -374,6 +367,11 @@ nsresult SetExceptionHandler(nsILocalFile* aXREDirectory)
if (!gExceptionHandler)
return NS_ERROR_OUT_OF_MEMORY;
// store server URL with the API data
if (aServerURL)
AnnotateCrashReport(NS_LITERAL_CSTRING("ServerURL"),
nsDependentCString(aServerURL));
return NS_OK;
}

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

@ -43,7 +43,8 @@
#include "nsStringGlue.h"
namespace CrashReporter {
nsresult SetExceptionHandler(nsILocalFile* aXREDirectory);
nsresult SetExceptionHandler(nsILocalFile* aXREDirectory,
const char* aServerURL);
nsresult SetMinidumpPath(const nsAString& aPath);
nsresult UnsetExceptionHandler();
nsresult AnnotateCrashReport(const nsACString &key, const nsACString &data);

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

@ -63,7 +63,7 @@ char *
test_init_exception_handler()
{
mu_assert("CrashReporter::SetExceptionHandler",
CrashReporter::SetExceptionHandler(nsnull));
CrashReporter::SetExceptionHandler(nsnull, nsnull));
return 0;
}