Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / extensions / test_blacklist.h
blobea10bc47db1f7c041fd8aa6e214cb37cdd494201
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 virtual ~BlacklistStateFetcherMock();
26 virtual void Request(const std::string& id,
27 const RequestCallback& callback) OVERRIDE;
29 void SetState(const std::string& id, BlacklistState state);
31 void Clear();
33 int request_count() const { return request_count_; }
35 private:
36 std::map<std::string, BlacklistState> states_;
37 int request_count_;
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.
45 class TestBlacklist {
46 public:
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);
53 ~TestBlacklist();
55 void Attach(Blacklist* blacklist);
57 // Only call this if Blacklist is destroyed before TestBlacklist, otherwise
58 // it will be performed from the destructor.
59 void Detach();
61 Blacklist* blacklist() { return blacklist_; }
63 // Set the extension state in SafeBrowsingDatabaseManager and
64 // BlacklistFetcher.
65 void SetBlacklistState(const std::string& extension_id,
66 BlacklistState state,
67 bool notify);
69 BlacklistState GetBlacklistState(const std::string& extension_id);
71 void Clear(bool notify);
73 void DisableSafeBrowsing();
75 void EnableSafeBrowsing();
77 void NotifyUpdate();
79 const BlacklistStateFetcherMock* fetcher() { return &state_fetcher_mock_; }
81 private:
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_