1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
// 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 COMPONENTS_PRIVACY_SANDBOX_CANONICAL_TOPIC_H_
#define COMPONENTS_PRIVACY_SANDBOX_CANONICAL_TOPIC_H_
#include <string>
#include "base/types/strong_alias.h"
#include "base/values.h"
#include "components/browsing_topics/common/common_types.h"
namespace privacy_sandbox {
// Contains a topic and a name in the current locale.
class CanonicalTopic {
public:
CanonicalTopic(browsing_topics::Topic topic_id, int taxonomy_version);
// The ID of this topic. A Canonical Topic's ID uniquely identifies it
// within a specific taxonomy version.
browsing_topics::Topic topic_id() const { return topic_id_; }
// The taxonomy version of the Canonical Topic.
// TODO(crbug.com/40268081): We no longer have a use for the taxonomy
// version and may want to delete it
int taxonomy_version() const { return taxonomy_version_; }
// Returns the localized string representation of the Canonical Topic, this
// is suitable for direct display to the user.
std::u16string GetLocalizedRepresentation() const;
// Returns the localized string description of the Canonical Topic, this
// is suitable for direct display to the user.
std::u16string GetLocalizedDescription() const;
// Functions for converting to and from values for storage in preferences.
base::Value ToValue() const;
static std::optional<CanonicalTopic> FromValue(const base::Value& value);
// TODO(crbug.com/40268081): The less than operator considers
// `topic_id_` only, because we no longer use the taxonomy version and may
// want to delete it
bool operator<(const CanonicalTopic& other) const;
// TODO(crbug.com/40268081): The equality operator considers
// `topic_id_` only, because we no longer use the taxonomy version and may
// want to delete it.
bool operator==(const CanonicalTopic& other) const;
private:
browsing_topics::Topic topic_id_;
int taxonomy_version_;
};
} // namespace privacy_sandbox
#endif // COMPONENTS_PRIVACY_SANDBOX_CANONICAL_TOPIC_H_
|