12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // Copyright 2020 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.
- #include <string>
- #include <utility>
- #include "chromeos/printing/fake_printer_config_cache.h"
- #include "base/containers/flat_map.h"
- #include "base/strings/string_piece.h"
- #include "base/threading/sequenced_task_runner_handle.h"
- #include "base/time/clock.h"
- #include "base/time/time.h"
- #include "chromeos/printing/printer_config_cache.h"
- namespace chromeos {
- FakePrinterConfigCache::FakePrinterConfigCache() = default;
- FakePrinterConfigCache::~FakePrinterConfigCache() = default;
- void FakePrinterConfigCache::SetFetchResponseForTesting(
- base::StringPiece key,
- base::StringPiece value) {
- contents_.insert_or_assign(std::string(key), std::string(value));
- // If Fetch(|key|) was previously being consumed by prior call to
- // DiscardFetchRequestFor(), we unblock it now.
- fetch_requests_to_ignore_.erase(key);
- }
- void FakePrinterConfigCache::DiscardFetchRequestFor(base::StringPiece key) {
- fetch_requests_to_ignore_.insert(std::string(key));
- contents_.erase(key);
- }
- void FakePrinterConfigCache::Fetch(const std::string& key,
- base::TimeDelta unused_expiration,
- PrinterConfigCache::FetchCallback cb) {
- if (contents_.contains(key)) {
- base::SequencedTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::BindOnce(std::move(cb),
- PrinterConfigCache::FetchResult::Success(
- key, contents_.at(key), base::Time())));
- return;
- } else if (fetch_requests_to_ignore_.contains(key)) {
- // Caller has directed us, by way of DiscardFetchRequestFor(), to
- // _not_ respond to this Fetch().
- return;
- }
- base::SequencedTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::BindOnce(std::move(cb),
- PrinterConfigCache::FetchResult::Failure(key)));
- }
- void FakePrinterConfigCache::Drop(const std::string& key) {
- contents_.erase(key);
- // If Fetch(|key|) was previously being consumed by prior call to
- // DiscardFetchRequestFor(), we unblock it now.
- fetch_requests_to_ignore_.erase(key);
- }
- } // namespace chromeos
|