Commit 631ac11a authored by Allen Webb's avatar Allen Webb Committed by Commit Bot

Add a DBus method to check if USBGuard should be enabled on CrOS.

This feature flag gates the use of USBGuard on Chrome OS for blocking
new USB devices from being used by the linux kernel at the lockscreen.

CQ-DEPEND=CL:1154326
BUG=None
TEST=verify that dbus-send works for CrOS.
Signed-off-by: default avatarAllen Webb <allenwebb@google.com>
Change-Id: Iba101f04b1882c3dbad539bf418457129d2cdf17
Reviewed-on: https://chromium-review.googlesource.com/1161011Reviewed-by: default avatarMattias Nissler <mnissler@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580948}
parent e87b1789
...@@ -4,10 +4,12 @@ ...@@ -4,10 +4,12 @@
#include "chrome/browser/chromeos/dbus/finch_features_service_provider_delegate.h" #include "chrome/browser/chromeos/dbus/finch_features_service_provider_delegate.h"
#include "base/feature_list.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/crostini/crostini_util.h" #include "chrome/browser/chromeos/crostini/crostini_util.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/chrome_features.h"
namespace chromeos { namespace chromeos {
...@@ -28,4 +30,8 @@ bool FinchFeaturesServiceProviderDelegate::IsCrostiniEnabled( ...@@ -28,4 +30,8 @@ bool FinchFeaturesServiceProviderDelegate::IsCrostiniEnabled(
return IsCrostiniAllowedForProfile(profile); return IsCrostiniAllowedForProfile(profile);
} }
bool FinchFeaturesServiceProviderDelegate::IsUsbguardEnabled() {
return base::FeatureList::IsEnabled(features::kUsbguard);
}
} // namespace chromeos } // namespace chromeos
...@@ -19,6 +19,7 @@ class FinchFeaturesServiceProviderDelegate ...@@ -19,6 +19,7 @@ class FinchFeaturesServiceProviderDelegate
// ChromeServiceProvider::Delegate: // ChromeServiceProvider::Delegate:
bool IsCrostiniEnabled(const std::string& user_id_hash) override; bool IsCrostiniEnabled(const std::string& user_id_hash) override;
bool IsUsbguardEnabled() override;
private: private:
DISALLOW_COPY_AND_ASSIGN(FinchFeaturesServiceProviderDelegate); DISALLOW_COPY_AND_ASSIGN(FinchFeaturesServiceProviderDelegate);
......
...@@ -649,6 +649,9 @@ const base::Feature kCrOSEnableUSMUserService{"CrOSEnableUSMUserService", ...@@ -649,6 +649,9 @@ const base::Feature kCrOSEnableUSMUserService{"CrOSEnableUSMUserService",
// Enables or disables initialization & use of the Chrome OS ML Service. // Enables or disables initialization & use of the Chrome OS ML Service.
const base::Feature kMachineLearningService{"MachineLearningService", const base::Feature kMachineLearningService{"MachineLearningService",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Enable USBGuard at the lockscreen on Chrome OS.
const base::Feature kUsbguard{"USBGuard", base::FEATURE_DISABLED_BY_DEFAULT};
#endif // defined(OS_CHROMEOS) #endif // defined(OS_CHROMEOS)
#if !defined(OS_ANDROID) #if !defined(OS_ANDROID)
......
...@@ -351,6 +351,8 @@ extern const base::Feature kTPMFirmwareUpdate; ...@@ -351,6 +351,8 @@ extern const base::Feature kTPMFirmwareUpdate;
extern const base::Feature kCrOSEnableUSMUserService; extern const base::Feature kCrOSEnableUSMUserService;
extern const base::Feature kMachineLearningService; extern const base::Feature kMachineLearningService;
extern const base::Feature kUsbguard;
#endif // defined(OS_CHROMEOS) #endif // defined(OS_CHROMEOS)
#if !defined(OS_ANDROID) #if !defined(OS_ANDROID)
......
...@@ -28,6 +28,13 @@ void ChromeFeaturesServiceProvider::Start( ...@@ -28,6 +28,13 @@ void ChromeFeaturesServiceProvider::Start(
weak_ptr_factory_.GetWeakPtr()), weak_ptr_factory_.GetWeakPtr()),
base::BindRepeating(&ChromeFeaturesServiceProvider::OnExported, base::BindRepeating(&ChromeFeaturesServiceProvider::OnExported,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
exported_object->ExportMethod(
kChromeFeaturesServiceInterface,
kChromeFeaturesServiceIsUsbguardEnabledMethod,
base::BindRepeating(&ChromeFeaturesServiceProvider::IsUsbguardEnabled,
weak_ptr_factory_.GetWeakPtr()),
base::BindRepeating(&ChromeFeaturesServiceProvider::OnExported,
weak_ptr_factory_.GetWeakPtr()));
} }
void ChromeFeaturesServiceProvider::OnExported( void ChromeFeaturesServiceProvider::OnExported(
...@@ -59,4 +66,14 @@ void ChromeFeaturesServiceProvider::IsCrostiniEnabled( ...@@ -59,4 +66,14 @@ void ChromeFeaturesServiceProvider::IsCrostiniEnabled(
response_sender.Run(std::move(response)); response_sender.Run(std::move(response));
} }
void ChromeFeaturesServiceProvider::IsUsbguardEnabled(
dbus::MethodCall* method_call,
dbus::ExportedObject::ResponseSender response_sender) {
std::unique_ptr<dbus::Response> response =
dbus::Response::FromMethodCall(method_call);
dbus::MessageWriter writer(response.get());
writer.AppendBool(delegate_->IsUsbguardEnabled());
response_sender.Run(std::move(response));
}
} // namespace chromeos } // namespace chromeos
...@@ -41,6 +41,7 @@ class CHROMEOS_EXPORT ChromeFeaturesServiceProvider ...@@ -41,6 +41,7 @@ class CHROMEOS_EXPORT ChromeFeaturesServiceProvider
virtual ~Delegate() {} virtual ~Delegate() {}
virtual bool IsCrostiniEnabled(const std::string& user_id_hash) = 0; virtual bool IsCrostiniEnabled(const std::string& user_id_hash) = 0;
virtual bool IsUsbguardEnabled() = 0;
private: private:
DISALLOW_COPY_AND_ASSIGN(Delegate); DISALLOW_COPY_AND_ASSIGN(Delegate);
...@@ -62,6 +63,8 @@ class CHROMEOS_EXPORT ChromeFeaturesServiceProvider ...@@ -62,6 +63,8 @@ class CHROMEOS_EXPORT ChromeFeaturesServiceProvider
// Called on UI thread in response to a D-Bus request. // Called on UI thread in response to a D-Bus request.
void IsCrostiniEnabled(dbus::MethodCall* method_call, void IsCrostiniEnabled(dbus::MethodCall* method_call,
dbus::ExportedObject::ResponseSender response_sender); dbus::ExportedObject::ResponseSender response_sender);
void IsUsbguardEnabled(dbus::MethodCall* method_call,
dbus::ExportedObject::ResponseSender response_sender);
std::unique_ptr<Delegate> delegate_; std::unique_ptr<Delegate> delegate_;
// Keep this last so that all weak pointers will be invalidated at the // Keep this last so that all weak pointers will be invalidated at the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment