// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/app_restore/app_restore_info.h" #include "base/containers/contains.h" #include "base/no_destructor.h" #include "components/account_id/account_id.h" namespace app_restore { // static AppRestoreInfo* AppRestoreInfo::GetInstance() { static base::NoDestructor app_restore_info; return app_restore_info.get(); } AppRestoreInfo::AppRestoreInfo() = default; AppRestoreInfo::~AppRestoreInfo() = default; void AppRestoreInfo::AddObserver(Observer* observer) { observers_.AddObserver(observer); } void AppRestoreInfo::RemoveObserver(Observer* observer) { observers_.RemoveObserver(observer); } bool AppRestoreInfo::CanPerformRestore(const AccountId& account_id) { return base::Contains(restore_prefs_, account_id); } void AppRestoreInfo::SetRestorePref(const AccountId& account_id, bool could_restore) { if (could_restore == CanPerformRestore(account_id)) return; if (could_restore) restore_prefs_.insert(account_id); else restore_prefs_.erase(account_id); for (auto& observer : observers_) observer.OnRestorePrefChanged(account_id, could_restore); } void AppRestoreInfo::OnAppLaunched(aura::Window* window) { for (auto& observer : observers_) observer.OnAppLaunched(window); } void AppRestoreInfo::OnWindowInitialized(aura::Window* window) { for (auto& observer : observers_) observer.OnWindowInitialized(window); } void AppRestoreInfo::OnWidgetInitialized(views::Widget* widget) { for (auto& observer : observers_) observer.OnWidgetInitialized(widget); } void AppRestoreInfo::OnParentWindowToValidContainer(aura::Window* window) { for (auto& observer : observers_) observer.OnParentWindowToValidContainer(window); } } // namespace app_restore