// Copyright 2018 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_PARTITIONED_LOCK_H_ #define CHROME_BROWSER_WEB_APPLICATIONS_LOCKS_PARTITIONED_LOCK_H_ #include <iosfwd> #include "base/functional/callback.h" #include "chrome/browser/web_applications/locks/partitioned_lock_id.h" namespace web_app { // Represents a granted lock by the PartitionedLockManager. When this object is // destroyed, the lock is released. Since default construction is supported, // |is_locked()| can be used to inquire locked status. Also, |Release()| can // be called to manually release the lock, which appropriately updates the // |is_locked()| result. class PartitionedLock { … }; // Logging support. std::ostream& operator<<(std::ostream& out, const PartitionedLock& lock_id); // Equality doesn't take into account whether the lock 'is_locked()' or not, // only the partition and the lock_id. bool operator==(const PartitionedLock& x, const PartitionedLock& y); bool operator!=(const PartitionedLock& x, const PartitionedLock& y); // Comparison operator to allow sorting for locking / unlocking order. bool operator<(const PartitionedLock& x, const PartitionedLock& y); } // namespace web_app #endif // CHROME_BROWSER_WEB_APPLICATIONS_LOCKS_PARTITIONED_LOCK_H_