Commit e2c30b8c authored by edchin's avatar edchin Committed by Commit Bot

[ios] [BVC refactor] Prevent crash in BrowserCoordinator |-stop|

A coordinator's |-stop| should not crash if called multiple times.

Bug: 910652
Change-Id: I5a2998726ad3390a8b1c98afbc753f093a4a8986
Reviewed-on: https://chromium-review.googlesource.com/c/1357001
Commit-Queue: edchin <edchin@chromium.org>
Reviewed-by: default avatarJustin Cohen <justincohen@chromium.org>
Reviewed-by: default avataredchin <edchin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612706}
parent 9f4af41f
......@@ -47,6 +47,9 @@
RepostFormTabHelperDelegate,
WebStateListObserving>
// Whether the coordinator is started.
@property(nonatomic, assign, getter=isStarted) BOOL started;
// Handles command dispatching.
@property(nonatomic, strong) CommandDispatcher* dispatcher;
......@@ -105,6 +108,9 @@
#pragma mark - ChromeCoordinator
- (void)start {
if (self.started)
return;
DCHECK(self.browserState);
DCHECK(!self.viewController);
self.dispatcher = [[CommandDispatcher alloc] init];
......@@ -116,9 +122,12 @@
[self installDelegatesForAllWebStates];
[self addWebStateListObserver];
[super start];
self.started = YES;
}
- (void)stop {
if (!self.started)
return;
[super stop];
[self removeWebStateListObserver];
[self uninstallDelegatesForAllWebStates];
......@@ -126,6 +135,7 @@
[self stopChildCoordinators];
[self destroyViewController];
self.dispatcher = nil;
self.started = NO;
}
#pragma mark - Public
......
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