// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/common/queryable_data.h"
#include <utility>
#include "base/no_destructor.h"
namespace chromecast {
namespace {
QueryableData& GetQueryableData() {
static base::NoDestructor<QueryableData> queryable_data;
return *queryable_data;
}
} // namespace
// static
void QueryableData::RegisterQueryableValue(const std::string& query_key,
base::Value initial_value) {
DCHECK_CALLED_ON_VALID_SEQUENCE(GetQueryableData().sequence_checker_);
GetQueryableData().queryable_values_[query_key] = std::move(initial_value);
}
// static
const base::Value* QueryableData::Query(const std::string& query_key) {
DCHECK_CALLED_ON_VALID_SEQUENCE(GetQueryableData().sequence_checker_);
const QueryableData& data = GetQueryableData();
auto value = data.queryable_values_.find(query_key);
if (value == data.queryable_values_.end())
return nullptr;
return &value->second;
}
// static
const QueryableData::ValueMap& QueryableData::GetValues() {
DCHECK_CALLED_ON_VALID_SEQUENCE(GetQueryableData().sequence_checker_);
const QueryableData& data = GetQueryableData();
return data.queryable_values_;
}
QueryableData::QueryableData() {}
QueryableData::~QueryableData() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
}
} // namespace chromecast