customization: Add specific case for "Middle Button" in button strings
Bug: b/241965717 Change-Id: Ied81ff5a9f79a261277ae2d033df18904db9dce2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4981230 Reviewed-by: Danny Wang <wangdanny@google.com> Commit-Queue: David Padlipsky <dpad@google.com> Cr-Commit-Position: refs/heads/main@{#1215889}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
2970db5ceb
commit
1850fa325b
@ -7304,6 +7304,13 @@ To shut down the device, press and hold the power button on the device again.
|
||||
<message name="IDS_ASH_DEVICE_SETTINGS_LEARN_MORE_BUTTON" desc="Button shown for device settings notifications which opens an article with helpful information related to the notification.">
|
||||
Learn more
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_CUSTOMIZATION_MIDDLE_BUTTON_DEFAULT_NAME" desc="The name of the middle mouse button on a mouse">
|
||||
Middle Button
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_CUSTOMIZATION_OTHER_BUTTON_DEFAULT_NAME" desc="The default name to give additional buttons on a mouse or graphics tablet">
|
||||
Other Button <ph name="BUTTON_NUMBER">$1<ex>1</ex></ph>
|
||||
</message>
|
||||
|
||||
|
||||
<!-- Compat Mode Resize States-->
|
||||
<message name="IDS_ARC_COMPAT_MODE_RESIZE_TOGGLE_MENU_PHONE" desc="Item in a list of possible sizes for the app. Makes the app in a portrait, phone size.">
|
||||
|
@ -0,0 +1 @@
|
||||
0ae1c13a8895bf71f94f77b988a3c14ef4b98ba6
|
@ -0,0 +1 @@
|
||||
0ae1c13a8895bf71f94f77b988a3c14ef4b98ba6
|
@ -17,6 +17,7 @@
|
||||
#include "ash/public/mojom/input_device_settings.mojom.h"
|
||||
#include "ash/session/session_controller_impl.h"
|
||||
#include "ash/shell.h"
|
||||
#include "ash/strings/grit/ash_strings.h"
|
||||
#include "ash/system/input_device_settings/input_device_duplicate_id_finder.h"
|
||||
#include "ash/system/input_device_settings/input_device_key_alias_manager.h"
|
||||
#include "ash/system/input_device_settings/input_device_notifier.h"
|
||||
@ -35,6 +36,7 @@
|
||||
#include "base/functional/callback_forward.h"
|
||||
#include "base/metrics/histogram_functions.h"
|
||||
#include "base/strings/strcat.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/strings/to_string.h"
|
||||
#include "base/task/sequenced_task_runner.h"
|
||||
#include "base/values.h"
|
||||
@ -45,6 +47,7 @@
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "components/user_manager/known_user.h"
|
||||
#include "mojo/public/cpp/bindings/struct_ptr.h"
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
#include "ui/base/ui_base_features.h"
|
||||
#include "ui/events/ash/keyboard_capability.h"
|
||||
#include "ui/events/devices/input_device.h"
|
||||
@ -229,11 +232,34 @@ bool IsGraphicsTabletPenButton(const mojom::Button& button) {
|
||||
void AddButtonToButtonRemappingList(
|
||||
const mojom::Button& button,
|
||||
std::vector<mojom::ButtonRemappingPtr>& button_remappings) {
|
||||
// TODO(b/286930911): Translate "Button" string to other languages.
|
||||
std::string button_name;
|
||||
// If its a middle click, give it the default middle button name.
|
||||
if (button.is_customizable_button() &&
|
||||
button.get_customizable_button() == mojom::CustomizableButton::kMiddle) {
|
||||
button_name = l10n_util::GetStringUTF8(
|
||||
IDS_SETTINGS_CUSTOMIZATION_MIDDLE_BUTTON_DEFAULT_NAME);
|
||||
} else {
|
||||
// Otherwise, give it the default button name indexed at the number of
|
||||
// non-middle click buttons in `button_remappings` + 1.
|
||||
auto iter =
|
||||
base::ranges::find(button_remappings,
|
||||
*mojom::Button::NewCustomizableButton(
|
||||
mojom::CustomizableButton::kMiddle),
|
||||
[](const mojom::ButtonRemappingPtr& remapping) {
|
||||
return *remapping->button;
|
||||
});
|
||||
|
||||
int button_number = button_remappings.size() + 1;
|
||||
if (iter != button_remappings.end()) {
|
||||
--button_number;
|
||||
}
|
||||
button_name = l10n_util::GetStringFUTF8(
|
||||
IDS_SETTINGS_CUSTOMIZATION_OTHER_BUTTON_DEFAULT_NAME,
|
||||
base::NumberToString16(button_number));
|
||||
}
|
||||
|
||||
button_remappings.push_back(mojom::ButtonRemapping::New(
|
||||
/*name=*/base::StrCat(
|
||||
{"Button ", base::ToString(button_remappings.size() + 1)}),
|
||||
button.Clone(), /*remapping_action=*/nullptr));
|
||||
std::move(button_name), button.Clone(), /*remapping_action=*/nullptr));
|
||||
}
|
||||
|
||||
// suppress_meta_fkey_rewrites must never be non-default for internal
|
||||
|
@ -1223,18 +1223,44 @@ TEST_F(InputDeviceSettingsControllerTest, RestoreDefaultKeyboardRemappings) {
|
||||
TEST_F(InputDeviceSettingsControllerTest, MouseButtonPressed) {
|
||||
ui::DeviceDataManagerTestApi().SetMouseDevices({kSampleMouseUsb});
|
||||
|
||||
mojom::ButtonPtr button =
|
||||
mojom::Button::NewCustomizableButton(mojom::CustomizableButton::kMiddle);
|
||||
controller_->OnMouseButtonPressed(kSampleMouseUsb.id, *button);
|
||||
controller_->OnMouseButtonPressed(kSampleMouseUsb.id,
|
||||
*mojom::Button::NewCustomizableButton(
|
||||
mojom::CustomizableButton::kMiddle));
|
||||
EXPECT_EQ(1u, observer_->num_mouse_settings_updated());
|
||||
EXPECT_EQ(1u, observer_->num_mouse_buttons_pressed());
|
||||
|
||||
controller_->OnMouseButtonPressed(
|
||||
kSampleMouseUsb.id,
|
||||
*mojom::Button::NewCustomizableButton(mojom::CustomizableButton::kSide));
|
||||
EXPECT_EQ(2u, observer_->num_mouse_settings_updated());
|
||||
EXPECT_EQ(2u, observer_->num_mouse_buttons_pressed());
|
||||
|
||||
controller_->OnMouseButtonPressed(
|
||||
kSampleMouseUsb.id,
|
||||
*mojom::Button::NewCustomizableButton(mojom::CustomizableButton::kExtra));
|
||||
EXPECT_EQ(3u, observer_->num_mouse_settings_updated());
|
||||
EXPECT_EQ(3u, observer_->num_mouse_buttons_pressed());
|
||||
|
||||
auto* settings = controller_->GetMouseSettings(kSampleMouseUsb.id);
|
||||
ASSERT_TRUE(settings);
|
||||
ASSERT_EQ(1u, settings->button_remappings.size());
|
||||
EXPECT_EQ(*button, *settings->button_remappings[0]->button);
|
||||
EXPECT_EQ("Button 1", settings->button_remappings[0]->name);
|
||||
ASSERT_EQ(3u, settings->button_remappings.size());
|
||||
EXPECT_EQ(
|
||||
*mojom::Button::NewCustomizableButton(mojom::CustomizableButton::kMiddle),
|
||||
*settings->button_remappings[0]->button);
|
||||
EXPECT_EQ("Middle Button", settings->button_remappings[0]->name);
|
||||
EXPECT_EQ(nullptr, settings->button_remappings[0]->remapping_action.get());
|
||||
|
||||
EXPECT_EQ(
|
||||
*mojom::Button::NewCustomizableButton(mojom::CustomizableButton::kSide),
|
||||
*settings->button_remappings[1]->button);
|
||||
EXPECT_EQ("Other Button 1", settings->button_remappings[1]->name);
|
||||
EXPECT_EQ(nullptr, settings->button_remappings[1]->remapping_action.get());
|
||||
|
||||
EXPECT_EQ(
|
||||
*mojom::Button::NewCustomizableButton(mojom::CustomizableButton::kExtra),
|
||||
*settings->button_remappings[2]->button);
|
||||
EXPECT_EQ("Other Button 2", settings->button_remappings[2]->name);
|
||||
EXPECT_EQ(nullptr, settings->button_remappings[2]->remapping_action.get());
|
||||
}
|
||||
|
||||
TEST_F(InputDeviceSettingsControllerTest, GraphicsTabletButtonPressed) {
|
||||
@ -1257,13 +1283,13 @@ TEST_F(InputDeviceSettingsControllerTest, GraphicsTabletButtonPressed) {
|
||||
ASSERT_TRUE(settings);
|
||||
ASSERT_EQ(1u, settings->pen_button_remappings.size());
|
||||
EXPECT_EQ(*pen_button, *settings->pen_button_remappings[0]->button);
|
||||
EXPECT_EQ("Button 1", settings->pen_button_remappings[0]->name);
|
||||
EXPECT_EQ("Other Button 1", settings->pen_button_remappings[0]->name);
|
||||
EXPECT_EQ(nullptr,
|
||||
settings->pen_button_remappings[0]->remapping_action.get());
|
||||
|
||||
ASSERT_EQ(1u, settings->tablet_button_remappings.size());
|
||||
EXPECT_EQ(*tablet_button, *settings->tablet_button_remappings[0]->button);
|
||||
EXPECT_EQ("Button 1", settings->tablet_button_remappings[0]->name);
|
||||
EXPECT_EQ("Other Button 1", settings->tablet_button_remappings[0]->name);
|
||||
EXPECT_EQ(nullptr,
|
||||
settings->tablet_button_remappings[0]->remapping_action.get());
|
||||
}
|
||||
|
Reference in New Issue
Block a user