aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2016-02-22 16:36:54 -0800
committerVitaly Buka <vitalybuka@google.com>2016-02-23 19:49:52 +0000
commitd1d52e79eb282d47fb7290e02830d53da67e119b (patch)
tree1ceceb6f62b5e71acfb72803276c4cf0ae1e44ef
parent7fc543408c832332849da9a7c306bcba4077756a (diff)
downloadlibweave-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.cc1
-rw-r--r--src/access_black_list_manager.h1
-rw-r--r--src/access_black_list_manager_impl.cc9
-rw-r--r--src/access_black_list_manager_impl.h2
-rw-r--r--src/access_black_list_manager_impl_unittest.cc4
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) {