diff options
author | Vitaly Buka <vitalybuka@google.com> | 2016-02-22 16:36:54 -0800 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2016-02-23 19:49:52 +0000 |
commit | d1d52e79eb282d47fb7290e02830d53da67e119b (patch) | |
tree | 1ceceb6f62b5e71acfb72803276c4cf0ae1e44ef | |
parent | 7fc543408c832332849da9a7c306bcba4077756a (diff) | |
download | libweave-d1d52e79eb282d47fb7290e02830d53da67e119b.tar.gz |
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>
-rw-r--r-- | src/access_api_handler_unittest.cc | 1 | ||||
-rw-r--r-- | src/access_black_list_manager.h | 1 | ||||
-rw-r--r-- | src/access_black_list_manager_impl.cc | 9 | ||||
-rw-r--r-- | src/access_black_list_manager_impl.h | 2 | ||||
-rw-r--r-- | src/access_black_list_manager_impl_unittest.cc | 4 |
5 files changed, 17 insertions, 0 deletions
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 @@ namespace weave { 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 @@ class AccessBlackListManager { }; 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::RemoveExpired() { } } +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 @@ void AccessBlackListManagerImpl::Block(const std::vector<uint8_t>& user_id, } 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 @@ class AccessBlackListManagerImpl : public AccessBlackListManager { 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 @@ class AccessBlackListManagerImpl : public AccessBlackListManager { 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, Init) { } 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 @@ TEST_F(AccessBlackListManagerImplTest, Block) { callback.Run(nullptr); }))); manager_->Block({7, 7, 7}, {8, 8, 8}, base::Time::FromTimeT(1419990000), {}); + EXPECT_TRUE(callback_called); } TEST_F(AccessBlackListManagerImplTest, BlockExpired) { |