fake_printer_config_cache.cc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2020 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 <string>
  5. #include <utility>
  6. #include "chromeos/printing/fake_printer_config_cache.h"
  7. #include "base/containers/flat_map.h"
  8. #include "base/strings/string_piece.h"
  9. #include "base/threading/sequenced_task_runner_handle.h"
  10. #include "base/time/clock.h"
  11. #include "base/time/time.h"
  12. #include "chromeos/printing/printer_config_cache.h"
  13. namespace chromeos {
  14. FakePrinterConfigCache::FakePrinterConfigCache() = default;
  15. FakePrinterConfigCache::~FakePrinterConfigCache() = default;
  16. void FakePrinterConfigCache::SetFetchResponseForTesting(
  17. base::StringPiece key,
  18. base::StringPiece value) {
  19. contents_.insert_or_assign(std::string(key), std::string(value));
  20. // If Fetch(|key|) was previously being consumed by prior call to
  21. // DiscardFetchRequestFor(), we unblock it now.
  22. fetch_requests_to_ignore_.erase(key);
  23. }
  24. void FakePrinterConfigCache::DiscardFetchRequestFor(base::StringPiece key) {
  25. fetch_requests_to_ignore_.insert(std::string(key));
  26. contents_.erase(key);
  27. }
  28. void FakePrinterConfigCache::Fetch(const std::string& key,
  29. base::TimeDelta unused_expiration,
  30. PrinterConfigCache::FetchCallback cb) {
  31. if (contents_.contains(key)) {
  32. base::SequencedTaskRunnerHandle::Get()->PostTask(
  33. FROM_HERE, base::BindOnce(std::move(cb),
  34. PrinterConfigCache::FetchResult::Success(
  35. key, contents_.at(key), base::Time())));
  36. return;
  37. } else if (fetch_requests_to_ignore_.contains(key)) {
  38. // Caller has directed us, by way of DiscardFetchRequestFor(), to
  39. // _not_ respond to this Fetch().
  40. return;
  41. }
  42. base::SequencedTaskRunnerHandle::Get()->PostTask(
  43. FROM_HERE, base::BindOnce(std::move(cb),
  44. PrinterConfigCache::FetchResult::Failure(key)));
  45. }
  46. void FakePrinterConfigCache::Drop(const std::string& key) {
  47. contents_.erase(key);
  48. // If Fetch(|key|) was previously being consumed by prior call to
  49. // DiscardFetchRequestFor(), we unblock it now.
  50. fetch_requests_to_ignore_.erase(key);
  51. }
  52. } // namespace chromeos