1 // Copyright 2013 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 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h"
11 #include "base/bind_helpers.h"
12 #include "base/memory/ref_counted.h"
13 #include "base/run_loop.h"
14 #include "base/thread_task_runner_handle.h"
15 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
16 #include "chrome/browser/safe_browsing/safe_browsing_util.h"
18 namespace extensions
{
20 FakeSafeBrowsingDatabaseManager::FakeSafeBrowsingDatabaseManager(bool enabled
)
21 : LocalSafeBrowsingDatabaseManager(
22 make_scoped_refptr(SafeBrowsingService::CreateSafeBrowsingService())),
26 FakeSafeBrowsingDatabaseManager::~FakeSafeBrowsingDatabaseManager() {
29 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::Enable() {
34 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::Disable() {
39 FakeSafeBrowsingDatabaseManager
&
40 FakeSafeBrowsingDatabaseManager::ClearUnsafe() {
45 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::SetUnsafe(
46 const std::string
& a
) {
48 unsafe_ids_
.insert(a
);
52 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::SetUnsafe(
53 const std::string
& a
, const std::string
& b
) {
55 unsafe_ids_
.insert(b
);
59 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::SetUnsafe(
60 const std::string
& a
, const std::string
& b
, const std::string
& c
) {
62 unsafe_ids_
.insert(c
);
66 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::SetUnsafe(
67 const std::string
& a
, const std::string
& b
, const std::string
& c
,
68 const std::string
& d
) {
70 unsafe_ids_
.insert(d
);
74 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::AddUnsafe(
75 const std::string
& a
) {
76 unsafe_ids_
.insert(a
);
80 FakeSafeBrowsingDatabaseManager
& FakeSafeBrowsingDatabaseManager::RemoveUnsafe(
81 const std::string
& a
) {
86 void FakeSafeBrowsingDatabaseManager::NotifyUpdate() {
87 LocalSafeBrowsingDatabaseManager::NotifyDatabaseUpdateFinished(true);
90 bool FakeSafeBrowsingDatabaseManager::CheckExtensionIDs(
91 const std::set
<std::string
>& extension_ids
,
96 // Need to construct the full SafeBrowsingCheck rather than calling
97 // OnCheckExtensionsResult directly because it's protected. Grr!
98 std::vector
<std::string
> extension_ids_vector(extension_ids
.begin(),
100 std::vector
<SBFullHash
> extension_id_hashes
;
101 std::transform(extension_ids_vector
.begin(), extension_ids_vector
.end(),
102 std::back_inserter(extension_id_hashes
),
103 safe_browsing_util::StringToSBFullHash
);
105 scoped_ptr
<SafeBrowsingCheck
> safe_browsing_check(
106 new SafeBrowsingCheck(
110 safe_browsing_util::EXTENSIONBLACKLIST
,
111 std::vector
<SBThreatType
>(1, SB_THREAT_TYPE_EXTENSION
)));
113 for (size_t i
= 0; i
< extension_ids_vector
.size(); ++i
) {
114 const std::string
& extension_id
= extension_ids_vector
[i
];
115 if (unsafe_ids_
.count(extension_id
))
116 safe_browsing_check
->full_hash_results
[i
] = SB_THREAT_TYPE_EXTENSION
;
119 base::ThreadTaskRunnerHandle::Get()->PostTask(
121 base::Bind(&FakeSafeBrowsingDatabaseManager::OnSafeBrowsingResult
, this,
122 base::Passed(&safe_browsing_check
)));
126 void FakeSafeBrowsingDatabaseManager::OnSafeBrowsingResult(
127 scoped_ptr
<SafeBrowsingCheck
> result
) {
128 result
->OnSafeBrowsingResult();
131 } // namespace extensions