Commit 7f0114bf authored by Javier Ernesto Flores Robles's avatar Javier Ernesto Flores Robles Committed by Commit Bot

[iOS][Credential-Provider] Call the completion if exists

Add checks for the completion.
Call completion when |fileURL| is nil.
Completion is always called on the main thread.

Bug: 1045457
Change-Id: I74be7d0cf110efe30be6ced0ce4172395d966193
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2148324
Commit-Queue: David Jean <djean@chromium.org>
Reviewed-by: default avatarDavid Jean <djean@chromium.org>
Auto-Submit: Javier Ernesto Flores Robles <javierrobles@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759558}
parent 698cafcb
...@@ -78,9 +78,20 @@ ...@@ -78,9 +78,20 @@
- (void)saveDataWithCompletion:(void (^)(NSError* error))completion { - (void)saveDataWithCompletion:(void (^)(NSError* error))completion {
dispatch_barrier_async(self.workingQueue, ^{ dispatch_barrier_async(self.workingQueue, ^{
auto executeCompletionIfPresent = ^(NSError* error) {
if (completion) {
dispatch_async(dispatch_get_main_queue(), ^{
completion(error);
});
}
};
if (!self.fileURL) { if (!self.fileURL) {
// There is no fileURL, store is being used as memory only.
executeCompletionIfPresent(nil);
return; return;
} }
NSError* error = nil; NSError* error = nil;
NSData* data = NSData* data =
[NSKeyedArchiver archivedDataWithRootObject:self.memoryStorage [NSKeyedArchiver archivedDataWithRootObject:self.memoryStorage
...@@ -88,7 +99,7 @@ ...@@ -88,7 +99,7 @@
error:&error]; error:&error];
DCHECK(!error) << error.debugDescription.UTF8String; DCHECK(!error) << error.debugDescription.UTF8String;
if (error) { if (error) {
completion(error); executeCompletionIfPresent(error);
return; return;
} }
...@@ -99,13 +110,13 @@ ...@@ -99,13 +110,13 @@
error:&error]; error:&error];
if (error) { if (error) {
completion(error); executeCompletionIfPresent(error);
return; return;
} }
[data writeToURL:self.fileURL options:NSDataWritingAtomic error:&error]; [data writeToURL:self.fileURL options:NSDataWritingAtomic error:&error];
DCHECK(!error) << error.debugDescription.UTF8String; DCHECK(!error) << error.debugDescription.UTF8String;
completion(error); executeCompletionIfPresent(error);
}); });
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment