Commit a177fe08 authored by Jay Harris's avatar Jay Harris Committed by Commit Bot

WebApps: Adds shutdown notification to AppShortcutManager.

This is necessary so observers know when to remove themselves, as they
might otherwise attempt to remove themselves after the ShortcutManager
has been destroyed, resulting in a use after free.

Bug: 860581
Change-Id: I93f0d4020efdc5633462c8066b47a0a98922e373
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1872083Reviewed-by: default avatarAlexey Baskakov <loyso@chromium.org>
Commit-Queue: Jay Harris <harrisjay@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708401}
parent 90fa55ea
......@@ -38,6 +38,11 @@ void AppShortcutManager::SetSubsystems(AppRegistrar* registrar) {
registrar_ = registrar;
}
void AppShortcutManager::Shutdown() {
for (auto& observer : observers_)
observer.OnShortcutManagerDestroyed();
}
void AppShortcutManager::AddObserver(AppShortcutObserver* observer) {
observers_.AddObserver(observer);
}
......
......@@ -33,6 +33,7 @@ class AppShortcutManager {
virtual ~AppShortcutManager();
void SetSubsystems(AppRegistrar* registrar);
void Shutdown();
void AddObserver(AppShortcutObserver* observer);
void RemoveObserver(AppShortcutObserver* observer);
......
......@@ -13,6 +13,7 @@ namespace web_app {
class AppShortcutObserver : public base::CheckedObserver {
public:
virtual void OnShortcutsCreated(const AppId& app_id) {}
virtual void OnShortcutManagerDestroyed() {}
};
} // namespace web_app
......
......@@ -149,6 +149,7 @@ void WebAppProvider::Shutdown() {
pending_app_manager_->Shutdown();
install_manager_->Shutdown();
manifest_update_manager_->Shutdown();
shortcut_manager_->Shutdown();
}
void WebAppProvider::StartImpl() {
......
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