blob: c29a996851cf253d60bd0fbb1b1f48aa107b5539 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/lifetime/termination_notification.h"
#include "base/no_destructor.h"
#include "content/public/browser/browser_thread.h"
namespace browser_shutdown {
namespace {
base::OnceClosureList& GetAppTerminatingCallbackList() {
static base::NoDestructor<base::OnceClosureList> callback_list;
return *callback_list;
}
} // namespace
base::CallbackListSubscription AddAppTerminatingCallback(
base::OnceClosure app_terminating_callback) {
return GetAppTerminatingCallbackList().Add(
std::move(app_terminating_callback));
}
void NotifyAppTerminating() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
static bool notified = false;
if (notified) {
return;
}
notified = true;
GetAppTerminatingCallbackList().Notify();
}
} // namespace browser_shutdown