Restore crash report user settings and (hopefully) make them actually work again after they got broken in the breakpad merge (see FIRE-6914)
parent
da9446dcd8
commit
4abe10db36
|
|
@ -407,6 +407,53 @@ LLSD LLCrashLogger::constructPostData()
|
|||
|
||||
const char* const CRASH_SETTINGS_FILE = "settings_crash_behavior.xml";
|
||||
|
||||
// <FS:Ansariel> Restore crash report user settings
|
||||
S32 LLCrashLogger::loadCrashBehaviorSetting()
|
||||
{
|
||||
// First check user_settings (in the user's home dir)
|
||||
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
|
||||
if (! mCrashSettings.loadFromFile(filename))
|
||||
{
|
||||
// Next check app_settings (in the SL program dir)
|
||||
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, CRASH_SETTINGS_FILE);
|
||||
mCrashSettings.loadFromFile(filename);
|
||||
}
|
||||
|
||||
// If we didn't load any files above, this will return the default
|
||||
S32 value = mCrashSettings.getS32("CrashSubmitBehavior");
|
||||
|
||||
// Whatever value we got, make sure it's valid
|
||||
switch (value)
|
||||
{
|
||||
case CRASH_BEHAVIOR_NEVER_SEND:
|
||||
return CRASH_BEHAVIOR_NEVER_SEND;
|
||||
case CRASH_BEHAVIOR_ALWAYS_SEND:
|
||||
return CRASH_BEHAVIOR_ALWAYS_SEND;
|
||||
}
|
||||
|
||||
return CRASH_BEHAVIOR_ASK;
|
||||
}
|
||||
|
||||
bool LLCrashLogger::saveCrashBehaviorSetting(S32 crash_behavior)
|
||||
{
|
||||
switch (crash_behavior)
|
||||
{
|
||||
case CRASH_BEHAVIOR_ASK:
|
||||
case CRASH_BEHAVIOR_NEVER_SEND:
|
||||
case CRASH_BEHAVIOR_ALWAYS_SEND:
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
mCrashSettings.setS32("CrashSubmitBehavior", crash_behavior);
|
||||
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
|
||||
mCrashSettings.saveToFile(filename, FALSE);
|
||||
|
||||
return true;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
std::string LLCrashLogger::loadCrashURLSetting()
|
||||
{
|
||||
|
||||
|
|
@ -606,6 +653,18 @@ bool LLCrashLogger::init()
|
|||
"1 = always send crash report, "
|
||||
"2 = never send crash report)");
|
||||
|
||||
// <FS:Ansariel> Restore crash report user settings
|
||||
LL_INFOS("CRASHREPORT") << "Loading crash behavior setting" << LL_ENDL;
|
||||
mCrashBehavior = loadCrashBehaviorSetting();
|
||||
|
||||
// If user doesn't want to send, bail out
|
||||
if (mCrashBehavior == CRASH_BEHAVIOR_NEVER_SEND)
|
||||
{
|
||||
LL_INFOS("CRASHREPORT") << "Crash behavior is never_send, quitting" << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
init_curl();
|
||||
LLCore::HttpRequest::createService();
|
||||
LLCore::HttpRequest::startThread();
|
||||
|
|
|
|||
|
|
@ -68,6 +68,11 @@ public:
|
|||
bool runCrashLogPost(std::string host, LLSD data, std::string msg, int retries, int timeout);
|
||||
bool readMinidump(std::string minidump_path);
|
||||
|
||||
// <FS:Ansariel> Restore crash report user settings
|
||||
S32 loadCrashBehaviorSetting();
|
||||
bool saveCrashBehaviorSetting(S32 crash_behavior);
|
||||
// </FS:Ansariel>
|
||||
|
||||
protected:
|
||||
static void init_curl();
|
||||
static void term_curl();
|
||||
|
|
|
|||
|
|
@ -72,6 +72,14 @@ bool LLCrashLoggerMac::mainLoop()
|
|||
gSendReport = true;
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Restore crash report user settings
|
||||
if(gRememberChoice)
|
||||
{
|
||||
if(gSendReport) saveCrashBehaviorSetting(CRASH_BEHAVIOR_ALWAYS_SEND);
|
||||
else saveCrashBehaviorSetting(CRASH_BEHAVIOR_NEVER_SEND);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
if(gSendReport)
|
||||
{
|
||||
setUserText(gUserNotes);
|
||||
|
|
|
|||
|
|
@ -174,6 +174,24 @@ bool handle_button_click(WORD button_id)
|
|||
return false;
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Restore crash report user settings
|
||||
// See if "do this next time" is checked and save state
|
||||
S32 crash_behavior = CRASH_BEHAVIOR_ASK;
|
||||
LRESULT result = SendDlgItemMessage(gHwndReport, IDC_CHECK_AUTO, BM_GETCHECK, 0, 0);
|
||||
if (result == BST_CHECKED)
|
||||
{
|
||||
if (button_id == IDOK)
|
||||
{
|
||||
crash_behavior = CRASH_BEHAVIOR_ALWAYS_SEND;
|
||||
}
|
||||
else if (button_id == IDCANCEL)
|
||||
{
|
||||
crash_behavior = CRASH_BEHAVIOR_NEVER_SEND;
|
||||
}
|
||||
((LLCrashLoggerWindows*)LLCrashLogger::instance())->saveCrashBehaviorSetting(crash_behavior);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// We're done with this dialog.
|
||||
gFirstDialog = FALSE;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue