| // Copyright 2024 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_POOL_ID_H_ | 
 | #define GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_POOL_ID_H_ | 
 |  | 
 | #include <string> | 
 |  | 
 | #include "base/unguessable_token.h" | 
 | #include "gpu/command_buffer/common/gpu_command_buffer_common_export.h" | 
 |  | 
 | namespace gpu { | 
 |  | 
 | // A unique, unguessable identifier for a SharedImagePool. | 
 | class GPU_COMMAND_BUFFER_COMMON_EXPORT SharedImagePoolId { | 
 |  public: | 
 |   SharedImagePoolId(); | 
 |   explicit SharedImagePoolId(const base::UnguessableToken& token); | 
 |  | 
 |   // Creates a new SharedImagePoolId with a cryptographically random value. | 
 |   static SharedImagePoolId Create(); | 
 |  | 
 |   // Generates a string representation of the SharedImagePoolId. | 
 |   std::string ToString() const; | 
 |  | 
 |   bool operator==(const SharedImagePoolId& other) const { | 
 |     return token_ == other.token_; | 
 |   } | 
 |  | 
 |   std::strong_ordering operator<=>(const SharedImagePoolId& other) const { | 
 |     return token_ <=> other.token_; | 
 |   } | 
 |  | 
 |   template <typename H> | 
 |   friend H AbslHashValue(H h, const SharedImagePoolId& id) { | 
 |     return H::combine(std::move(h), id.token_); | 
 |   } | 
 |  | 
 |   bool IsValid() const { return !token_.is_empty(); } | 
 |  | 
 |   const base::UnguessableToken& GetToken() const { return token_; } | 
 |  | 
 |  private: | 
 |   // The underlying unguessable token. | 
 |   base::UnguessableToken token_; | 
 | }; | 
 |  | 
 | }  // namespace gpu | 
 |  | 
 | #endif  // GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_POOL_ID_H_ |