queryable_data.cc 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "chromecast/common/queryable_data.h"
  5. #include <utility>
  6. #include "base/no_destructor.h"
  7. namespace chromecast {
  8. namespace {
  9. QueryableData& GetQueryableData() {
  10. static base::NoDestructor<QueryableData> queryable_data;
  11. return *queryable_data;
  12. }
  13. } // namespace
  14. // static
  15. void QueryableData::RegisterQueryableValue(const std::string& query_key,
  16. base::Value initial_value) {
  17. DCHECK_CALLED_ON_VALID_SEQUENCE(GetQueryableData().sequence_checker_);
  18. GetQueryableData().queryable_values_[query_key] = std::move(initial_value);
  19. }
  20. // static
  21. const base::Value* QueryableData::Query(const std::string& query_key) {
  22. DCHECK_CALLED_ON_VALID_SEQUENCE(GetQueryableData().sequence_checker_);
  23. const QueryableData& data = GetQueryableData();
  24. auto value = data.queryable_values_.find(query_key);
  25. if (value == data.queryable_values_.end())
  26. return nullptr;
  27. return &value->second;
  28. }
  29. // static
  30. const QueryableData::ValueMap& QueryableData::GetValues() {
  31. DCHECK_CALLED_ON_VALID_SEQUENCE(GetQueryableData().sequence_checker_);
  32. const QueryableData& data = GetQueryableData();
  33. return data.queryable_values_;
  34. }
  35. QueryableData::QueryableData() {}
  36. QueryableData::~QueryableData() {
  37. DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
  38. }
  39. } // namespace chromecast