| Index: chrome/browser/safe_browsing/test_safe_browsing_service.h
|
| diff --git a/chrome/browser/safe_browsing/test_safe_browsing_service.h b/chrome/browser/safe_browsing/test_safe_browsing_service.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f2e377dd2fc4ca955d8ed5969114238c1c82cfd6
|
| --- /dev/null
|
| +++ b/chrome/browser/safe_browsing/test_safe_browsing_service.h
|
| @@ -0,0 +1,131 @@
|
| +// Copyright (c) 2016 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_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_
|
| +#define CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_
|
| +
|
| +#include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
| +
|
| +#include "chrome/browser/safe_browsing/protocol_manager.h"
|
| +#include "chrome/browser/safe_browsing/protocol_manager_helper.h"
|
| +#include "chrome/browser/safe_browsing/ui_manager.h"
|
| +#include "components/safe_browsing_db/v4_protocol_manager_util.h"
|
| +
|
| +namespace safe_browsing {
|
| +struct SafeBrowsingProtocolConfig;
|
| +class SafeBrowsingDatabaseManager;
|
| +class SafeBrowsingPingManager;
|
| +class SafeBrowsingProtocolManager;
|
| +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:
|
| + TestSafeBrowsingService();
|
| + // SafeBrowsingService overrides
|
| + SafeBrowsingProtocolConfig GetProtocolConfig() const override;
|
| + V4ProtocolConfig GetV4ProtocolConfig() const override;
|
| +
|
| + std::string serilized_download_report();
|
| + void ClearDownloadReport();
|
| +
|
| + // In browser tests, the following setters must be called before
|
| + // SafeBrowsingService::Initialize().
|
| + // The preferable way to use these setters is by calling corresponding
|
| + // TestSafeBrowsingServiceFactory::SetTest[DatabaseManager/UIManager/
|
| + // ProtocolConfig]() before InProcessBrowserTest::SetUp() is called. Then
|
| + // inside TestSafeBrowsingServiceFactory::CreateSafeBrowsingService(),
|
| + // TestSafeBrowsingService instance is created, customised(by using the
|
| + // following setters), and then initialized.
|
| + void SetUIManager(TestSafeBrowsingUIManager* ui_manager);
|
| + void SetDatabaseManager(TestSafeBrowsingDatabaseManager* database_manager);
|
| + void SetProtocolConfig(SafeBrowsingProtocolConfig* protocol_config);
|
| + void SetV4ProtocolConfig(V4ProtocolConfig* v4_protocol_config);
|
| +
|
| + protected:
|
| + // SafeBrowsingService overrides
|
| + ~TestSafeBrowsingService() override;
|
| + SafeBrowsingDatabaseManager* CreateDatabaseManager() override;
|
| + SafeBrowsingUIManager* CreateUIManager() override;
|
| + SafeBrowsingProtocolManagerDelegate* GetProtocolManagerDelegate() override;
|
| + void SendSerializedDownloadReport(const std::string& report) override;
|
| +
|
| + private:
|
| + bool protocol_manager_delegate_disabled_;
|
| + std::unique_ptr<SafeBrowsingProtocolConfig> protocol_config_;
|
| + std::unique_ptr<V4ProtocolConfig> v4_protocol_config_;
|
| + std::string serialized_download_report_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestSafeBrowsingService);
|
| +};
|
| +
|
| +class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory {
|
| + public:
|
| + TestSafeBrowsingServiceFactory();
|
| + ~TestSafeBrowsingServiceFactory() override;
|
| +
|
| + // Creates test safe browsing service, and configures test UI manager,
|
| + // database manager and so on.
|
| + SafeBrowsingService* CreateSafeBrowsingService() override;
|
| +
|
| + TestSafeBrowsingService* test_safe_browsing_service();
|
| +
|
| + // Test UI manager, database manager and protocol config need to be set before
|
| + // SafeBrowsingService::Initialize() is called.
|
| + void SetTestUIManager(TestSafeBrowsingUIManager* ui_manager);
|
| + void SetTestDatabaseManager(
|
| + TestSafeBrowsingDatabaseManager* database_manager);
|
| + void SetTestProtocolConfig(const SafeBrowsingProtocolConfig& protocol_config);
|
| +
|
| + private:
|
| + TestSafeBrowsingService* test_safe_browsing_service_;
|
| + scoped_refptr<TestSafeBrowsingDatabaseManager> test_database_manager_;
|
| + scoped_refptr<TestSafeBrowsingUIManager> test_ui_manager_;
|
| + SafeBrowsingProtocolConfig* test_protocol_config_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestSafeBrowsingServiceFactory);
|
| +};
|
| +
|
| +// 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 {
|
| + public:
|
| + TestSafeBrowsingUIManager();
|
| + explicit TestSafeBrowsingUIManager(
|
| + const scoped_refptr<SafeBrowsingService>& service);
|
| + void SendSerializedThreatDetails(const std::string& serialized) override;
|
| + void SetSafeBrowsingService(SafeBrowsingService* sb_service);
|
| + std::list<std::string>* GetThreatDetails();
|
| +
|
| + protected:
|
| + ~TestSafeBrowsingUIManager() override;
|
| + std::list<std::string> details_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestSafeBrowsingUIManager);
|
| +};
|
| +
|
| +} // namespace safe_browsing
|
| +
|
| +#endif // CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_
|
|
|