diff options
author | blundell@chromium.org <blundell@chromium.org> | 2014-09-01 11:02:57 +0000 |
---|---|---|
committer | blundell@chromium.org <blundell@chromium.org> | 2014-09-01 11:02:57 +0000 |
commit | 1335417f9feefd20e5b0e4b1e18e9010edb87043 (patch) | |
tree | 0296d7d860021ec4d7f6dae5d5a58c259038c4b5 /src/client/ios/BreakpadController.mm | |
parent | Support for multiple upload files in CrashReportSender/HTTPUpload (diff) | |
download | breakpad-1335417f9feefd20e5b0e4b1e18e9010edb87043.tar.xz |
Adding possibility for client to upload the file
This CL adds three features that will allow the client to upload the report
file.
Three main modifications are made :
- Allow upload url to have a file:// scheme, and write the HTTP request to file
in that case
- Split the request in two parts in case of a file:// scheme, the request
time and the response time. A new API [handleNetworkResponse] is added.
- Give the opportunity to the client to get the configuration NSDictionary
to be able to recreate the breakpad context at response time.
Patch by Olivier Robin <olivierrobin@chromium.org>
Review URL: https://breakpad.appspot.com/2764002/
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1368 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/ios/BreakpadController.mm')
-rw-r--r-- | src/client/ios/BreakpadController.mm | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/client/ios/BreakpadController.mm b/src/client/ios/BreakpadController.mm index a85dd68e..dd71cff6 100644 --- a/src/client/ios/BreakpadController.mm +++ b/src/client/ios/BreakpadController.mm @@ -155,6 +155,18 @@ NSString* GetPlatform() { }); } +// This method must be called from the breakpad queue. +- (void)threadUnsafeSendReportWithConfiguration:(NSDictionary*)configuration + withBreakpadRef:(BreakpadRef)ref { + NSAssert(started_, @"The controller must be started before " + "threadUnsafeSendReportWithConfiguration is called"); + if (breakpadRef_) { + BreakpadUploadReportWithParametersAndConfiguration(breakpadRef_, + uploadTimeParameters_, + configuration); + } +} + - (void)setUploadingEnabled:(BOOL)enabled { NSAssert(started_, @"The controller must be started before setUploadingEnabled is called"); @@ -260,6 +272,25 @@ NSString* GetPlatform() { }); } +- (void)getNextReportConfigurationOrSendDelay: + (void(^)(NSDictionary*, int))callback { + NSAssert(started_, @"The controller must be started before " + "getNextReportConfigurationOrSendDelay is called"); + dispatch_async(queue_, ^{ + if (!breakpadRef_) { + callback(nil, -1); + return; + } + int delay = [self sendDelay]; + if (delay != 0) { + callback(nil, delay); + return; + } + [self reportWillBeSent]; + callback(BreakpadGetNextReportConfiguration(breakpadRef_), 0); + }); +} + #pragma mark - - (int)sendDelay { |