[ios] Fix crash when last incognito is destroyed while presenting BVC

It is possible to have the browserState destroyed while the BVC is
being presented.

This can happen when the following occur:
a) There is JS that closes the last incognito tab,
b) that JS was paused while the user was in the tab switcher,
c) the user enters the tab, activating the JS while the tab is being
presented.

Effectively, the BVC finishes presentation, but the tab and the whole
incognito BrowserState no longer exists. Attempting to present bubbles
will crash since bubblePresenter requires a valid BrowserState. When
the browserState is invalid in BVC, the only appropriate action is to
dismiss the BVC and return the user to the tab switcher.

Bug: 934420
Change-Id: Idf6b4d28cebaac1a9e55c52a1ef731a6fedb2c6e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1621311
Commit-Queue: edchin <edchin@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661831}
2 files changed