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 @@
- (void)saveDataWithCompletion:(void (^)(NSError* error))completion {
dispatch_barrier_async(self.workingQueue, ^{
auto executeCompletionIfPresent = ^(NSError* error) {
if (completion) {
dispatch_async(dispatch_get_main_queue(), ^{
completion(error);
});
}
};
if (!self.fileURL) {
// There is no fileURL, store is being used as memory only.
executeCompletionIfPresent(nil);
return;
}
NSError* error = nil;
NSData* data =
[NSKeyedArchiver archivedDataWithRootObject:self.memoryStorage
......@@ -88,7 +99,7 @@
error:&error];
DCHECK(!error) << error.debugDescription.UTF8String;
if (error) {
completion(error);
executeCompletionIfPresent(error);
return;
}
......@@ -99,13 +110,13 @@
error:&error];
if (error) {
completion(error);
executeCompletionIfPresent(error);
return;
}
[data writeToURL:self.fileURL options:NSDataWritingAtomic error:&error];
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