blob: d8061ed284fc19f7fe472099f9817bb644dedbaa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_EXTENSIONS_TEST_BLACKLIST_H_
#define CHROME_BROWSER_EXTENSIONS_TEST_BLACKLIST_H_
#include <map>
#include <string>
#include "base/basictypes.h"
#include "chrome/browser/extensions/blacklist.h"
#include "chrome/browser/extensions/blacklist_state_fetcher.h"
namespace extensions {
class FakeSafeBrowsingDatabaseManager;
// Replace BlacklistStateFetcher for testing of the Blacklist class.
class BlacklistStateFetcherMock : public BlacklistStateFetcher {
public:
BlacklistStateFetcherMock();
~BlacklistStateFetcherMock() override;
void Request(const std::string& id, const RequestCallback& callback) override;
void SetState(const std::string& id, BlacklistState state);
void Clear();
int request_count() const { return request_count_; }
private:
std::map<std::string, BlacklistState> states_;
int request_count_;
};
// A wrapper for an extensions::Blacklist that provides functionality for
// testing. It sets up mocks for SafeBrowsing database and BlacklistFetcher,
// that are used by blacklist to retrieve respectively the set of blacklisted
// extensions and their blacklist states.
class TestBlacklist {
public:
// Use this if the SafeBrowsing and/or StateFetcher mocks should be created
// before initializing the Blacklist.
explicit TestBlacklist();
explicit TestBlacklist(Blacklist* blacklist);
~TestBlacklist();
void Attach(Blacklist* blacklist);
// Only call this if Blacklist is destroyed before TestBlacklist, otherwise
// it will be performed from the destructor.
void Detach();
Blacklist* blacklist() { return blacklist_; }
// Set the extension state in SafeBrowsingDatabaseManager and
// BlacklistFetcher.
void SetBlacklistState(const std::string& extension_id,
BlacklistState state,
bool notify);
BlacklistState GetBlacklistState(const std::string& extension_id);
void Clear(bool notify);
void DisableSafeBrowsing();
void EnableSafeBrowsing();
void NotifyUpdate();
const BlacklistStateFetcherMock* fetcher() { return &state_fetcher_mock_; }
private:
Blacklist* blacklist_;
// The BlacklistStateFetcher object is normally managed by Blacklist. Because
// of this, we need to prevent this object from being deleted with Blacklist.
// For this, Detach() should be called before blacklist_ is deleted.
BlacklistStateFetcherMock state_fetcher_mock_;
scoped_refptr<FakeSafeBrowsingDatabaseManager> blacklist_db_;
Blacklist::ScopedDatabaseManagerForTest scoped_blacklist_db_;
DISALLOW_COPY_AND_ASSIGN(TestBlacklist);
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_TEST_BLACKLIST_H_
|