| Index: chrome/browser/extensions/test_blacklist.cc
|
| diff --git a/chrome/browser/extensions/test_blacklist.cc b/chrome/browser/extensions/test_blacklist.cc
|
| index c14cee1339ae23574c872d29f72ef0a396583f06..f4941bdd6a8e1edc2b9e779e616360a0b6ea733c 100644
|
| --- a/chrome/browser/extensions/test_blacklist.cc
|
| +++ b/chrome/browser/extensions/test_blacklist.cc
|
| @@ -9,14 +9,13 @@
|
| #include "base/bind.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| +#include "base/stl_util.h"
|
| #include "chrome/browser/extensions/blacklist.h"
|
| +#include "chrome/browser/extensions/blacklist_state_fetcher.h"
|
| +#include "chrome/browser/extensions/fake_safe_browsing_database_manager.h"
|
|
|
| namespace extensions {
|
|
|
| -TestBlacklist::TestBlacklist(Blacklist* blacklist)
|
| - : blacklist_(blacklist) {
|
| -}
|
| -
|
| namespace {
|
|
|
| void Assign(BlacklistState *out, BlacklistState in) {
|
| @@ -25,6 +24,93 @@ void Assign(BlacklistState *out, BlacklistState in) {
|
|
|
| } // namespace
|
|
|
| +BlacklistStateFetcherMock::BlacklistStateFetcherMock() : request_count_(0) {}
|
| +
|
| +BlacklistStateFetcherMock::~BlacklistStateFetcherMock() {}
|
| +
|
| +void BlacklistStateFetcherMock::Request(const std::string& id,
|
| + const RequestCallback& callback) {
|
| + ++request_count_;
|
| +
|
| + BlacklistState result = NOT_BLACKLISTED;
|
| + if (ContainsKey(states_, id))
|
| + result = states_[id];
|
| +
|
| + base::MessageLoopProxy::current()->PostTask(FROM_HERE,
|
| + base::Bind(callback, result));
|
| +}
|
| +
|
| +void BlacklistStateFetcherMock::SetState(const std::string& id,
|
| + BlacklistState state) {
|
| + states_[id] = state;
|
| +}
|
| +
|
| +void BlacklistStateFetcherMock::Clear() {
|
| + states_.clear();
|
| +}
|
| +
|
| +
|
| +TestBlacklist::TestBlacklist()
|
| + : blacklist_(NULL),
|
| + blacklist_db_(new FakeSafeBrowsingDatabaseManager(true)),
|
| + scoped_blacklist_db_(blacklist_db_) {
|
| +}
|
| +
|
| +TestBlacklist::TestBlacklist(Blacklist* blacklist)
|
| + : blacklist_(NULL),
|
| + blacklist_db_(new FakeSafeBrowsingDatabaseManager(true)),
|
| + scoped_blacklist_db_(blacklist_db_) {
|
| + Attach(blacklist);
|
| +}
|
| +
|
| +TestBlacklist::~TestBlacklist() {
|
| + Detach();
|
| +}
|
| +
|
| +void TestBlacklist::Attach(Blacklist* blacklist) {
|
| + if (blacklist_)
|
| + Detach();
|
| +
|
| + blacklist_ = blacklist;
|
| + blacklist_->SetBlacklistStateFetcherForTest(&state_fetcher_mock_);
|
| +}
|
| +
|
| +void TestBlacklist::Detach() {
|
| + blacklist_->ResetBlacklistStateFetcherForTest();
|
| +}
|
| +
|
| +void TestBlacklist::SetBlacklistState(const std::string& extension_id,
|
| + BlacklistState state,
|
| + bool notify) {
|
| + state_fetcher_mock_.SetState(extension_id, state);
|
| +
|
| + switch (state) {
|
| + case NOT_BLACKLISTED:
|
| + blacklist_db_->RemoveUnsafe(extension_id);
|
| + break;
|
| +
|
| + case BLACKLISTED_MALWARE:
|
| + case BLACKLISTED_SECURITY_VULNERABILITY:
|
| + case BLACKLISTED_CWS_POLICY_VIOLATION:
|
| + case BLACKLISTED_POTENTIALLY_UNWANTED:
|
| + blacklist_db_->AddUnsafe(extension_id);
|
| + break;
|
| +
|
| + default:
|
| + break;
|
| + }
|
| +
|
| + if (notify)
|
| + blacklist_db_->NotifyUpdate();
|
| +}
|
| +
|
| +void TestBlacklist::Clear(bool notify) {
|
| + state_fetcher_mock_.Clear();
|
| + blacklist_db_->ClearUnsafe();
|
| + if (notify)
|
| + blacklist_db_->NotifyUpdate();
|
| +}
|
| +
|
| BlacklistState TestBlacklist::GetBlacklistState(
|
| const std::string& extension_id) {
|
| BlacklistState blacklist_state;
|
| @@ -34,4 +120,16 @@ BlacklistState TestBlacklist::GetBlacklistState(
|
| return blacklist_state;
|
| }
|
|
|
| +void TestBlacklist::DisableSafeBrowsing() {
|
| + blacklist_db_->Disable();
|
| +}
|
| +
|
| +void TestBlacklist::EnableSafeBrowsing() {
|
| + blacklist_db_->Enable();
|
| +}
|
| +
|
| +void TestBlacklist::NotifyUpdate() {
|
| + blacklist_db_->NotifyUpdate();
|
| +}
|
| +
|
| } // namespace extensions
|
|
|