test_activity_data_service.cc 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 "components/update_client/test_activity_data_service.h"
  5. #include <set>
  6. #include <string>
  7. #include <vector>
  8. #include "base/bind.h"
  9. #include "base/callback.h"
  10. #include "base/run_loop.h"
  11. #include "base/test/bind.h"
  12. #include "base/threading/sequenced_task_runner_handle.h"
  13. #include "components/update_client/persisted_data.h"
  14. namespace update_client {
  15. namespace {
  16. constexpr int kUnknown = -2;
  17. } // namespace
  18. namespace test {
  19. void SetDateLastData(PersistedData* metadata,
  20. const std::vector<std::string>& ids,
  21. int daynum) {
  22. base::RunLoop loop;
  23. metadata->SetDateLastData(ids, daynum, loop.QuitClosure());
  24. loop.Run();
  25. }
  26. bool GetActiveBit(PersistedData* metadata, const std::string& id) {
  27. base::RunLoop loop;
  28. bool result = false;
  29. metadata->GetActiveBits(
  30. {id},
  31. base::BindLambdaForTesting([&](const std::set<std::string>& actives) {
  32. result = actives.find(id) != actives.end();
  33. loop.QuitClosure().Run();
  34. }));
  35. loop.Run();
  36. return result;
  37. }
  38. } // namespace test
  39. TestActivityDataService::TestActivityDataService() = default;
  40. TestActivityDataService::~TestActivityDataService() = default;
  41. bool TestActivityDataService::GetActiveBit(const std::string& id) const {
  42. const auto& it = actives_.find(id);
  43. return it != actives_.end() ? it->second : false;
  44. }
  45. void TestActivityDataService::GetActiveBits(
  46. const std::vector<std::string>& ids,
  47. base::OnceCallback<void(const std::set<std::string>&)> callback) const {
  48. std::set<std::string> actives;
  49. for (const auto& id : ids) {
  50. auto it = actives_.find(id);
  51. if (it != actives_.end() && it->second)
  52. actives.insert(id);
  53. }
  54. base::SequencedTaskRunnerHandle::Get()->PostTask(
  55. FROM_HERE, base::BindOnce(std::move(callback), actives));
  56. }
  57. void TestActivityDataService::GetAndClearActiveBits(
  58. const std::vector<std::string>& ids,
  59. base::OnceCallback<void(const std::set<std::string>&)> callback) {
  60. std::set<std::string> actives;
  61. for (const auto& id : ids) {
  62. if (actives_.count(id) > 0 && actives_.at(id))
  63. actives.insert(id);
  64. actives_[id] = false;
  65. }
  66. base::SequencedTaskRunnerHandle::Get()->PostTask(
  67. FROM_HERE, base::BindOnce(std::move(callback), actives));
  68. }
  69. int TestActivityDataService::GetDaysSinceLastActive(
  70. const std::string& id) const {
  71. const auto& it = days_since_last_actives_.find(id);
  72. return it != days_since_last_actives_.end() ? it->second : kUnknown;
  73. }
  74. int TestActivityDataService::GetDaysSinceLastRollCall(
  75. const std::string& id) const {
  76. const auto& it = days_since_last_rollcalls_.find(id);
  77. return it != days_since_last_rollcalls_.end() ? it->second : kUnknown;
  78. }
  79. void TestActivityDataService::SetActiveBit(const std::string& id, bool value) {
  80. actives_[id] = value;
  81. }
  82. void TestActivityDataService::SetDaysSinceLastActive(const std::string& id,
  83. int daynum) {
  84. days_since_last_actives_[id] = daynum;
  85. }
  86. void TestActivityDataService::SetDaysSinceLastRollCall(const std::string& id,
  87. int daynum) {
  88. days_since_last_rollcalls_[id] = daynum;
  89. }
  90. } // namespace update_client