Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / chrome / browser / extensions / test_blacklist.h
blobd8061ed284fc19f7fe472099f9817bb644dedbaa
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_
8 #include <map>
9 #include <string>
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 {
21 public:
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);
30 void Clear();
32 int request_count() const { return request_count_; }
34 private:
35 std::map<std::string, BlacklistState> states_;
36 int request_count_;
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.
44 class TestBlacklist {
45 public:
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);
52 ~TestBlacklist();
54 void Attach(Blacklist* blacklist);
56 // Only call this if Blacklist is destroyed before TestBlacklist, otherwise
57 // it will be performed from the destructor.
58 void Detach();
60 Blacklist* blacklist() { return blacklist_; }
62 // Set the extension state in SafeBrowsingDatabaseManager and
63 // BlacklistFetcher.
64 void SetBlacklistState(const std::string& extension_id,
65 BlacklistState state,
66 bool notify);
68 BlacklistState GetBlacklistState(const std::string& extension_id);
70 void Clear(bool notify);
72 void DisableSafeBrowsing();
74 void EnableSafeBrowsing();
76 void NotifyUpdate();
78 const BlacklistStateFetcherMock* fetcher() { return &state_fetcher_mock_; }
80 private:
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_