Modularize //chrome/browser/file_system_access
R=erikchen@chromium.org
Bug: 366272539
Change-Id: Iac1b4304dfd4c1775426d3eea08c55b31106db26
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5860419
Reviewed-by: Erik Chen <erikchen@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1355488}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 392043bf..640be07 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -551,16 +551,6 @@
"feature_engagement/tracker_factory.h",
"file_select_helper.cc",
"file_select_helper.h",
- "file_system_access/chrome_file_system_access_permission_context.cc",
- "file_system_access/chrome_file_system_access_permission_context.h",
- "file_system_access/file_system_access_features.cc",
- "file_system_access/file_system_access_features.h",
- "file_system_access/file_system_access_permission_context_factory.cc",
- "file_system_access/file_system_access_permission_context_factory.h",
- "file_system_access/file_system_access_permission_request_manager.cc",
- "file_system_access/file_system_access_permission_request_manager.h",
- "file_system_access/file_system_access_tab_helper.cc",
- "file_system_access/file_system_access_tab_helper.h",
"file_util_service.cc",
"file_util_service.h",
"first_party_sets/first_party_sets_navigation_throttle.cc",
@@ -1804,6 +1794,7 @@
"//chrome/browser/feedback:feedback_impl",
"//chrome/browser/google",
"//chrome/browser/media/webrtc",
+ "//chrome/browser/file_system_access:impl",
"//chrome/browser/search",
# Circular dependency due to SystemNetworkContextManager.
@@ -1916,6 +1907,8 @@
"//chrome/browser/favicon",
"//chrome/browser/feedback",
"//chrome/browser/feedback:feedback_impl",
+ "//chrome/browser/file_system_access",
+ "//chrome/browser/file_system_access:impl",
"//chrome/browser/fingerprinting_protection",
"//chrome/browser/first_party_sets",
"//chrome/browser/image_decoder",
diff --git a/chrome/browser/ash/fileapi/BUILD.gn b/chrome/browser/ash/fileapi/BUILD.gn
index 1e0ad16..199e42f5 100644
--- a/chrome/browser/ash/fileapi/BUILD.gn
+++ b/chrome/browser/ash/fileapi/BUILD.gn
@@ -93,6 +93,7 @@
"//chrome/browser/ash/fusebox",
"//chrome/browser/ash/profiles",
"//chrome/browser/extensions",
+ "//chrome/browser/file_system_access",
"//chrome/common:common",
"//chrome/common/extensions/api",
"//chromeos/ash/components/dbus/cros_disks",
@@ -147,6 +148,7 @@
"//chrome/browser/ash/fileapi",
"//chrome/browser/ash/fileapi/test:test_support",
"//chrome/browser/ash/login/users:test_support",
+ "//chrome/browser/file_system_access",
"//chrome/browser/profiles:profile",
"//chrome/test:test_support",
"//chromeos/ash/components/dbus/cros_disks",
diff --git a/chrome/browser/ash/system_web_apps/BUILD.gn b/chrome/browser/ash/system_web_apps/BUILD.gn
index ce92315..d6204bf 100644
--- a/chrome/browser/ash/system_web_apps/BUILD.gn
+++ b/chrome/browser/ash/system_web_apps/BUILD.gn
@@ -105,6 +105,7 @@
"//chrome/browser/ash/file_manager:test_support",
"//chrome/browser/ash/system_web_apps/test_support",
"//chrome/browser/ash/system_web_apps/test_support:test_support_ui",
+ "//chrome/browser/file_system_access",
"//chrome/browser/ui",
"//chrome/browser/ui/ash/shelf",
"//chrome/browser/ui/ash/system_web_apps",
diff --git a/chrome/browser/chromeos/policy/dlp/BUILD.gn b/chrome/browser/chromeos/policy/dlp/BUILD.gn
index 61ec088c4..456fbfe 100644
--- a/chrome/browser/chromeos/policy/dlp/BUILD.gn
+++ b/chrome/browser/chromeos/policy/dlp/BUILD.gn
@@ -258,6 +258,7 @@
"//chrome/browser",
"//chrome/browser:browser_process",
"//chrome/browser/chromeos/policy/dlp/test:test_support",
+ "//chrome/browser/file_system_access",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui",
"//chrome/common:constants",
diff --git a/chrome/browser/file_system_access/BUILD.gn b/chrome/browser/file_system_access/BUILD.gn
new file mode 100644
index 0000000..889d8f2
--- /dev/null
+++ b/chrome/browser/file_system_access/BUILD.gn
@@ -0,0 +1,127 @@
+# Copyright 2024 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//components/enterprise/buildflags/buildflags.gni")
+import("//components/safe_browsing/buildflags.gni")
+
+assert(is_win || is_mac || is_linux || is_chromeos || is_android)
+
+source_set("file_system_access") {
+ sources = [
+ "chrome_file_system_access_permission_context.h",
+ "file_system_access_features.h",
+ "file_system_access_permission_context_factory.h",
+ "file_system_access_permission_request_manager.h",
+ "file_system_access_tab_helper.h",
+ ]
+ public_deps = [
+ "//base",
+ "//chrome/browser/permissions",
+ "//chrome/browser/profiles:profile",
+ "//components/enterprise/buildflags",
+ "//components/enterprise/common:files_scan_data",
+ "//content/public/browser",
+ "//third_party/blink/public/common",
+ "//url",
+ ]
+ if (!is_android) {
+ public_deps += [
+ "//chrome/browser/web_applications",
+ "//components/permissions",
+ "//components/permissions:permissions_common",
+ ]
+ }
+}
+
+source_set("impl") {
+ sources = [
+ "chrome_file_system_access_permission_context.cc",
+ "file_system_access_features.cc",
+ "file_system_access_permission_context_factory.cc",
+ "file_system_access_permission_request_manager.cc",
+ "file_system_access_tab_helper.cc",
+ ]
+ deps = [
+ ":file_system_access",
+ "//chrome/browser:browser_process",
+ "//chrome/browser/safe_browsing",
+ "//chrome/browser/ui",
+ "//components/content_settings/core/browser",
+ "//components/pdf/common:util",
+ ]
+ if (safe_browsing_mode != 0) {
+ deps += [ "//components/safe_browsing/content/common:file_type_policies" ]
+ }
+
+ if (!is_android) {
+ deps += [ "//extensions/browser" ]
+ }
+
+ public_deps = [ "//chrome/browser:browser_public_dependencies" ]
+}
+
+if (!is_android) {
+ source_set("browser_tests") {
+ testonly = true
+ defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
+ sources = [
+ "chrome_file_system_access_permission_context_browsertest.cc",
+ "file_system_access_picker_requires_user_gesture_browsertest.cc",
+ "file_system_access_tab_helper_browsertest.cc",
+ "file_system_file_handle_browsertest.cc",
+ "file_system_observer_browsertest.cc",
+ ]
+
+ deps = [
+ ":file_system_access",
+ "//base",
+ "//base/test:test_support",
+ "//chrome/browser/profiles:profile",
+ "//chrome/test:test_support",
+ "//chrome/test:test_support_ui",
+ "//components/content_settings/core/browser:cookie_settings",
+ "//components/content_settings/core/common",
+ "//components/permissions",
+ "//components/permissions:permissions_common",
+ "//components/policy:generated",
+ "//components/policy:policy_code_generate",
+ "//components/policy/core/browser",
+ "//components/policy/core/common",
+ "//components/policy/core/common:common_constants",
+ "//components/policy/core/common:test_support",
+ "//content/public/browser",
+ "//content/public/common",
+ "//content/test:test_support",
+ "//extensions:test_support",
+ "//net:test_support",
+ "//testing/gtest",
+ "//ui/shell_dialogs",
+ "//url",
+ ]
+ }
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [ "chrome_file_system_access_permission_context_unittest.cc" ]
+ deps = [
+ ":file_system_access",
+ "//base/test:test_support",
+ "//chrome/test:test_support",
+ "//components/content_settings/core/browser",
+ "//components/sync_preferences:test_support",
+ "//content/test:test_support",
+ "//ui/shell_dialogs",
+ "//ui/webui",
+ ]
+
+ if (enterprise_cloud_content_analysis) {
+ deps += [ "//chrome/browser/enterprise/connectors/test:test_support" ]
+ }
+
+ if (!is_android) {
+ deps +=
+ [ "//chrome/browser/web_applications:web_applications_test_support" ]
+ }
+}
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index c8ff840..f0fc8150 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -409,6 +409,7 @@
"//chrome/browser/devtools",
"//chrome/browser/favicon",
"//chrome/browser/feedback:feedback_impl",
+ "//chrome/browser/file_system_access",
"//chrome/browser/fingerprinting_protection",
"//chrome/browser/google",
"//chrome/browser/image_decoder",
diff --git a/chrome/browser/ui/apps/BUILD.gn b/chrome/browser/ui/apps/BUILD.gn
index cdf6fee3..2f56543b 100644
--- a/chrome/browser/ui/apps/BUILD.gn
+++ b/chrome/browser/ui/apps/BUILD.gn
@@ -38,6 +38,7 @@
"//chrome/browser/apps/platform_apps",
"//chrome/browser/devtools",
"//chrome/browser/favicon",
+ "//chrome/browser/file_system_access",
"//chrome/browser/media/webrtc",
"//chrome/browser/picture_in_picture",
"//chrome/browser/profiles:profile",
diff --git a/chrome/browser/ui/ash/holding_space/BUILD.gn b/chrome/browser/ui/ash/holding_space/BUILD.gn
index 11a0f38..7e9e151 100644
--- a/chrome/browser/ui/ash/holding_space/BUILD.gn
+++ b/chrome/browser/ui/ash/holding_space/BUILD.gn
@@ -97,6 +97,7 @@
"//chrome/browser/ash/file_suggest",
"//chrome/browser/ash/file_suggest:test_support",
"//chrome/browser/ash/profiles",
+ "//chrome/browser/file_system_access",
"//chrome/browser/nearby_sharing/common",
"//chrome/test:test_support",
"//chromeos/ash/components/disks",
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 8c61a1bf3..762ac8b 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1918,6 +1918,8 @@
"//chrome/browser/favicon",
"//chrome/browser/feedback",
"//chrome/browser/feedback:feedback_impl",
+ "//chrome/browser/file_system_access",
+ "//chrome/browser/file_system_access:browser_tests",
"//chrome/browser/first_party_sets",
"//chrome/browser/headless:browser_tests",
"//chrome/browser/icon_transcoder:browser_tests",
@@ -2694,11 +2696,6 @@
"../browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api_browsertest.cc",
"../browser/fast_shutdown_browsertest.cc",
"../browser/favicon/content_favicon_driver_browsertest.cc",
- "../browser/file_system_access/chrome_file_system_access_permission_context_browsertest.cc",
- "../browser/file_system_access/file_system_access_picker_requires_user_gesture_browsertest.cc",
- "../browser/file_system_access/file_system_access_tab_helper_browsertest.cc",
- "../browser/file_system_access/file_system_file_handle_browsertest.cc",
- "../browser/file_system_access/file_system_observer_browsertest.cc",
"../browser/fingerprinting_protection/fingerprinting_protection_filter_browsertest.cc",
"../browser/fingerprinting_protection/fingerprinting_protection_filter_ruleset_browsertest.cc",
"../browser/first_party_sets/first_party_sets_browsertest.cc",
@@ -5588,6 +5585,7 @@
"//chrome/browser/chromeos/printing/print_preview",
"//chrome/browser/chromeos/smart_reader",
"//chrome/browser/chromeos/video_conference",
+ "//chrome/browser/file_system_access",
"//chrome/browser/lacros/account_manager:test_support_ui",
"//chrome/browser/media/router:test_support",
"//chrome/browser/media/router/discovery/access_code:access_code_cast_feature",
@@ -6133,7 +6131,6 @@
"../browser/favicon/favicon_utils_unittest.cc",
"../browser/favicon/large_icon_service_factory_unittest.cc",
"../browser/file_select_helper_unittest.cc",
- "../browser/file_system_access/chrome_file_system_access_permission_context_unittest.cc",
"../browser/first_party_sets/first_party_sets_navigation_throttle_unittest.cc",
"../browser/first_party_sets/first_party_sets_overrides_policy_handler_unittest.cc",
"../browser/first_party_sets/first_party_sets_policy_service_factory_unittest.cc",
@@ -6635,6 +6632,8 @@
"//chrome/browser/favicon",
"//chrome/browser/feedback",
"//chrome/browser/feedback:feedback_impl",
+ "//chrome/browser/file_system_access",
+ "//chrome/browser/file_system_access:unit_tests",
"//chrome/browser/fingerprinting_protection",
"//chrome/browser/first_party_sets",
"//chrome/browser/google:unit_tests",
@@ -11017,6 +11016,7 @@
"//chrome/browser/autofill:test_support_ui",
"//chrome/browser/devtools",
"//chrome/browser/devtools:test_support",
+ "//chrome/browser/file_system_access",
"//chrome/browser/media/router/discovery/access_code:access_code_cast_feature",
"//chrome/browser/media/router/discovery/access_code:access_code_sink_service",
"//chrome/browser/media/webrtc",