Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: chrome/browser/safe_browsing/test_safe_browsing_service.h

Issue 1943993006: Create test fixture for SafeBrowsingService (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase update Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2016 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.
4
5 #ifndef CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_
6 #define CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_
7
8 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
9
10 #include "chrome/browser/safe_browsing/protocol_manager.h"
11 #include "chrome/browser/safe_browsing/protocol_manager_helper.h"
12 #include "chrome/browser/safe_browsing/ui_manager.h"
13 #include "components/safe_browsing_db/v4_protocol_manager_util.h"
14
15 namespace safe_browsing {
16 struct SafeBrowsingProtocolConfig;
17 class SafeBrowsingDatabaseManager;
18 class SafeBrowsingPingManager;
19 class SafeBrowsingProtocolManager;
20 struct V4ProtocolConfig;
21 class TestSafeBrowsingDatabaseManager;
22 class TestSafeBrowsingUIManager;
23
24 // TestSafeBrowsingService and its factory provides a flexible way to configure
25 // customized safe browsing UI manager, database manager, protocol manager,
26 // and etc without the need of override SafeBrowsingService in tests over and
27 // over again.
28 //
29 // How to configure TestSafeBrowsingService in browser tests set up?
30 // * When overriding SetUp():
31 // (1) create an instance of TestSafeBrowsingServiceFactory (
32 // e.g. test_sb_factory_),
33 // (2) Set up necessary test components by calling
34 // test_sb_factory_->SetTest[DatabaseManager/UIManager/...](...),
35 // (3) Register TestSafeBrowsingServiceFactory
36 // SafeBrowsingService::RegisterFactory(test_sb_factory_);
37 // (4) InProcessBrowserTest::SetUp() or other base class SetUp() function must
38 // be called at last.
39 // * When overriding TearDown():
40 // Call base class TearDown() first then call
41 // SafeBrowsingService::RegisterFactory(nullptr) to unregister
42 // test_sb_factory_.
43 class TestSafeBrowsingService : public SafeBrowsingService {
44 public:
45 TestSafeBrowsingService();
46 // SafeBrowsingService overrides
47 SafeBrowsingProtocolConfig GetProtocolConfig() const override;
48 V4ProtocolConfig GetV4ProtocolConfig() const override;
49
50 std::string serilized_download_report();
51 void ClearDownloadReport();
52
53 // In browser tests, the following setters must be called before
54 // SafeBrowsingService::Initialize().
55 // The preferable way to use these setters is by calling corresponding
56 // TestSafeBrowsingServiceFactory::SetTest[DatabaseManager/UIManager/
57 // ProtocolConfig]() before InProcessBrowserTest::SetUp() is called. Then
58 // inside TestSafeBrowsingServiceFactory::CreateSafeBrowsingService(),
59 // TestSafeBrowsingService instance is created, customised(by using the
60 // following setters), and then initialized.
61 void SetUIManager(TestSafeBrowsingUIManager* ui_manager);
62 void SetDatabaseManager(TestSafeBrowsingDatabaseManager* database_manager);
63 void SetProtocolConfig(SafeBrowsingProtocolConfig* protocol_config);
64 void SetV4ProtocolConfig(V4ProtocolConfig* v4_protocol_config);
asanka 2016/05/18 17:08:47 At the moment we have two sets of SB satellite ser
Jialiu Lin 2016/05/18 19:06:55 I tried to consolidate these two cases, but found
65
66 protected:
67 // SafeBrowsingService overrides
68 ~TestSafeBrowsingService() override;
69 SafeBrowsingDatabaseManager* CreateDatabaseManager() override;
70 SafeBrowsingUIManager* CreateUIManager() override;
71 SafeBrowsingProtocolManagerDelegate* GetProtocolManagerDelegate() override;
72 void SendSerializedDownloadReport(const std::string& report) override;
73
74 private:
75 bool protocol_manager_delegate_disabled_;
76 std::unique_ptr<SafeBrowsingProtocolConfig> protocol_config_;
77 std::unique_ptr<V4ProtocolConfig> v4_protocol_config_;
78 std::string serialized_download_report_;
79
80 DISALLOW_COPY_AND_ASSIGN(TestSafeBrowsingService);
81 };
82
83 class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory {
84 public:
85 TestSafeBrowsingServiceFactory();
86 ~TestSafeBrowsingServiceFactory() override;
87
88 // Creates test safe browsing service, and configures test UI manager,
89 // database manager and so on.
90 SafeBrowsingService* CreateSafeBrowsingService() override;
91
92 TestSafeBrowsingService* test_safe_browsing_service();
93
94 // Test UI manager, database manager and protocol config need to be set before
95 // SafeBrowsingService::Initialize() is called.
96 void SetTestUIManager(TestSafeBrowsingUIManager* ui_manager);
97 void SetTestDatabaseManager(
98 TestSafeBrowsingDatabaseManager* database_manager);
99 void SetTestProtocolConfig(const SafeBrowsingProtocolConfig& protocol_config);
100
101 private:
102 TestSafeBrowsingService* test_safe_browsing_service_;
103 scoped_refptr<TestSafeBrowsingDatabaseManager> test_database_manager_;
104 scoped_refptr<TestSafeBrowsingUIManager> test_ui_manager_;
105 SafeBrowsingProtocolConfig* test_protocol_config_;
106
107 DISALLOW_COPY_AND_ASSIGN(TestSafeBrowsingServiceFactory);
108 };
109
110 // This is an implemenation of SafeBrowsingUIManager without actually
111 // sending report to safe browsing backend. Safe browsing reports are
112 // stored in strings for easy verification.
113 class TestSafeBrowsingUIManager : public SafeBrowsingUIManager {
114 public:
115 TestSafeBrowsingUIManager();
116 explicit TestSafeBrowsingUIManager(
117 const scoped_refptr<SafeBrowsingService>& service);
118 void SendSerializedThreatDetails(const std::string& serialized) override;
119 void SetSafeBrowsingService(SafeBrowsingService* sb_service);
120 std::list<std::string>* GetThreatDetails();
121
122 protected:
123 ~TestSafeBrowsingUIManager() override;
124 std::list<std::string> details_;
125
126 DISALLOW_COPY_AND_ASSIGN(TestSafeBrowsingUIManager);
127 };
128
129 } // namespace safe_browsing
130
131 #endif // CHROME_BROWSER_SAFE_BROWSING_TEST_SAFE_BROWSING_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/safe_browsing_test.cc ('k') | chrome/browser/safe_browsing/test_safe_browsing_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698