Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(479)

Unified Diff: ui/views/cocoa/bridged_native_widget_unittest.mm

Issue 1989143002: MacViews: Correct behavior of move and select commands when selection direction changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_commands
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/views/cocoa/bridged_native_widget_unittest.mm
diff --git a/ui/views/cocoa/bridged_native_widget_unittest.mm b/ui/views/cocoa/bridged_native_widget_unittest.mm
index 1faee145fec4433b886cf07b9ce726cf1dc50e9d..fd014c3328a023c5f49dad80393434a93d9a21ec 100644
--- a/ui/views/cocoa/bridged_native_widget_unittest.mm
+++ b/ui/views/cocoa/bridged_native_widget_unittest.mm
@@ -261,11 +261,11 @@ class BridgedNativeWidgetTest : public BridgedNativeWidgetTestBase {
// Test editing commands in |selectors| against the expectations set by
// |dummy_text_view_|. This is done by selecting every substring within a set
- // of test strings (both RTL and non-RTL) and performing every selector on
- // both the NSTextView and the BridgedContentView hosting a focused
- // views::TextField to ensure the resulting text and selection ranges match.
- // |selectors| is an NSArray of NSStrings.
- void TestEditingCommands(NSArray* selectors);
+ // of test strings and performing every selector on both the NSTextView and
+ // the BridgedContentView hosting a focused views::TextField to ensure the
+ // resulting text and selection ranges match. |selectors| is an NSArray of
+ // NSStrings. If |test_rtl| is false, no RTL test string is used for testing.
+ void TestEditingCommands(NSArray* selectors, bool test_rtl);
std::unique_ptr<views::View> view_;
@@ -453,12 +453,15 @@ void BridgedNativeWidgetTest::TestDeleteEnd(SEL sel) {
GetActualSelectionRange());
}
-void BridgedNativeWidgetTest::TestEditingCommands(NSArray* selectors) {
- const base::string16 test_strings[] = {
+void BridgedNativeWidgetTest::TestEditingCommands(NSArray* selectors,
+ bool test_rtl) {
+ std::vector<base::string16> test_strings = {
base::WideToUTF16(L"ab c"),
- base::WideToUTF16(L"\x0634\x0632 \x064A") // RTL string.
};
+ if (test_rtl)
+ test_strings.push_back(base::WideToUTF16(L"\x0634\x0632 \x064A"));
+
for (const base::string16& test_string : test_strings) {
for (NSString* selector_string in selectors) {
SEL sel = NSSelectorFromString(selector_string);
@@ -966,14 +969,11 @@ TEST_F(BridgedNativeWidgetTest, TextInput_MoveEditingCommands) {
@"moveToLeftEndOfLine:",
@"moveToRightEndOfLine:"
];
- TestEditingCommands(selectors);
+ TestEditingCommands(selectors, true);
}
-// Todo(karandeepb): Enable this test once the behavior of all move and select
-// commands are fixed.
// Test move and select commands against expectations set by |dummy_text_view_|.
-TEST_F(BridgedNativeWidgetTest,
- TextInput_MoveAndSelectEditingCommands_DISABLED) {
+TEST_F(BridgedNativeWidgetTest, TextInput_MoveAndSelectEditingCommands_1) {
NSArray* selectors = @[
@"moveBackwardAndModifySelection:",
@"moveForwardAndModifySelection:",
@@ -991,14 +991,23 @@ TEST_F(BridgedNativeWidgetTest,
@"pageUpAndModifySelection:",
@"moveParagraphForwardAndModifySelection:",
@"moveParagraphBackwardAndModifySelection:",
- @"moveRightAndModifySelection:",
- @"moveLeftAndModifySelection:",
- @"moveWordRightAndModifySelection:",
- @"moveWordLeftAndModifySelection:",
+ ];
+ TestEditingCommands(selectors, true);
+}
+
+// Test move and select commands against expectations set by |dummy_text_view_|.
+TEST_F(BridgedNativeWidgetTest, TextInput_MoveAndSelectEditingCommands_2) {
+ NSArray* selectors = @[
+ @"moveRightAndModifySelection:", @"moveLeftAndModifySelection:",
+ @"moveWordRightAndModifySelection:", @"moveWordLeftAndModifySelection:",
@"moveToLeftEndOfLineAndModifySelection:",
@"moveToRightEndOfLineAndModifySelection:"
];
- TestEditingCommands(selectors);
+
+ // The behavior of move and select commands with visual direction on
+ // NSTextView is a bit buggy for RTL text and is not consistent with LTR
+ // behavior Hence don't test RTL string.
tapted 2016/05/20 06:47:36 This is probably a bug.... - can you file a new on
karandeepb 2016/05/24 07:47:15 I think the bug is with the NSTextView itself. For
+ TestEditingCommands(selectors, false);
}
// Test delete commands against expectations set by |dummy_text_view_|.
@@ -1008,7 +1017,7 @@ TEST_F(BridgedNativeWidgetTest, TextInput_DeleteCommands) {
@"deleteWordBackward:", @"deleteToBeginningOfLine:", @"deleteToEndOfLine:",
@"deleteToBeginningOfParagraph:", @"deleteToEndOfParagraph:"
];
- TestEditingCommands(selectors);
+ TestEditingCommands(selectors, true);
}
// Test firstRectForCharacterRange:actualRange for cases where query range is

Powered by Google App Engine
This is Rietveld 408576698