Add AccessBlackListManager::AddEntryAddedCallback Auth manager will listen to this and reset access code on event. BUG:27300728 Change-Id: Idab52425fc5d1b8b7f34af3b9403cb6a37f6b709 Reviewed-on: https://weave-review.googlesource.com/2705 Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/src/access_api_handler_unittest.cc b/src/access_api_handler_unittest.cc index 3e7f5d7..3c22eaa 100644 --- a/src/access_api_handler_unittest.cc +++ b/src/access_api_handler_unittest.cc
@@ -24,6 +24,7 @@ class MockAccessBlackListManager : public AccessBlackListManager { public: + MOCK_METHOD1(AddEntryAddedCallback, void(const base::Closure&)); MOCK_METHOD4(Block, void(const std::vector<uint8_t>&, const std::vector<uint8_t>&,
diff --git a/src/access_black_list_manager.h b/src/access_black_list_manager.h index b56226a..1184f16 100644 --- a/src/access_black_list_manager.h +++ b/src/access_black_list_manager.h
@@ -26,6 +26,7 @@ }; virtual ~AccessBlackListManager() = default; + virtual void AddEntryAddedCallback(const base::Closure& callback) = 0; virtual void Block(const std::vector<uint8_t>& user_id, const std::vector<uint8_t>& app_id, const base::Time& expiration,
diff --git a/src/access_black_list_manager_impl.cc b/src/access_black_list_manager_impl.cc index 992a680..a57ca36 100644 --- a/src/access_black_list_manager_impl.cc +++ b/src/access_black_list_manager_impl.cc
@@ -86,6 +86,11 @@ } } +void AccessBlackListManagerImpl::AddEntryAddedCallback( + const base::Closure& callback) { + on_entry_added_callbacks_.push_back(callback); +} + void AccessBlackListManagerImpl::Block(const std::vector<uint8_t>& user_id, const std::vector<uint8_t>& app_id, const base::Time& expiration, @@ -110,8 +115,12 @@ } return; } + auto& value = entries_[std::make_pair(user_id, app_id)]; value = std::max(value, expiration); + for (const auto& cb : on_entry_added_callbacks_) + cb.Run(); + Save(callback); }
diff --git a/src/access_black_list_manager_impl.h b/src/access_black_list_manager_impl.h index 1c175db..646d748 100644 --- a/src/access_black_list_manager_impl.h +++ b/src/access_black_list_manager_impl.h
@@ -24,6 +24,7 @@ base::Clock* clock = nullptr); // AccessBlackListManager implementation. + void AddEntryAddedCallback(const base::Closure& callback) override; void Block(const std::vector<uint8_t>& user_id, const std::vector<uint8_t>& app_id, const base::Time& expiration, @@ -49,6 +50,7 @@ provider::ConfigStore* store_{nullptr}; std::map<std::pair<std::vector<uint8_t>, std::vector<uint8_t>>, base::Time> entries_; + std::vector<base::Closure> on_entry_added_callbacks_; DISALLOW_COPY_AND_ASSIGN(AccessBlackListManagerImpl); };
diff --git a/src/access_black_list_manager_impl_unittest.cc b/src/access_black_list_manager_impl_unittest.cc index fd9f226..0e7c0e0 100644 --- a/src/access_black_list_manager_impl_unittest.cc +++ b/src/access_black_list_manager_impl_unittest.cc
@@ -66,6 +66,9 @@ } TEST_F(AccessBlackListManagerImplTest, Block) { + bool callback_called = false; + manager_->AddEntryAddedCallback( + base::Bind([&callback_called]() { callback_called = true; })); EXPECT_CALL(config_store_, SaveSettings("black_list", _, _)) .WillOnce(testing::WithArgs<1, 2>(testing::Invoke( [](const std::string& json, const DoneCallback& callback) { @@ -83,6 +86,7 @@ callback.Run(nullptr); }))); manager_->Block({7, 7, 7}, {8, 8, 8}, base::Time::FromTimeT(1419990000), {}); + EXPECT_TRUE(callback_called); } TEST_F(AccessBlackListManagerImplTest, BlockExpired) {