Scope PermissionPrompt lifetime to UI visibility
This patch make the lifetime of PermissionPrompt objects more sensible
and match what we occasionally think it actually is. Currently these
objects exist when a tab is active, or on Android all the time. This
patch changes it so that, as the name might suggest, it corresponds to
when a prompt is actually visible. We retain the distinction between
desktop/Android where desktop hides the UI (now deletes the object) on
tab switching, while Android retains the UI (keeps the object alive)
as the InfoBar system manages hiding the prompt.
Since we don't explicitly manage lifetimes of the actual UI surface on
Android (infobars in particular, as it's clearer for modals when the UI
is actually destroyed) from the PermissionPrompt, we change the pointer
to a WeakPtr for safety. When the PermissionPrompt is destroyed due to
navigation, if an infobar happens to still persist due to a bug it
won't be able to be resolve different permission requests.
Bug: 606138, 737102
Change-Id: I26a8843b9b446e91282a9b0ce67c4b442bf440e9
Reviewed-on: https://chromium-review.googlesource.com/567940
Commit-Queue: Timothy Loh <[email protected]>
Reviewed-by: Raymes Khoury <[email protected]>
Cr-Commit-Position: refs/heads/master@{#487029}
8 files changed