Add chrome://files-internals/ SMB logging UI
This also adds an smbfs.enable_verbose_logging pref, similar to the
existing drivefs.enable_verbose_logging pref.
Bug: chromium:1342817
Change-Id: I5877a9fa7f998dfa6da6ee3ad3ec5f245ea76c3d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3954823
Reviewed-by: Dominick Ng <[email protected]>
Reviewed-by: Giovanni Ortuno Urquidi <[email protected]>
Reviewed-by: Ben Reich <[email protected]>
Reviewed-by: Dominic Battré <[email protected]>
Commit-Queue: Nigel Tao <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1060217}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 02d90ac..4bfc8e90 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -5187,6 +5187,7 @@
"//ash/webui/file_manager:file_manager_ui",
"//ash/webui/file_manager/mojom",
"//ash/webui/files_internals",
+ "//ash/webui/files_internals/mojom",
"//ash/webui/firmware_update_ui",
"//ash/webui/firmware_update_ui/mojom",
"//ash/webui/guest_os_installer",
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn
index bb42c2bfc..03458b1 100644
--- a/chrome/browser/ash/BUILD.gn
+++ b/chrome/browser/ash/BUILD.gn
@@ -989,6 +989,8 @@
"file_manager/file_manager_copy_or_move_hook_delegate.h",
"file_manager/file_manager_copy_or_move_hook_file_check_delegate.cc",
"file_manager/file_manager_copy_or_move_hook_file_check_delegate.h",
+ "file_manager/file_manager_pref_names.cc",
+ "file_manager/file_manager_pref_names.h",
"file_manager/file_manager_string_util.cc",
"file_manager/file_manager_string_util.h",
"file_manager/file_tasks.cc",
diff --git a/chrome/browser/ash/file_manager/file_manager_pref_names.cc b/chrome/browser/ash/file_manager/file_manager_pref_names.cc
new file mode 100644
index 0000000..c64888f02
--- /dev/null
+++ b/chrome/browser/ash/file_manager/file_manager_pref_names.cc
@@ -0,0 +1,18 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ash/file_manager/file_manager_pref_names.h"
+
+#include "components/prefs/pref_registry_simple.h"
+
+namespace file_manager::prefs {
+
+// A boolean pref to enable or disable /usr/sbin/smbfs verbose logging.
+const char kSmbfsEnableVerboseLogging[] = "smbfs.enable_verbose_logging";
+
+void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+ registry->RegisterBooleanPref(kSmbfsEnableVerboseLogging, false);
+}
+
+} // namespace file_manager::prefs
diff --git a/chrome/browser/ash/file_manager/file_manager_pref_names.h b/chrome/browser/ash/file_manager/file_manager_pref_names.h
new file mode 100644
index 0000000..0c784d5
--- /dev/null
+++ b/chrome/browser/ash/file_manager/file_manager_pref_names.h
@@ -0,0 +1,18 @@
+// Copyright 2022 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_ASH_FILE_MANAGER_FILE_MANAGER_PREF_NAMES_H_
+#define CHROME_BROWSER_ASH_FILE_MANAGER_FILE_MANAGER_PREF_NAMES_H_
+
+class PrefRegistrySimple;
+
+namespace file_manager::prefs {
+
+extern const char kSmbfsEnableVerboseLogging[];
+
+void RegisterProfilePrefs(PrefRegistrySimple* registry);
+
+} // namespace file_manager::prefs
+
+#endif // CHROME_BROWSER_ASH_FILE_MANAGER_FILE_MANAGER_PREF_NAMES_H_
diff --git a/chrome/browser/ash/smb_client/smb_service.cc b/chrome/browser/ash/smb_client/smb_service.cc
index ad38acd4..f60001f 100644
--- a/chrome/browser/ash/smb_client/smb_service.cc
+++ b/chrome/browser/ash/smb_client/smb_service.cc
@@ -16,6 +16,7 @@
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/default_tick_clock.h"
#include "base/unguessable_token.h"
+#include "chrome/browser/ash/file_manager/file_manager_pref_names.h"
#include "chrome/browser/ash/file_system_provider/mount_path_util.h"
#include "chrome/browser/ash/file_system_provider/provided_file_system_info.h"
#include "chrome/browser/ash/kerberos/kerberos_credentials_manager.h"
@@ -370,6 +371,8 @@
smbfs_options.password = password;
smbfs_options.allow_ntlm = IsNTLMAuthenticationEnabled();
smbfs_options.skip_connect = skip_connect;
+ smbfs_options.enable_verbose_logging = profile_->GetPrefs()->GetBoolean(
+ file_manager::prefs::kSmbfsEnableVerboseLogging);
if (save_credentials && !info.password_salt().empty()) {
smbfs_options.save_restore_password = true;
smbfs_options.account_hash = user->username_hash();
diff --git a/chrome/browser/ash/web_applications/files_internals_ui_delegate.cc b/chrome/browser/ash/web_applications/files_internals_ui_delegate.cc
index be13b74..93db820d 100644
--- a/chrome/browser/ash/web_applications/files_internals_ui_delegate.cc
+++ b/chrome/browser/ash/web_applications/files_internals_ui_delegate.cc
@@ -5,9 +5,16 @@
#include "chrome/browser/ash/web_applications/files_internals_ui_delegate.h"
#include "base/values.h"
+#include "chrome/browser/ash/file_manager/file_manager_pref_names.h"
#include "chrome/browser/ash/fusebox/fusebox_server.h"
+#include "chrome/browser/profiles/profile.h"
+#include "components/prefs/pref_service.h"
-ChromeFilesInternalsUIDelegate::ChromeFilesInternalsUIDelegate() = default;
+ChromeFilesInternalsUIDelegate::ChromeFilesInternalsUIDelegate(
+ content::WebUI* web_ui)
+ : web_ui_(web_ui) {}
+
+ChromeFilesInternalsUIDelegate::~ChromeFilesInternalsUIDelegate() = default;
base::Value ChromeFilesInternalsUIDelegate::GetDebugJSON() const {
base::Value::Dict dict;
@@ -20,3 +27,18 @@
return base::Value(std::move(dict));
}
+
+bool ChromeFilesInternalsUIDelegate::GetSmbfsEnableVerboseLogging() const {
+ Profile* profile = Profile::FromWebUI(web_ui_);
+ return profile && profile->GetPrefs()->GetBoolean(
+ file_manager::prefs::kSmbfsEnableVerboseLogging);
+}
+
+void ChromeFilesInternalsUIDelegate::SetSmbfsEnableVerboseLogging(
+ bool enabled) {
+ Profile* profile = Profile::FromWebUI(web_ui_);
+ if (profile) {
+ profile->GetPrefs()->SetBoolean(
+ file_manager::prefs::kSmbfsEnableVerboseLogging, enabled);
+ }
+}
diff --git a/chrome/browser/ash/web_applications/files_internals_ui_delegate.h b/chrome/browser/ash/web_applications/files_internals_ui_delegate.h
index 85f38889..367edcc 100644
--- a/chrome/browser/ash/web_applications/files_internals_ui_delegate.h
+++ b/chrome/browser/ash/web_applications/files_internals_ui_delegate.h
@@ -6,18 +6,29 @@
#define CHROME_BROWSER_ASH_WEB_APPLICATIONS_FILES_INTERNALS_UI_DELEGATE_H_
#include "ash/webui/files_internals/files_internals_ui_delegate.h"
+#include "base/memory/raw_ptr.h"
+
+namespace content {
+class WebUI;
+} // namespace content
// Chrome browser FilesInternalsUIDelegate implementation.
class ChromeFilesInternalsUIDelegate : public ash::FilesInternalsUIDelegate {
public:
- ChromeFilesInternalsUIDelegate();
-
+ explicit ChromeFilesInternalsUIDelegate(content::WebUI* web_ui);
ChromeFilesInternalsUIDelegate(const ChromeFilesInternalsUIDelegate&) =
delete;
ChromeFilesInternalsUIDelegate& operator=(
const ChromeFilesInternalsUIDelegate&) = delete;
+ ~ChromeFilesInternalsUIDelegate() override;
base::Value GetDebugJSON() const override;
+
+ bool GetSmbfsEnableVerboseLogging() const override;
+ void SetSmbfsEnableVerboseLogging(bool enabled) override;
+
+ private:
+ raw_ptr<content::WebUI> web_ui_; // Owns |this|.
};
#endif // CHROME_BROWSER_ASH_WEB_APPLICATIONS_FILES_INTERNALS_UI_DELEGATE_H_
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index a17ee4a..a4f2359 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -227,6 +227,8 @@
#include "ash/webui/face_ml_app_ui/mojom/face_ml_app_ui.mojom.h"
#include "ash/webui/file_manager/file_manager_ui.h"
#include "ash/webui/file_manager/mojom/file_manager.mojom.h"
+#include "ash/webui/files_internals/files_internals.h"
+#include "ash/webui/files_internals/mojom/files_internals.mojom.h"
#include "ash/webui/firmware_update_ui/firmware_update_app_ui.h"
#include "ash/webui/firmware_update_ui/mojom/firmware_update.mojom.h"
#include "ash/webui/guest_os_installer/guest_os_installer_ui.h"
@@ -1348,6 +1350,8 @@
registry.ForWebUI<ash::ColorInternalsUI>()
.Add<color_change_listener::mojom::PageHandler>();
}
+ registry.ForWebUI<ash::FilesInternalsUI>()
+ .Add<ash::mojom::files_internals::PageHandler>();
registry.ForWebUI<ash::file_manager::FileManagerUI>()
.Add<color_change_listener::mojom::PageHandler>();
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index f8ba53d..da6e359 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -137,6 +137,7 @@
"//ash/webui/resources:face_ml_app_bundle_resources_grit",
"//ash/webui/resources:face_ml_app_resources_grit",
"//ash/webui/resources:face_ml_app_untrusted_resources_grit",
+ "//ash/webui/resources:files_internals_resources_grit",
"//ash/webui/resources:firmware_update_app_resources_grit",
"//ash/webui/resources:help_app_resources_grit",
"//ash/webui/resources:media_app_bundle_resources_grit",
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index bef2f7b..baffeeb 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -330,6 +330,7 @@
#include "chrome/browser/ash/cryptauth/client_app_metadata_provider_service.h"
#include "chrome/browser/ash/cryptauth/cryptauth_device_id_provider_impl.h"
#include "chrome/browser/ash/customization/customization_document.h"
+#include "chrome/browser/ash/file_manager/file_manager_pref_names.h"
#include "chrome/browser/ash/file_manager/file_tasks.h"
#include "chrome/browser/ash/file_system_provider/registry.h"
#include "chrome/browser/ash/first_run/first_run.h"
@@ -1518,6 +1519,7 @@
policy::RebootNotificationsScheduler::RegisterProfilePrefs(registry);
ash::KioskAppManager::RegisterProfilePrefs(registry);
file_manager::file_tasks::RegisterProfilePrefs(registry);
+ file_manager::prefs::RegisterProfilePrefs(registry);
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
#if BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 6ab3226..be076b1 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -3136,6 +3136,7 @@
"//ash/webui/diagnostics_ui",
"//ash/webui/eche_app_ui",
"//ash/webui/file_manager:file_manager_ui",
+ "//ash/webui/files_internals",
"//ash/webui/firmware_update_ui",
"//ash/webui/guest_os_installer",
"//ash/webui/help_app_ui",
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
index 1f0c418..f3ca049 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -578,7 +578,7 @@
WebUIController* NewWebUI<ash::FilesInternalsUI>(WebUI* web_ui,
const GURL& url) {
return new ash::FilesInternalsUI(
- web_ui, std::make_unique<ChromeFilesInternalsUIDelegate>());
+ web_ui, std::make_unique<ChromeFilesInternalsUIDelegate>(web_ui));
}
template <>
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
index c5eb50b..7be7aca 100644
--- a/chrome/chrome_paks.gni
+++ b/chrome/chrome_paks.gni
@@ -235,6 +235,7 @@
"$root_gen_dir/ash/webui/ash_face_ml_app_bundle_resources.pak",
"$root_gen_dir/ash/webui/ash_face_ml_app_resources.pak",
"$root_gen_dir/ash/webui/ash_face_ml_app_untrusted_resources.pak",
+ "$root_gen_dir/ash/webui/ash_files_internals_resources.pak",
"$root_gen_dir/ash/webui/ash_firmware_update_app_resources.pak",
"$root_gen_dir/ash/webui/ash_guest_os_installer_resources.pak",
"$root_gen_dir/ash/webui/ash_help_app_resources.pak",
@@ -307,6 +308,7 @@
"//ash/webui/resources:face_ml_app_resources",
"//ash/webui/resources:face_ml_app_resources",
"//ash/webui/resources:face_ml_app_untrusted_resources",
+ "//ash/webui/resources:files_internals_resources",
"//ash/webui/resources:firmware_update_app_resources",
"//ash/webui/resources:help_app_bundle_resources",
"//ash/webui/resources:help_app_kids_magazine_bundle_resources",