Add -[BreakpadController setParametersToAddAtUploadTime:] for iOS.
This provides the ability to add server parameters to a crash report when the report is uploaded. Patch by KiYun Roe <kiyun@chromium.org> BUG=558 R=blundell@chromium.org Review URL: https://breakpad.appspot.com/974002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1271 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
3ea04ec479
commit
12528d19bd
4 changed files with 33 additions and 9 deletions
|
@ -200,7 +200,9 @@ void BreakpadRemoveUploadParameter(BreakpadRef ref, NSString *key);
|
||||||
int BreakpadGetCrashReportCount(BreakpadRef ref);
|
int BreakpadGetCrashReportCount(BreakpadRef ref);
|
||||||
|
|
||||||
// Upload next report to the server.
|
// Upload next report to the server.
|
||||||
void BreakpadUploadNextReport(BreakpadRef ref);
|
// |server_parameters| is additional server parameters to send (optional).
|
||||||
|
void BreakpadUploadNextReport(BreakpadRef ref,
|
||||||
|
NSDictionary *server_parameters = nil);
|
||||||
|
|
||||||
// Upload a file to the server. |data| is the content of the file to sent.
|
// Upload a file to the server. |data| is the content of the file to sent.
|
||||||
// |server_parameters| is additional server parameters to send.
|
// |server_parameters| is additional server parameters to send.
|
||||||
|
|
|
@ -152,7 +152,7 @@ class Breakpad {
|
||||||
void RemoveKeyValue(NSString *key);
|
void RemoveKeyValue(NSString *key);
|
||||||
NSArray *CrashReportsToUpload();
|
NSArray *CrashReportsToUpload();
|
||||||
NSString *NextCrashReportToUpload();
|
NSString *NextCrashReportToUpload();
|
||||||
void UploadNextReport();
|
void UploadNextReport(NSDictionary *server_parameters);
|
||||||
void UploadData(NSData *data, NSString *name,
|
void UploadData(NSData *data, NSString *name,
|
||||||
NSDictionary *server_parameters);
|
NSDictionary *server_parameters);
|
||||||
NSDictionary *GenerateReport(NSDictionary *server_parameters);
|
NSDictionary *GenerateReport(NSDictionary *server_parameters);
|
||||||
|
@ -448,15 +448,20 @@ NSString *Breakpad::NextCrashReportToUpload() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void Breakpad::UploadNextReport() {
|
void Breakpad::UploadNextReport(NSDictionary *server_parameters) {
|
||||||
NSString *configFile = NextCrashReportToUpload();
|
NSString *configFile = NextCrashReportToUpload();
|
||||||
if (configFile) {
|
if (configFile) {
|
||||||
Uploader *uploader = [[[Uploader alloc]
|
Uploader *uploader = [[[Uploader alloc]
|
||||||
initWithConfigFile:[configFile UTF8String]] autorelease];
|
initWithConfigFile:[configFile UTF8String]] autorelease];
|
||||||
if (uploader)
|
if (uploader) {
|
||||||
|
for (NSString *key in server_parameters) {
|
||||||
|
[uploader addServerParameter:[server_parameters objectForKey:key]
|
||||||
|
forKey:key];
|
||||||
|
}
|
||||||
[uploader report];
|
[uploader report];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void Breakpad::UploadData(NSData *data, NSString *name,
|
void Breakpad::UploadData(NSData *data, NSString *name,
|
||||||
|
@ -784,13 +789,14 @@ int BreakpadGetCrashReportCount(BreakpadRef ref) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void BreakpadUploadNextReport(BreakpadRef ref) {
|
void BreakpadUploadNextReport(BreakpadRef ref,
|
||||||
|
NSDictionary *server_parameters) {
|
||||||
try {
|
try {
|
||||||
// Not called at exception time
|
// Not called at exception time
|
||||||
Breakpad *breakpad = (Breakpad *)ref;
|
Breakpad *breakpad = (Breakpad *)ref;
|
||||||
|
|
||||||
if (breakpad) {
|
if (breakpad) {
|
||||||
breakpad->UploadNextReport();
|
breakpad->UploadNextReport(server_parameters);
|
||||||
}
|
}
|
||||||
} catch(...) { // don't let exceptions leave this C API
|
} catch(...) { // don't let exceptions leave this C API
|
||||||
fprintf(stderr, "BreakpadUploadNextReport() : error\n");
|
fprintf(stderr, "BreakpadUploadNextReport() : error\n");
|
||||||
|
|
|
@ -62,6 +62,10 @@
|
||||||
// The interval to wait between two uploads. Value is 0 if no upload must be
|
// The interval to wait between two uploads. Value is 0 if no upload must be
|
||||||
// done.
|
// done.
|
||||||
int uploadIntervalInSeconds_;
|
int uploadIntervalInSeconds_;
|
||||||
|
|
||||||
|
// The dictionary that contains additional server parameters to send when
|
||||||
|
// uploading crash reports.
|
||||||
|
NSDictionary* uploadTimeParameters_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Singleton.
|
// Singleton.
|
||||||
|
@ -84,8 +88,11 @@
|
||||||
// will prevent uploads.
|
// will prevent uploads.
|
||||||
- (void)setUploadInterval:(int)intervalInSeconds;
|
- (void)setUploadInterval:(int)intervalInSeconds;
|
||||||
|
|
||||||
// Specify a parameter that will be uploaded to the crash server. See
|
// Set additional server parameters to send when uploading crash reports.
|
||||||
// |BreakpadAddUploadParameter|.
|
- (void)setParametersToAddAtUploadTime:(NSDictionary*)uploadTimeParameters;
|
||||||
|
|
||||||
|
// Specify an upload parameter that will be added to the crash report when a
|
||||||
|
// crash report is generated. See |BreakpadAddUploadParameter|.
|
||||||
- (void)addUploadParameter:(NSString*)value forKey:(NSString*)key;
|
- (void)addUploadParameter:(NSString*)value forKey:(NSString*)key;
|
||||||
|
|
||||||
// Remove a previously-added parameter from the upload parameter set. See
|
// Remove a previously-added parameter from the upload parameter set. See
|
||||||
|
|
|
@ -120,6 +120,7 @@ NSString* GetPlatform() {
|
||||||
assert(!breakpadRef_);
|
assert(!breakpadRef_);
|
||||||
dispatch_release(queue_);
|
dispatch_release(queue_);
|
||||||
[configuration_ release];
|
[configuration_ release];
|
||||||
|
[uploadTimeParameters_ release];
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,6 +193,7 @@ NSString* GetPlatform() {
|
||||||
NSString* uploadInterval =
|
NSString* uploadInterval =
|
||||||
[configuration_ valueForKey:@BREAKPAD_REPORT_INTERVAL];
|
[configuration_ valueForKey:@BREAKPAD_REPORT_INTERVAL];
|
||||||
[self setUploadInterval:[uploadInterval intValue]];
|
[self setUploadInterval:[uploadInterval intValue]];
|
||||||
|
[self setParametersToAddAtUploadTime:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setUploadingURL:(NSString*)url {
|
- (void)setUploadingURL:(NSString*)url {
|
||||||
|
@ -209,6 +211,13 @@ NSString* GetPlatform() {
|
||||||
uploadIntervalInSeconds_ = 0;
|
uploadIntervalInSeconds_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)setParametersToAddAtUploadTime:(NSDictionary*)uploadTimeParameters {
|
||||||
|
NSAssert(!started_, @"The controller must not be started when "
|
||||||
|
"setParametersToAddAtUploadTime is called");
|
||||||
|
[uploadTimeParameters_ autorelease];
|
||||||
|
uploadTimeParameters_ = [uploadTimeParameters copy];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)addUploadParameter:(NSString*)value forKey:(NSString*)key {
|
- (void)addUploadParameter:(NSString*)value forKey:(NSString*)key {
|
||||||
NSAssert(started_,
|
NSAssert(started_,
|
||||||
@"The controller must be started before addUploadParameter is called");
|
@"The controller must be started before addUploadParameter is called");
|
||||||
|
@ -291,7 +300,7 @@ NSString* GetPlatform() {
|
||||||
// A report can be sent now.
|
// A report can be sent now.
|
||||||
if (timeToWait == 0) {
|
if (timeToWait == 0) {
|
||||||
[self reportWillBeSent];
|
[self reportWillBeSent];
|
||||||
BreakpadUploadNextReport(breakpadRef_);
|
BreakpadUploadNextReport(breakpadRef_, uploadTimeParameters_);
|
||||||
|
|
||||||
// If more reports must be sent, make sure this method is called again.
|
// If more reports must be sent, make sure this method is called again.
|
||||||
if (BreakpadGetCrashReportCount(breakpadRef_) > 0)
|
if (BreakpadGetCrashReportCount(breakpadRef_) > 0)
|
||||||
|
|
Loading…
Reference in a new issue