1# Copyright 2014 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
5import("//components/safe_browsing/buildflags.gni")
6import("//extensions/buildflags/buildflags.gni")
7
8static_library("safe_browsing") {
9  sources = [
10    "chrome_controller_client.cc",
11    "chrome_controller_client.h",
12    "safe_browsing_tab_observer.cc",
13    "safe_browsing_tab_observer.h",
14    "url_checker_delegate_impl.cc",
15    "url_checker_delegate_impl.h",
16  ]
17
18  public_deps = []
19
20  deps = [
21    "//chrome/app:generated_resources",
22    "//chrome/common",
23    "//chrome/common:constants",
24    "//components/browser_sync",
25    "//components/enterprise/common:strings",
26    "//components/keyed_service/content",
27    "//components/language/core/browser",
28    "//components/page_info",
29    "//components/password_manager/core/browser",
30    "//components/password_manager/core/browser:hash_password_manager",
31    "//components/pref_registry",
32    "//components/resources:components_resources_grit",
33    "//components/safe_browsing:buildflags",
34    "//components/safe_browsing/content/web_ui",
35    "//components/safe_browsing/core:features",
36    "//components/safe_browsing/core:ping_manager",
37    "//components/safe_browsing/core/browser:referrer_chain_provider",
38    "//components/safe_browsing/core/common:interfaces",
39    "//components/safe_browsing/core/db:database_manager",
40    "//components/safe_browsing/core/db:v4_local_database_manager",
41    "//components/search_engines",
42    "//components/sessions",
43    "//components/signin/public/identity_manager",
44    "//components/url_formatter",
45    "//mojo/public/cpp/platform",
46    "//mojo/public/cpp/system",
47    "//services/preferences/public/cpp",
48  ]
49
50  if (enable_extensions) {
51    sources += [
52      "settings_reset_prompt/default_settings_fetcher.cc",
53      "settings_reset_prompt/default_settings_fetcher.h",
54      "settings_reset_prompt/settings_reset_prompt_config.cc",
55      "settings_reset_prompt/settings_reset_prompt_config.h",
56      "settings_reset_prompt/settings_reset_prompt_controller.cc",
57      "settings_reset_prompt/settings_reset_prompt_controller.h",
58      "settings_reset_prompt/settings_reset_prompt_model.cc",
59      "settings_reset_prompt/settings_reset_prompt_model.h",
60      "settings_reset_prompt/settings_reset_prompt_prefs_manager.cc",
61      "settings_reset_prompt/settings_reset_prompt_prefs_manager.h",
62    ]
63    if (is_win) {
64      sources += [
65        "settings_reset_prompt/settings_reset_prompt_util_win.cc",
66        "settings_reset_prompt/settings_reset_prompt_util_win.h",
67      ]
68    }
69    deps += [ "//extensions/browser" ]
70  }
71
72  if (safe_browsing_mode != 0) {
73    # "Safe Browsing Basic" files used for safe browsing in full mode
74    # (safe_browsing=1) and mobile (=2)
75    sources += [
76      "certificate_reporting_metrics_provider.cc",
77      "certificate_reporting_metrics_provider.h",
78      "certificate_reporting_service.cc",
79      "certificate_reporting_service.h",
80      "certificate_reporting_service_factory.cc",
81      "certificate_reporting_service_factory.h",
82      "chrome_password_protection_service.cc",
83      "chrome_password_protection_service.h",
84      "client_side_detection_host.cc",
85      "client_side_detection_host.h",
86      "client_side_detection_service.cc",
87      "client_side_detection_service.h",
88      "client_side_detection_service_factory.cc",
89      "client_side_detection_service_factory.h",
90      "client_side_model_loader.cc",
91      "client_side_model_loader.h",
92      "delayed_warning_navigation_throttle.cc",
93      "delayed_warning_navigation_throttle.h",
94      "safe_browsing_blocking_page.cc",
95      "safe_browsing_blocking_page.h",
96      "safe_browsing_navigation_observer.cc",
97      "safe_browsing_navigation_observer.h",
98      "safe_browsing_navigation_observer_manager.cc",
99      "safe_browsing_navigation_observer_manager.h",
100      "safe_browsing_navigation_throttle.cc",
101      "safe_browsing_navigation_throttle.h",
102      "safe_browsing_service.cc",
103      "safe_browsing_service.h",
104      "safe_browsing_subresource_tab_helper.cc",
105      "safe_browsing_subresource_tab_helper.h",
106      "services_delegate.cc",
107      "services_delegate.h",
108      "telemetry/telemetry_service.cc",
109      "telemetry/telemetry_service.h",
110      "test_safe_browsing_blocking_page_quiet.cc",
111      "test_safe_browsing_blocking_page_quiet.h",
112      "trigger_creator.cc",
113      "trigger_creator.h",
114      "ui_manager.cc",
115      "ui_manager.h",
116      "user_interaction_observer.cc",
117      "user_interaction_observer.h",
118    ]
119    deps += [
120      ":metrics_collector",
121      ":url_lookup_service_factory",
122      ":verdict_cache_manager_factory",
123      "//chrome/common/safe_browsing:proto",
124      "//components/safe_browsing/content",
125      "//components/safe_browsing/content/browser",
126      "//components/safe_browsing/content/password_protection",
127      "//components/safe_browsing/content/triggers:ad_popup_trigger",
128      "//components/safe_browsing/content/triggers:ad_redirect_trigger",
129      "//components/safe_browsing/content/triggers:ad_sampler_trigger",
130      "//components/safe_browsing/content/triggers:suspicious_site_trigger",
131      "//components/safe_browsing/core:csd_proto",
132      "//components/safe_browsing/core:file_type_policies",
133      "//components/safe_browsing/core/browser",
134      "//components/safe_browsing/core/common",
135      "//components/safe_browsing/core/common:safe_browsing_prefs",
136      "//components/safe_browsing/core/db:allowlist_checker_client",
137      "//components/safe_browsing/core/db:metadata_proto",
138      "//components/safe_browsing/core/triggers",
139      "//components/safe_browsing/core/triggers:trigger_throttler",
140      "//components/site_engagement/core/mojom:mojo_bindings",
141      "//services/preferences/public/mojom:mojom",
142    ]
143    if (safe_browsing_mode == 1) {
144      # "Safe Browsing Full" files in addition to the "basic" ones to use for
145      # full safe browsing. This has some in common with "mobile."
146      sources += [
147        "../download/download_completion_blocker.cc",
148        "../download/download_completion_blocker.h",
149        "cloud_content_scanning/binary_fcm_service.cc",
150        "cloud_content_scanning/binary_fcm_service.h",
151        "cloud_content_scanning/binary_upload_service.cc",
152        "cloud_content_scanning/binary_upload_service.h",
153        "cloud_content_scanning/binary_upload_service_factory.cc",
154        "cloud_content_scanning/binary_upload_service_factory.h",
155        "cloud_content_scanning/deep_scanning_utils.cc",
156        "cloud_content_scanning/deep_scanning_utils.h",
157        "cloud_content_scanning/file_analysis_request.cc",
158        "cloud_content_scanning/file_analysis_request.h",
159        "cloud_content_scanning/multipart_uploader.cc",
160        "cloud_content_scanning/multipart_uploader.h",
161        "download_protection/check_client_download_request.cc",
162        "download_protection/check_client_download_request.h",
163        "download_protection/check_client_download_request_base.cc",
164        "download_protection/check_client_download_request_base.h",
165        "download_protection/check_native_file_system_write_request.cc",
166        "download_protection/check_native_file_system_write_request.h",
167        "download_protection/deep_scanning_request.cc",
168        "download_protection/deep_scanning_request.h",
169        "download_protection/download_feedback.cc",
170        "download_protection/download_feedback.h",
171        "download_protection/download_feedback_service.cc",
172        "download_protection/download_feedback_service.h",
173        "download_protection/download_protection_service.cc",
174        "download_protection/download_protection_service.h",
175        "download_protection/download_protection_util.cc",
176        "download_protection/download_protection_util.h",
177        "download_protection/download_reporter.cc",
178        "download_protection/download_reporter.h",
179        "download_protection/download_url_sb_client.cc",
180        "download_protection/download_url_sb_client.h",
181        "download_protection/file_analyzer.cc",
182        "download_protection/file_analyzer.h",
183        "download_protection/path_sanitizer.cc",
184        "download_protection/path_sanitizer.h",
185        "download_protection/ppapi_download_request.cc",
186        "download_protection/ppapi_download_request.h",
187        "download_protection/two_phase_uploader.cc",
188        "download_protection/two_phase_uploader.h",
189        "incident_reporting/binary_integrity_analyzer.cc",
190        "incident_reporting/binary_integrity_analyzer.h",
191        "incident_reporting/binary_integrity_incident.cc",
192        "incident_reporting/binary_integrity_incident.h",
193        "incident_reporting/delayed_analysis_callback.h",
194        "incident_reporting/delayed_callback_runner.cc",
195        "incident_reporting/delayed_callback_runner.h",
196        "incident_reporting/download_metadata_manager.cc",
197        "incident_reporting/download_metadata_manager.h",
198        "incident_reporting/environment_data_collection.cc",
199        "incident_reporting/environment_data_collection.h",
200        "incident_reporting/extension_data_collection.cc",
201        "incident_reporting/extension_data_collection.h",
202        "incident_reporting/incident.cc",
203        "incident_reporting/incident.h",
204        "incident_reporting/incident_handler_util.cc",
205        "incident_reporting/incident_handler_util.h",
206        "incident_reporting/incident_receiver.h",
207        "incident_reporting/incident_report_uploader.cc",
208        "incident_reporting/incident_report_uploader.h",
209        "incident_reporting/incident_report_uploader_impl.cc",
210        "incident_reporting/incident_report_uploader_impl.h",
211        "incident_reporting/incident_reporting_service.cc",
212        "incident_reporting/incident_reporting_service.h",
213        "incident_reporting/last_download_finder.cc",
214        "incident_reporting/last_download_finder.h",
215        "incident_reporting/platform_state_store.cc",
216        "incident_reporting/platform_state_store.h",
217        "incident_reporting/preference_validation_delegate.cc",
218        "incident_reporting/preference_validation_delegate.h",
219        "incident_reporting/resource_request_detector.cc",
220        "incident_reporting/resource_request_detector.h",
221        "incident_reporting/resource_request_incident.cc",
222        "incident_reporting/resource_request_incident.h",
223        "incident_reporting/state_store.cc",
224        "incident_reporting/state_store.h",
225        "incident_reporting/tracked_preference_incident.cc",
226        "incident_reporting/tracked_preference_incident.h",
227        "services_delegate_desktop.cc",
228        "services_delegate_desktop.h",
229      ]
230      if (is_mac) {
231        sources += [
232          "incident_reporting/binary_integrity_analyzer_mac.cc",
233          "incident_reporting/binary_integrity_analyzer_mac.h",
234          "signature_evaluator_mac.h",
235          "signature_evaluator_mac.mm",
236        ]
237      } else if (is_win) {
238        sources += [
239          "incident_reporting/binary_integrity_analyzer_win.cc",
240          "incident_reporting/binary_integrity_analyzer_win.h",
241          "incident_reporting/environment_data_collection_win.cc",
242          "incident_reporting/environment_data_collection_win.h",
243          "incident_reporting/module_integrity_verifier_win.cc",
244          "incident_reporting/module_integrity_verifier_win.h",
245          "incident_reporting/platform_state_store_win.cc",
246        ]
247      }
248      public_deps += [
249        ":chrome_enterprise_url_lookup_service",
250        ":chrome_enterprise_url_lookup_service_factory",
251      ]
252      deps += [
253        ":advanced_protection",
254        "//chrome/common/safe_browsing:archive_analyzer_results",
255        "//chrome/common/safe_browsing:binary_feature_extractor",
256        "//chrome/common/safe_browsing:download_type_util",
257        "//chrome/services/file_util/public/cpp",
258        "//components/content_settings/core/browser",
259        "//components/language/core/common",
260        "//components/prefs",
261        "//components/safe_browsing/core:client_model_proto",
262        "//components/safe_browsing/core/db",
263        "//components/security_interstitials/content:security_interstitial_page",
264        "//components/security_interstitials/core:unsafe_resource",
265        "//content/public/browser",
266        "//net",
267      ]
268      if (is_mac) {
269        deps += [ "//chrome/common/safe_browsing:disk_image_type_sniffer_mac" ]
270      } else if (is_win) {
271        deps += [ "//chrome/browser/safe_browsing/incident_reporting:state_store_data_proto" ]
272      }
273    } else if (safe_browsing_mode == 2) {
274      if (is_android) {
275        sources += [
276          "android/services_delegate_android.cc",
277          "android/services_delegate_android.h",
278          "telemetry/android/android_telemetry_service.cc",
279          "telemetry/android/android_telemetry_service.h",
280        ]
281      }
282      deps += [
283        "//chrome/browser/safe_browsing/android",
284        "//components/safe_browsing:buildflags",
285        "//components/safe_browsing/android:safe_browsing_mobile",
286      ]
287    }
288  }
289}
290
291if (safe_browsing_mode == 1) {
292  source_set("chrome_enterprise_url_lookup_service_factory") {
293    visibility = [ ":*" ]
294
295    sources = [
296      "chrome_enterprise_url_lookup_service_factory.cc",
297      "chrome_enterprise_url_lookup_service_factory.h",
298    ]
299
300    deps = [
301      ":chrome_enterprise_url_lookup_service",
302      ":verdict_cache_manager_factory",
303      "//chrome/common",
304      "//components/keyed_service/content",
305      "//content/public/browser",
306    ]
307  }
308
309  source_set("chrome_enterprise_url_lookup_service") {
310    visibility = [ ":*" ]
311
312    sources = [
313      "chrome_enterprise_url_lookup_service.cc",
314      "chrome_enterprise_url_lookup_service.h",
315    ]
316
317    deps = [
318      "//components/prefs",
319      "//components/safe_browsing/core:csd_proto",
320      "//components/safe_browsing/core:realtimeapi_proto",
321      "//components/safe_browsing/core:verdict_cache_manager",
322      "//components/safe_browsing/core/realtime:policy_engine",
323      "//components/safe_browsing/core/realtime:url_lookup_service_base",
324      "//components/sync",
325      "//services/network/public/cpp:cpp",
326    ]
327  }
328}
329
330source_set("url_lookup_service_factory") {
331  sources = [
332    "url_lookup_service_factory.cc",
333    "url_lookup_service_factory.h",
334  ]
335
336  deps = [
337    ":verdict_cache_manager_factory",
338    "//chrome/common",
339    "//components/keyed_service/content",
340    "//components/safe_browsing:buildflags",
341    "//components/safe_browsing/core/realtime:url_lookup_service",
342    "//components/signin/public/identity_manager",
343    "//content/public/browser",
344  ]
345}
346
347source_set("verdict_cache_manager_factory") {
348  sources = [
349    "verdict_cache_manager_factory.cc",
350    "verdict_cache_manager_factory.h",
351  ]
352
353  deps = [
354    "//chrome/common",
355    "//components/content_settings/core/browser",
356    "//components/history/core/browser",
357    "//components/keyed_service/content",
358    "//components/prefs",
359    "//components/safe_browsing/core:verdict_cache_manager",
360    "//content/public/browser",
361  ]
362}
363
364static_library("advanced_protection") {
365  sources = [
366    "advanced_protection_status_manager.cc",
367    "advanced_protection_status_manager.h",
368    "advanced_protection_status_manager_factory.cc",
369    "advanced_protection_status_manager_factory.h",
370  ]
371
372  deps = [
373    "//components/keyed_service/content",
374    "//components/prefs",
375    "//components/safe_browsing/core/common",
376    "//components/safe_browsing/core/common:safe_browsing_prefs",
377    "//components/signin/public/identity_manager",
378    "//content/public/browser",
379  ]
380}
381
382source_set("metrics_collector") {
383  sources = [
384    "safe_browsing_metrics_collector.cc",
385    "safe_browsing_metrics_collector.h",
386    "safe_browsing_metrics_collector_factory.cc",
387    "safe_browsing_metrics_collector_factory.h",
388  ]
389
390  deps = [
391    "//chrome/common",
392    "//components/keyed_service/content",
393    "//components/prefs",
394    "//components/safe_browsing/core/common",
395    "//components/safe_browsing/core/common:safe_browsing_prefs",
396    "//content/public/browser",
397  ]
398}
399
400source_set("test_support") {
401  if (safe_browsing_mode != 0) {
402    sources = [
403      "test_safe_browsing_service.cc",
404      "test_safe_browsing_service.h",
405    ]
406
407    deps = [
408      ":safe_browsing",
409      "//chrome/common/safe_browsing:proto",
410      "//components/safe_browsing:buildflags",
411      "//components/safe_browsing/core/db:database_manager",
412      "//components/safe_browsing/core/db:test_database_manager",
413      "//components/safe_browsing/core/db:v4_protocol_manager_util",
414      "//content/public/browser",
415    ]
416  }
417
418  if (safe_browsing_mode == 1) {
419    sources += [
420      "cloud_content_scanning/test_binary_upload_service.cc",
421      "cloud_content_scanning/test_binary_upload_service.h",
422    ]
423  }
424}
425