// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_ #define CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_ #include <list> #include <memory> #include <string> #include "base/memory/raw_ptr.h" #include "chrome/browser/safe_browsing/safe_browsing_service.h" #include "chrome/browser/safe_browsing/services_delegate.h" #include "components/safe_browsing/buildflags.h" #include "components/safe_browsing/content/browser/safe_browsing_blocking_page_factory.h" #include "components/safe_browsing/content/browser/ui_manager.h" #include "components/safe_browsing/core/browser/db/v4_protocol_manager_util.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_url_loader_factory.h" namespace safe_browsing { class SafeBrowsingDatabaseManager; struct V4ProtocolConfig; class TestSafeBrowsingDatabaseManager; class TestSafeBrowsingUIManager; // TestSafeBrowsingService and its factory provides a flexible way to configure // customized safe browsing UI manager, database manager, protocol manager, // and etc without the need of override SafeBrowsingService in tests over and // over again. // // How to configure TestSafeBrowsingService in browser tests set up? // * When overriding SetUp(): // (1) create an instance of TestSafeBrowsingServiceFactory ( // e.g. test_sb_factory_), // (2) Set up necessary test components by calling // test_sb_factory_->SetTest[DatabaseManager/UIManager/...](...), // (3) Register TestSafeBrowsingServiceFactory // SafeBrowsingService::RegisterFactory(test_sb_factory_); // (4) InProcessBrowserTest::SetUp() or other base class SetUp() function must // be called at last. // * When overriding TearDown(): // Call base class TearDown() first then call // SafeBrowsingService::RegisterFactory(nullptr) to unregister // test_sb_factory_. class TestSafeBrowsingService : public SafeBrowsingService, public ServicesDelegate::ServicesCreator { … }; class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory { … }; // This is an implemenation of SafeBrowsingUIManager without actually // sending report to safe browsing backend. Safe browsing reports are // stored in strings for easy verification. class TestSafeBrowsingUIManager : public SafeBrowsingUIManager { … }; } // namespace safe_browsing #endif // CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_