// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_WEB_APPLICATIONS_LOCKS_LOCK_H_ #define CHROME_BROWSER_WEB_APPLICATIONS_LOCKS_LOCK_H_ #include <iosfwd> #include <memory> #include "base/containers/flat_set.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "components/webapps/common/web_app_id.h" namespace web_app { struct PartitionedLockHolder; class WebAppLockManager; class WebContentsManager; // Represents a lock in the WebAppProvider system. Locks can be acquired by // creating one of the subclasses of this class, and using the // `WebAppLockManager` to acquire the lock. class LockDescription { … }; std::ostream& operator<<(std::ostream& os, const LockDescription& lock_description); // See `WebAppLockManager` for how to use locks. Destruction of this class will // release the lock or cancel the lock request if it is not acquired yet. // // Note: Accessing a lock will CHECK-fail if the WebAppProvider system has // shutdown (or the profile has shut down). class Lock { … }; } // namespace web_app #endif // CHROME_BROWSER_WEB_APPLICATIONS_LOCKS_LOCK_H_