chromium/chromecast/renderer/queryable_data_store.cc

// 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/renderer/queryable_data_store.h"

#include "base/functional/bind.h"
#include "base/location.h"
#include "base/task/task_runner.h"
#include "base/values.h"
#include "chromecast/common/queryable_data.h"
#include "content/public/renderer/render_thread.h"

namespace chromecast {

QueryableDataStore::QueryableDataStore(
    const scoped_refptr<base::TaskRunner> render_main_thread)
    : render_main_thread_(std::move(render_main_thread)) {}

QueryableDataStore::~QueryableDataStore() {}

void QueryableDataStore::Set(const std::string& key, base::Value value) {
  render_main_thread_->PostTask(
      FROM_HERE, base::BindOnce(&QueryableData::RegisterQueryableValue, key,
                                std::move(value)));
}

void QueryableDataStore::BindQueryableDataStoreReceiver(
    mojo::PendingReceiver<shell::mojom::QueryableDataStore> receiver) {
  queryable_data_receivers_.Add(this, std::move(receiver));
}

}  // namespace chromecast