blob: 7092ebbebe8fe26ceb77d6691442b3692510aebb [file] [log] [blame]
// Copyright 2017 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.
#include <memory>
#include <vector>
#include "base/macros.h"
#include "components/safe_browsing/db/util.h"
namespace safe_browsing {
class ListIdentifier;
class TestSafeBrowsingServiceFactory;
class TestV4GetHashProtocolManagerFactory;
} // namespace safe_browsing
class InsertingDatabaseFactory;
class GURL;
// This class wraps a couple of safe browsing utilities that enable updating
// underlying SafeBrowsing lists to match URLs.
class TestSafeBrowsingDatabaseHelper {
// Use this constructor for more in-depth customization of the database
// helper. In particular, you can choose to:
// 1. Send a nullptr protocol manager factory, so that hash requests are not
// mocked. Callers can consider mocking responses at the HTTP layer instead
// using StartRedirectingV4RequestsForTesting in
// v4_embedded_test_server_util.h.
// 2. Send a vector of additional lists to insert into the store map when
// initializing the test database. This allows lists which need chrome
// branding to function in non chrome branded tests (for developer
// ergonomics).
std::vector<safe_browsing::ListIdentifier> lists_to_insert);
// Only compatible with the kMock policy. Marks the hash prefix for the URL as
// bad in the local database and inserts it into the full hash cache.
void AddFullHashToDbAndFullHashCache(
const GURL& bad_url,
const safe_browsing::ListIdentifier& list_id,
const safe_browsing::ThreatMetadata& threat_metadata);
// Only marks the prefix as bad in the local database. Does not cache any full
// hash response.
void LocallyMarkPrefixAsBad(const GURL& url,
const safe_browsing::ListIdentifier& list_id);
bool HasListSynced(const safe_browsing::ListIdentifier& list_id);
std::unique_ptr<safe_browsing::TestSafeBrowsingServiceFactory> sb_factory_;
// Owned by the V4Database.
InsertingDatabaseFactory* v4_db_factory_ = nullptr;
// Owned by the V4GetHashProtocolManager. Will stay nullptr if the v4 hash
// factory is not being mocked.
safe_browsing::TestV4GetHashProtocolManagerFactory* v4_get_hash_factory_ =