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 virtual ~BlacklistStateFetcherMock();
26 virtual void Request(const std::string
& id
,
27 const RequestCallback
& callback
) OVERRIDE
;
29 void SetState(const std::string
& id
, BlacklistState state
);
33 int request_count() const { return request_count_
; }
36 std::map
<std::string
, BlacklistState
> states_
;
41 // A wrapper for an extensions::Blacklist that provides functionality for
42 // testing. It sets up mocks for SafeBrowsing database and BlacklistFetcher,
43 // that are used by blacklist to retrieve respectively the set of blacklisted
44 // extensions and their blacklist states.
47 // Use this if the SafeBrowsing and/or StateFetcher mocks should be created
48 // before initializing the Blacklist.
49 explicit TestBlacklist();
51 explicit TestBlacklist(Blacklist
* blacklist
);
55 void Attach(Blacklist
* blacklist
);
57 // Only call this if Blacklist is destroyed before TestBlacklist, otherwise
58 // it will be performed from the destructor.
61 Blacklist
* blacklist() { return blacklist_
; }
63 // Set the extension state in SafeBrowsingDatabaseManager and
65 void SetBlacklistState(const std::string
& extension_id
,
69 BlacklistState
GetBlacklistState(const std::string
& extension_id
);
71 void Clear(bool notify
);
73 void DisableSafeBrowsing();
75 void EnableSafeBrowsing();
79 const BlacklistStateFetcherMock
* fetcher() { return &state_fetcher_mock_
; }
82 Blacklist
* blacklist_
;
84 // The BlacklistStateFetcher object is normally managed by Blacklist. Because
85 // of this, we need to prevent this object from being deleted with Blacklist.
86 // For this, Detach() should be called before blacklist_ is deleted.
87 BlacklistStateFetcherMock state_fetcher_mock_
;
89 scoped_refptr
<FakeSafeBrowsingDatabaseManager
> blacklist_db_
;
91 Blacklist::ScopedDatabaseManagerForTest scoped_blacklist_db_
;
93 DISALLOW_COPY_AND_ASSIGN(TestBlacklist
);
96 } // namespace extensions
98 #endif // CHROME_BROWSER_EXTENSIONS_TEST_BLACKLIST_H_