1 // Copyright 2012 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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_TEST_BLACKLIST_H_
6 #define CHROME_BROWSER_EXTENSIONS_TEST_BLACKLIST_H_
11 #include "base/basictypes.h"
12 #include "chrome/browser/extensions/blacklist.h"
13 #include "chrome/browser/extensions/blacklist_state_fetcher.h"
15 namespace extensions
{
17 class FakeSafeBrowsingDatabaseManager
;
19 // Replace BlacklistStateFetcher for testing of the Blacklist class.
20 class BlacklistStateFetcherMock
: public BlacklistStateFetcher
{
22 BlacklistStateFetcherMock();
24 ~BlacklistStateFetcherMock() override
;
26 void Request(const std::string
& id
, const RequestCallback
& callback
) override
;
28 void SetState(const std::string
& id
, BlacklistState state
);
32 int request_count() const { return request_count_
; }
35 std::map
<std::string
, BlacklistState
> states_
;
40 // A wrapper for an extensions::Blacklist that provides functionality for
41 // testing. It sets up mocks for SafeBrowsing database and BlacklistFetcher,
42 // that are used by blacklist to retrieve respectively the set of blacklisted
43 // extensions and their blacklist states.
46 // Use this if the SafeBrowsing and/or StateFetcher mocks should be created
47 // before initializing the Blacklist.
48 explicit TestBlacklist();
50 explicit TestBlacklist(Blacklist
* blacklist
);
54 void Attach(Blacklist
* blacklist
);
56 // Only call this if Blacklist is destroyed before TestBlacklist, otherwise
57 // it will be performed from the destructor.
60 Blacklist
* blacklist() { return blacklist_
; }
62 // Set the extension state in SafeBrowsingDatabaseManager and
64 void SetBlacklistState(const std::string
& extension_id
,
68 BlacklistState
GetBlacklistState(const std::string
& extension_id
);
70 void Clear(bool notify
);
72 void DisableSafeBrowsing();
74 void EnableSafeBrowsing();
78 const BlacklistStateFetcherMock
* fetcher() { return &state_fetcher_mock_
; }
81 Blacklist
* blacklist_
;
83 // The BlacklistStateFetcher object is normally managed by Blacklist. Because
84 // of this, we need to prevent this object from being deleted with Blacklist.
85 // For this, Detach() should be called before blacklist_ is deleted.
86 BlacklistStateFetcherMock state_fetcher_mock_
;
88 scoped_refptr
<FakeSafeBrowsingDatabaseManager
> blacklist_db_
;
90 Blacklist::ScopedDatabaseManagerForTest scoped_blacklist_db_
;
92 DISALLOW_COPY_AND_ASSIGN(TestBlacklist
);
95 } // namespace extensions
97 #endif // CHROME_BROWSER_EXTENSIONS_TEST_BLACKLIST_H_