| // Copyright 2018 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. |
| |
| #ifndef BASE_METRICS_UKM_SOURCE_ID_H_ |
| #define BASE_METRICS_UKM_SOURCE_ID_H_ |
| |
| #include "base/base_export.h" |
| #include "starboard/types.h" |
| |
| namespace base { |
| |
| // An ID used to identify a Source to UKM, for recording information about it. |
| // These objects are copyable, assignable, and occupy 64-bits per instance. |
| // Prefer passing them by value. |
| class BASE_EXPORT UkmSourceId { |
| public: |
| enum class Type : int64_t { |
| UKM = 0, |
| NAVIGATION_ID = 1, |
| APP_ID = 2, |
| }; |
| |
| // Default constructor has the invalid value. |
| constexpr UkmSourceId() : value_(0) {} |
| |
| constexpr UkmSourceId& operator=(UkmSourceId other) { |
| value_ = other.value_; |
| return *this; |
| } |
| |
| // Allow identity comparisons. |
| constexpr bool operator==(UkmSourceId other) const { |
| return value_ == other.value_; |
| } |
| constexpr bool operator!=(UkmSourceId other) const { |
| return value_ != other.value_; |
| } |
| |
| // Allow coercive comparisons to simplify test migration. |
| // TODO(crbug/873866): Remove these once callers are migrated. |
| constexpr bool operator==(int64_t other) const { return value_ == other; } |
| constexpr bool operator!=(int64_t other) const { return value_ == other; } |
| |
| // Extract the Type of the SourceId. |
| Type GetType() const; |
| |
| // Return the ID as an int64. |
| constexpr int64_t ToInt64() const { return value_; } |
| |
| // Convert an int64 ID value to an ID. |
| static constexpr UkmSourceId FromInt64(int64_t internal_value) { |
| return UkmSourceId(internal_value); |
| } |
| |
| // Get a new UKM-Type SourceId, which is unique within the scope of a |
| // browser session. |
| static UkmSourceId New(); |
| |
| // Utility for converting other unique ids to source ids. |
| static UkmSourceId FromOtherId(int64_t value, Type type); |
| |
| private: |
| constexpr explicit UkmSourceId(int64_t value) : value_(value) {} |
| int64_t value_; |
| }; |
| |
| constexpr UkmSourceId kInvalidUkmSourceId = UkmSourceId(); |
| |
| } // namespace base |
| |
| #endif // BASE_METRICS_UKM_SOURCE_ID_H_ |